了解[TCP ACKed unseen segment] [TCP Previous segment not captured]

时间:2013-08-20 01:19:11

标签: tcp wireshark tshark

我们正在对我们的服务器进行一些负载测试,并且我使用tshark将一些数据捕获到pcap文件,然后使用wireshark GUI通过分析来查看显示的错误或警告 - >专家信息我的pcap加载..

我看到了各种我不确定或不完全理解的事情..

根据警告,我有: 779 TCP警告:未捕获的已确认段(捕获开始时常见) 446 TCP:未捕获上一个段(捕获开始时常见)

一个例子是: 40292 0.000 xxx xxx TCP 90 [TCP ACKed unseen segment] [TCP Previous segment not captured] 11210> 37586 [PSH,ACK] Seq = 3812 Ack = 28611 Win = 768 Len = 24 TSval = 199317872 TSecr = 4506547

我们还通过一个很好的命令来运行pcap文件,该命令可以创建数据的命令行列

命令

tshark -i 1 -w file.pcap -c 500000

基本上只是在tcp.analysis.lost_segment列中看到了一些内容但不是很多.. \

任何人都可以启发可能发生的事情? tshark无法跟上写入数据,还有其他一些问题?误报?

3 个答案:

答案 0 :(得分:4)

这很可能是误报。与警告消息一样,捕获在tcp会话中间开始是很常见的。在这些情况下,它没有这些信息。如果你真的错过了ack,那么现在是时候开始向主机上游寻找消失的地方了。 tshark可能无法跟上数据,因此它正在放弃一些指标。在捕获结束时,它将告诉您“内核丢弃数据包”是否有多少。默认情况下,tshark禁用dns查找,而tcpdump则不会。如果使用tcpdump,则需要传入“-n”开关。如果您遇到磁盘IO问题,那么您可以执行类似写入内存/ dev / shm的操作。但要小心,因为如果你的捕获量变得非常大,那么你可以让你的机器开始交换。

我敢打赌,你有一些非常长的运行tcp会话,当你开始捕获时,由于这个原因,你只是遗漏了tcp会话的某些部分。话虽如此,我所看到的一些事情会导致重复/缺失。

  1. 开关 - (非常不可能,但有时他们会生病)
  2. 路由器 - 比交换机更可能,但不是很多
  3. 防火墙 - 比路由器更可能。这里要寻找的是资源耗尽(许可证,cpu等)
  4. 客户端过滤软件 - 防病毒,恶意软件检测等。

答案 1 :(得分:2)

" TCP ACKed Unseen"的另一个原因是捕获中可能丢失的数据包数。如果我在繁忙的界面上为所有流量运行未经过滤的捕获,我有时会看到大量的“掉线”。停止tshark后的数据包。

在我看到的最后一次捕获时,我捕获了2893204个数据包,但是一旦我按下Ctrl-C,我就收到了87581个丢包消息。这是3%的损失,所以当wireshark打开捕获时,它可能会丢失数据包并报告"看不见"数据包。

正如我所提到的,我捕获了一个没有捕获过滤器的非常繁忙的接口,所以tshark必须对所有数据包进行排序,当我使用捕获过滤器去除一些噪声时,我不再收到错误。

答案 2 :(得分:0)

Acked Unseen sample

大家好!只是我在捕获中发现的一些观察结果:

在许多情况下,数据包捕获报告客户端的“未捕获的确认段”,该客户端PC已发送数据包的情况发出警报,服务器确认收到该数据包,但数据包在客户端上进行的捕获不包括客户端发送的数据包

最初,我认为这表明PC无法记录捕获它发送的数据包,因为“例如,正在运行Wireshark的机器很慢”(https://osqa-ask.wireshark.org/questions/25593/tcp-previous-segment-not-captured-is-that-a-connectivity-issue
然而,我注意到每当我看到“未被捕获的确认段”警报时,我可以看到客户端PC发送的“无效”数据包的记录

  • 在上面的捕获示例中,帧67795发送10384的ACK

  • 即使wireshark报告了Bogus IP长度(0),帧67795也是如此 据报道长度为13194

  • 帧67800发送23524的ACK
  • 10384 + 13194 = 23578
  • 23578 - 23524 = 54
  • 54实际上是长度的 以太网/ IP / TCP报头(14个用于Ethernt,20个用于IP,20个用于TCP)
  • 因此实际上,帧67796确实代表了大的TCP数据包(13194 操作系统试图穿上哪个字节)
    • 网卡驱动程序会将其分段为较小的1500字节,以便通过网络传输
    • 但在我的电脑上运行的Wireshark无法理解它是一个有效的数据包并解析它。我相信Wireshark在2012 Windows上运行 服务器正确读取这些捕获
  • 毕竟,这些“Bogus IP 长度“和”未被捕获的确认段“警报实际上是 在我的情况下误报