Wireshark异常解析
[Packet size limited during capture]
- 被标记的包信息没有完整的获取,一般是由于抓包方式引起。比如全长有171字节,但只获取到前96个字节。
- 某些系统中,tcpdump默认只抓每个帧的前96字节,一般可以用 -s 参数指定想要抓的字节数。
[TCP Previous segment not captured]
- 未捕获TCP协议之前的分段,抓取的数据段缺失。一般是由于丢包或者抓包工具漏掉导致。
- 使用TCP协议传输过程中,同一台主机发出的数据包应为连续的,即后一个包的Seq等于前一个包的Seq加Len,而对端回应的Ack等于发送方刚发的Seq加Len,三次握手和四次挥手例外。
- 如果后一个包的Seq大于前一个包的Seq加Len,就可以清楚中间缺失了一段数据。
- 大多数情况都是由乱序引起的,数据包在网络包中传输的距离长、流量大、网络拥塞时,乱序的几率会很大,但一般情况下都可以在到达目的地后进行重组。
TCP乱序重组
假如发送端发了2个包,到达接收端后发生了乱序,第2个包先到,第1个包后到,此时因为TCP具有缓冲区和序列号,所以TCP会将先到的2缓存下来,当1到达时,再根据序列号进行拼接。
缓冲区也有满的时候,这时接收端会直接丢弃报文,不做任何其他处理,发送方的定时器发现迟迟收不到接收方的回复的确认包时,就会触发TCP的重传
机制,重传该报文。
[TCP ACKed unseen segment]
- 丢包或乱序时会出现。
[TCP Out-of-Order]
- 说明数据包乱序,当Wireshark发现后一个包的Seq小于前一个包的Seq加Len,则会被认为是乱序。
[TCP Dup ACK]
- 出现重复的Ack。当乱序或者丢包发生时,接受方收到一些Seq比期望值大的包。每收到一个这种包就会回应一次期望的Seq值,依次提醒发送方,因此会产生重复的Ack。
[TCP Retransmission]
- 数据包进行重传,如果一个包丢失,又没有后续包可以在接收方触发“Dup ACK”,就不会快速重传。
- 这种情况发送方只能等到超时重传。
[TCP Fast Retransmission]
- 数据包快速重传,当发送方收到3个及3个以上的“TCP Dup ACK”时,就意识到之前发的包可能丢了,于是快速重传。
[TCP zerowindow]
- 接受窗口为0,缓存区已满,不再接受数据。
- “win=”表示这个包的发送方还有多少缓存区可以接受数据。
- “Win=0”表示缓存区已满,告知对方自己不再接受数据。
[TCP window Full]
- 发送窗口已满。
- 包的发送方已经把对方所声明的接受窗口耗尽,暂时无法再发送数据。
Time-to-live exceeded (Fragment reassembly time exceeded)
- 超出TTL生存时间,即超出碎片重组时间。
- 表示这个包的发送方之前收到了一些分片,但是由于某些原因迟迟无法组装起来。
- 比如由于上海发往北京的一些包被分片传输,且有一部分在链路上丢失。因此北京无法组装起来,只能使用这个ICMP报错告知对方。
借鉴于:https://help.aliyun.com/document_detail/112990.html