首先先复习下TCP三次握手和四次护手的基本工作过程原理,如下图:
通过wireshark抓包如下:
三次握手:
四次挥手:
中间数据传输:
会发现存在大量的TCP segment of a reassembled PDU,字面意思是要重组的协议数据单元(PDU:Protocol Data Unit)的TCP段,这是TCP层收到上层大块报文后分解成段后发出去。
每个数据包的Protocol Length都是2974 Byte,这是因为以太网帧的封包格式为:Frame = Ethernet Header + IP Header + TCP Header + TCP Segment Data。即:
1、Ethernet Header = 14 Byte = Dst Physical Address(6 Byte)+ Src Physical Address(6 Byte)+ Type(2 Byte),以太网帧头以下称之为数据帧。
2、IP Header = 20 Byte(without options field),数据在IP层称为Datagram,分片称为Fragment。
3、TCP Header = 20 Byte(without options field),数据在TCP层称为Stream,分段称为Segment(UDP中称为Message)。
4、TCP Segment Data = 2920 Byte(从下图可见)。
所以,每个数据包的Protocol Length = 14 Byte + 20 Byte + 20 Byte + 2920 Byte = 2974 Byte。
谈到这边我们再来复习下TCP状态机:
TCP协议的状态机 和 “TCP建链接”、“TCP断链接”、“传数据”
参考链接:
https://www.cnblogs.com/163yun/p/9552368.html
https://time.geekbang.org/column/article/8975