TCP分段

Wireshark理解TCP乱序重组和HTTP解析渲染

TCP数据传输过程

TCP乱序重组原理

HTTP解析渲染 

TCP乱序重组

TCP具有乱序重组的功能。
(1)TCP具有缓冲区
(2)TCP报文具有序列号
所以,对于你说的问题,一种常见的处理方式是:TCP会先将报文段3缓存下来,当报文段2到达时,再根据序列号进行拼接。
2 当然缓冲区也有满的时候,这时接收端会直接丢弃报文,不做任何其他处理;
发送方的定时器发现迟迟收不到接收方丢弃报文的确认号(ack number),就会重传该报文。这就是TCP的超时重传功能

Sequence Number是包的序号,用来解决网络包乱序(reordering)问题。
Acknowledgement Number就是ACK——用于确认收到,用来解决不丢包的问题。
MTU: Maxitum Transmission Unit 最大传输单元
MSS: Maxitum Segment Size 最大分段大小

对于建链接的3次握手,主要是要初始化Sequence Number 的初始值。通信的双方要互相通知对方自己的初始化的Sequence Number(缩写为ISN:Inital Sequence Number)——所以叫SYN
全称Synchronize Sequence Numbers。也就上图中的 x 和 y。
这个号要作为以后的数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输的问题而乱序
(TCP会用这个序号来拼接数据)。

网络文件时流量巨大,出现很多
TCP segment of a reassembled PDU
其实主机响应一个查询或者命令时如果要回应很多数据(信息)而这些数据超出了TCP的最大MSS时,
主机会通过发送多个数据包来传送 这些数据(注意:这些包并未被分片)
。对wireshark来说这些对相应同一个查询命令的数据包被标记了“TCP segment of a reassembled PDU”

问题,wireshark如何识别多个数据包是对同一个查询数据包的响应?
wireshark是根据sequence number来识别,这些数据包ACK number是相同的,
当然number的数值与查询数据包中的next sequence number也是一样的。
对于TCP协议而言就不一样了,这个协议是面向连接的协议,
对于TCP协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生。所以有些TCP应用对分片有要求---不能分片(DF)。

这个还是取决于对TCP协议的理解,参照TCP序列号和确认号详解,讲解很清晰

扫描二维码关注公众号,回复: 3208370 查看本文章

添加一个链接:https://www.cnblogs.com/kxdblog/p/4218028.html

猜你喜欢

转载自blog.csdn.net/salmonwilliam/article/details/82254235
tcp