一 TCP协议介绍
TCP在数据传输前,先要进行链接测试(三次握手),如果测试通过才会发送真实数据。
TCP将若干字节构成一个分组,叫报文段
TCP报文封装在IP数据报中; 面向连接,慢 稳定;
1 TCP报文的首部格式
源端口号:为发送方进程对应的端口号
目标端口号:对应接收端的进程接收端收到数据段后,根据这个端口号
确定把数据送给哪个应用程序的进程
序号:当TCP从进程接收数据字节时,就把它们存储在发送缓存中,并
对每一个字节进行编号
确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号
首部长度:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选 项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据 起始处距离 TCP 报文段的起始处有多远。
2 tcp特性
二端口号
1 端口号范围:
0到65535 前1024是知名端口
2 端口号作用:
区别应用程序(一个端口号只能被一个程序使用) 区别协议(因为协议也是应用程序调用的,端口只能区别应用层协议)
7 层协议(应用层协议)对应的程序
ftp 文件传输 vsftpd FileZilla
http 超文本传输 nginx apache lls tomcat
dhcp 自动分配ip dhcp
ssh openssh
安全外壳协议”(Secure Shell),是一种加密的网络传输协议,提供了一个在网络中安全地远程连接到其他计算机和设备的方法
dns 域名解析 bind
比如:http是超文本传输协议,apache/nginx 软件调用http协议
3,客户端端口号服务端端口号
客户端端口号:随机
服务端端口号:一般固定
4,区分应用程序
自己系统通过pid号区分应用程序 (每打开一个应用程序,会随机产生一个pid号 )
两台电脑通过 端口区分应用程序
5,7层协议理解
7层协议就是规定了如何打包数据,然后将打包好的数据传到4层,要通过4层发出去,就像你寄快递,你要先打包,再选一家快递公司,然后按照早就选好的快递公司发出去。
三 控制位:
描述两台电脑目前处于何种状态
URG :表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段只有当 URG=1时才有效
ACK(确认位):表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字 段 才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报 文段称为确认报文段
PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后 续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应 用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停 留在TCP接收缓冲区中
RST(重置位):如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主 机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主 机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文 段
SYN(同步位):在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一 个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连 接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有 在 前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
FIN(断开位):表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1, 即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的 TCP报文段称为结束报文段
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始 允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数 据
校验和:提供额外的可靠性紧急指针:标记紧急数据在数据字段中的位置
选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,
在数据通信之前,发送端与接受端要先建立连接,等数据发送结束后,双方再断开连接,
TCP连接的每一方都是由一个IP地址和一个端口号组成,
二TCP建立连接的过程称为三次握手
一次握手:当服务端收到请求建立连接的报文,报文号随机产生并且报文中的控制位SYN=1,代 表请求建立连接,此时客户端处于syn-sent状态
二次握手:服务端收到请求连接的报文会回复一个报文会产生随机序号y,生产一个确认号为
客户端请求报文的序号+1(x+1),然后控制位syn=1 ack=1 代表同意建立连接,此时
服务器处于syn-rcvd状态
三次握手:当客户端收到同意建立连接的报文时会回复一个确认报文会按照对方要求产生序号为 x+1再生成一个确认号值为对方报文的序号+1(y+1)最后控制位的ack=1,代表收到对 方同意,此时客户端处于estab-lished状态,
当服务器收到ack报文也处于estab-lished状态,此时双方已建立连接
为什么三次握手?
网络环境复杂,为了确保数据能够到达,2次不够,4次多余,三次正好
三TCP断开连接的四次挥手
确保双方都知道对方已经准备好关闭连接,防止数据丢失
1 客户端发送一个FIN报文,报文指定一个序列号,此时客户端处于fin-wait-1状态
2 服务端接到报文段后,返回一个带有ACK=1的报文段,确认了收到了客户端断开请求,此时客 户端会将未完成的数据发送给客户端,进入close-wait状态
3 若服务端也想断开连接,和客户端的第一次挥手一样,发给FIN报文,且指定一个序列号,此时 处于last-ack状态
4 客户端收到FIN之后,一样发送一个ACK报文作为回答,且把服务器的序列号值+1作为自己 ACK报文的序列号值,此时客户端处于time-wait
四 有限状态机
-
CLOSED 没有任何连接状态
-
LISTEN 侦听状态,等待来自远方TCP端口的连接请求 (服务开启 http(进程) 80端口在帮进程 看着 有没有人找 http )
-
SYN-SENT 在发送连接请求后,等待对方确认
-
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
-
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
-
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
-
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
-
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
-
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
-
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
-
CLOSING 双方同时尝试关闭传输连接,等待对方确认
五 UDP协议
无连接 不稳定 快(以下优点记住就行)
-
工作在传输层
-
面向连接协议
-
全双工协议:在同一时间内双向传输
-
半关闭
-
错误检查
-
将数据打包成段,排序
-
确认机制
-
数据恢复,重传
-
流量控制,滑动窗口
-
TCP UDP 面向连接 无连接 由重传机制 无重传机制 传输速度慢 传输速度快 可靠 可靠 重要或大文件 聊天软件,视频会议
udp特性
六 telent协议
远程连接
TELNET + IP地址
修改用户权限
sys
user-interface vty 0 4
user privilege level 15
七 WireShark:还没有搞清门道
1 选择网卡
选取你需要抓取的网卡,有波浪线代表有数据流量
2 模式选择
(1)混杂模式: 就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。
(2)普通模式:网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。文章来源:https://www.toymoban.com/news/detail-766607.html
TIP:混杂模式不会影响网卡正常工作,建议使用混杂模式。文章来源地址https://www.toymoban.com/news/detail-766607.html
3 过滤器的使用
到了这里,关于传输层协议: TCP 、UDP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!