Wireshark抓包 [Tcp Previous Segment Not captured][Tcp Out-Of-Order][Tcp Spurious Retransmissiion]

Wireshark抓包时,除了TCP协议的三次握手建立连接、数据收发和四次握手断开连接外,还经常能看到如下几种不太常见的报文,具体包括:

1.Tcp Previous Segment Not captured

2.Tcp Out-Of-Order

3.Tcp Dup Ack 12345#1

4.Tcp Spurious Retransmissiion

5.Tcp Retransmission

其中1、2、3会相伴出现,3、4、5会相伴出现。对应第一种情况是由于由于TCP数据被分块后,传输过程中经过不同的路径,到达目的端时乱序,出现后发而先至的情况,此时目的端会显示【Tcp Previous Segment Not captured】,并且用【Tcp Dup Ack 12345#1】对前一个包再次进行确认,先发而后至的包到达目的端时,会显示【Tcp Out-Of-Order】;对应第二种情况是由于网络不稳定,源端发送数据后,目的端进行了确认,但源端并未在规定的时间内收到确认,所以会重新发送,目的端对重新发送的报文会显示为【Tcp Spurious Retransmissiion】,并且用【Tcp Dup Ack 12345#1】确认。这两种情况出现属于正常情况,TCP的超时重传机制和乱序重排可以保证TCP的按序可靠传输。

下面以具体的抓包数据进行说明。

从98522~98527是第一种情况的完整再现,具体包括:

1)98522是建立SSL过程中服务端到客户端的Server Hello报文,具体如下图:

发送报文序列号为1,报文长度为1424,确认对端的214发送序列号

2)98523是客户端对前一个报文的确认,具体如下图:

3)98524是后发而先至的报文,具体如下图:

很显然,客户端期望确认的序号是1425,实际收到的报文开始序列号为2849。在1425~2848之间的报文还未到达

4)98525是客户端对乱序的应答,具体如下图:

由于客户端并未收到至2849的完整报文,重复对98523的报文,仅对98522报文进行确认

5)98526是先发而后至的报文,具体如下图:

本报文就是98525期待的报文,这样客户端收到至2848的所有报文。用【Tcp Out-Of-Order】显示

从15774~15840是第二种情况的完整再现。

1)15774是服务端发送的请求修改密码算法的报文,具体如下图:

报文起始序列号是3589,同时对上一个报文数据的确认

2)15775是客户端发送SSL密文,具体如下图:

本报文其实序列号是367,同时对15774进行确认(3640)

3)15816是重传报文。服务端未收到15775 的确认,所以重传15774报文,具体如下图:

可以看到跟15774报文完全一致。客户端因为已经对该包进行了确认,确认后又收到重传报文,所以显示【Tcp Spurious Retransmissiion】

4)15817针对这样一种情况,返回与15775同样的确认,具体如下图所示:

5)15823是因为未收到服务端对15775的确认而重新发送15775报文,具体如下图所示:

可以看到与15775完全一致

6)15840是服务端对客户端重传的15823报文的确认

  • 9
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
"TCP previous segment not captured"是指在网络数据包捕获过程中,某个TCP报文的前一个段未被正确捕获到。这可能是由于捕获设备或软件的性能限制或配置问题导致的。 在网络数据包分析和捕获过程中,使用抓包工具(如Wireshark)可以截获网络中的数据包,并提供对这些数据包的分析和解读。当出现"TCP previous segment not captured"的警告或提示时,意味着在捕获网络数据包时,某个TCP报文的前一个段没有被完整地捕获到。 这可能会导致在分析和重构TCP会话时出现一些困难。TCP协议是基于顺序传输的,每个TCP报文都依赖于前一个报文的正确接收和处理。如果前一个报文没有被完整捕获,可能会导致后续报文的重组和解析出现问题。 有几种原因可能导致"TCP previous segment not captured"警告的出现,包括: 1. 捕获设备或软件性能不足,无法及时处理大量的数据包。 2. 捕获设备或软件配置问题,未正确设置过滤规则或缓冲区大小。 3. 网络拥塞或高负载情况下,数据包丢失或延迟导致部分报文未能被捕获。 解决"TCP previous segment not captured"问题的方法包括: 1. 使用更高性能的捕获设备或软件,确保能够处理大量的数据包。 2. 检查捕获设备或软件的配置,确保设置正确的过滤规则和适当的缓冲区大小。 3. 在网络拥塞或高负载情况下,考虑增加带宽或优化网络配置,以减少数据包丢失和延迟。 请注意,"TCP previous segment not captured"只是一个警告或提示,可能不会对网络性能或应用程序产生实质性影响。但如果需要进行深入的网络分析和故障排查,确保准确捕获并解析所有TCP报文是很重要的。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值