【RFC793】TCP协议分析总结

1.TCP报头格式

TCP段作为IP段数据发送。IP报头携带几个信息字段,包括:源主机地址目标主机地址TCP头紧跟在IP头后面,提供特定的TCP协议信息。如下图所示:

  • TCP报文头格式:
  • TCP报文头说明:
NameLenghtFunc Description
Source Port16 bits源端口号
Destination Port16 bits目标端口号
Sequence Number32 bits会话的序列号;
该字段包含由这个主机随机选择的初始序号ISNInitial Sequence Number),发送数据的第一个字节序号为ISN+1,因为 SYN 标志会占用一个序号。
Acknowledgment Number32 bits确认序号;
确认序号就包含接收端所期望收到的下一个报文的Sequence Number为该确认序号。
Data Offset4 bits数据区域偏移量(又名:首部长度);
这指明数据从哪里开始,同时说明了TCP Header的大小。计算公式:Data Index = Data Offset * 4(Data Index单位:Bytes)
Reserved6 bits预留,必须是零。
Control Bits6 bitsFlags标记字段:
URG:首部中的紧急指针字段标志,如果是 1 表示紧急指针字段有效。
ACK:首部中的确认序号字段标志,如果是 1 表示确认序号字段有效。
PSH:该字段置一表示接收方应该尽快将这个报文段交给应用层。
RST:重新建立 TCP 连接。
SYN:用同步序号发起连接。
FIN: 中止连接。
Window16 bits窗口大小;
每一端通过提供的窗口大小来实现TCP流量控制,窗口大小为字节数。
Checksum16 bits检验和字段;
检验和覆盖了整个的 TCP 报文段:TCP 首部和 TCP 数据区域,由发送端计算和填写,并由接收端进行验证。
Urgent Pointer16 bits紧急指针字段;
只有当 URG标志置 1 时紧急指针才有效,紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
Optionsvariable选项字段;
在下面专门解释…
Paddingvariable填充字段;
TCP报头填充用于确保TCP报头以32位对齐结束,数据以32位对齐开始。填充由零组成。
  • Options选项字段说明
    当前定义的选项列表如下:
Kind (Option Code)LengthMeaning
0x00-End of option list.
0x01-No-Operation.
0x024Maximum Segment Size.

具体选项定义:

  1. End of Option List0x00
    这个Option Code(0x00)表示选项列表的末尾。
  2. No-Operation0x01
    这个Option Code(0x01)可能被用在2个Options之间,为了后面的Option能够字对齐开始。
  3. Maximum Segment Size0x02
    在这里插入图片描述
    如上图所示,Maximum Segment Size Option 长度为4个byte(包括:Kind、Length和Max Seg Size)。如果存在这个选项,它将指示发送这个报文的TCP端最大可接收报文的大小。这个字段只能在初始连接请求时发送(即,在发送SYN报文中)。如果这个选项没有被使用,那么将允许任何大小的报文通信。

2.TCP连接状态总图

一个TCP连接进程在生命周期会经历一系列的状态变化。这些状态是:LISTEN, SYN-SENT, SYN-RECEIVED,ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT,CLOSED。TCP连接状态总图如下:
在这里插入图片描述

NameFunc Description
LISTEN表示等待任何一个远程的TCP连接请求。
SYN-SENT表示已经发送了一个连接请求后,等待一个匹配连接请求。
SYN-RECEIVED表示在接收和发送连接请求后,等待一个确认连接请求ACK。
ESTABLISHED表示已经建立连接,接收到的数据可以传递给用户。这个是数据传输阶段的正常状态。
FIN-WAIT-1表示等待来自远程TCP的连接终止请求,或对先前发送的连接终止请求的确认。
FIN-WAIT-2表示等待来自远程TCP的连接终止请求。
CLOSE-WAIT表示等待本地用户的连接终止请求。
CLOSING表示等待来自远程TCP的连接终止请求ACK。
LAST-ACK表示等待之前发送到远程TCP的连接终止请求的ACK(包括对其连接终止请求的ACK)。
TIME-WAIT表示等待足够的时间以确保远程TCP接收到连接终止请求的ACK。
CLOSED表示没有在连接状态。

3. TCP Client连接状态图

TCP Client连接状态图是根据TCP Client发起连接、传输数据和断开连接这个个过程所经历的状态。如下图(此图相当于上面的总图分解):
在这里插入图片描述

4.TCP Server连接状态图

待验证更新...

5.TCP三次握手和四次握手

  • TCP三次握手(左)TCP四次握手(右)
  • TCP连接、发送数据、断开

6.Wireshark如何显示通信时的时序图

在这里插入图片描述

在这里插入图片描述

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值