【问题标题】:Need some help interpreting tcpdump output需要一些帮助来解释 tcpdump 输出
【发布时间】:2010-02-26 01:39:38
【问题描述】:

我查看了 tcpdump 手册页并认为我理解了那里提供的示例。但我得到的是我无法完全理解的东西。

原创:模拟器输出

LINE 1: 20:01:13.442111 IP 10.0.0.1.12345 > 10.0.0.2.54321: S 1234:1234(0) win 65535
LINE 2: 20:01:13.471705 IP 10.0.0.2.54321 > 10.0.0.1.12345: S 4321:4321(0) ack 1235 win 65535
LINE 3: 20:01:13.497389 IP 10.0.0.1.14640 > 10.0.0.2.12756: . ack 4322 win 65535
LINE 4: 20:01:13.497422 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 1235:2682(1447) win 65535
LINE 5: 20:01:14.023273 IP 10.0.0.2.12756 > 10.0.0.1.14640: . ack 5768 win 65535

这是我的理解:

LINE 1: 1 sends 2 0 bytes starting with SEQ number 1234
LINE 2: 2 sends 1 0 bytes starting with SEQ number 4321 and an ACK = (1's SEQ + 1) i.e. 1235
LINE 3: 1 sends 2 0 bytes with an ACK = (2's SEQ + 1) i.e. 4322
LINE 4: 1 sends 2 1447 bytes starting with SEQ number 1235 until 2682 (1447 bytes in total)
LINE 5: 2 sends 1 0 bytes with an ACK = 5768? What is this number? Isn't it supposed to be 2683?

也许我遗漏了一些太明显的东西。有人能指出来吗?

编辑 1:模拟器输出(grepped 一个连接信息)

20:01:13.442111 IP 10.0.0.1.12345 > 10.0.0.2.54321: S 1234:1234(0) win 65535
20:01:13.471705 IP 10.0.0.2.54321 > 10.0.0.1.12345: S 4321:4321(0) ack 1235 win 65535
20:01:13.497422 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 1235:2682(1447) win 65535
20:01:14.573322 IP 10.0.0.2.54321 > 10.0.0.1.12345: . ack 5981 win 65535
20:01:14.593870 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 4129:5576(1447) win 65535
20:01:14.639457 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 7023:8470(1447) win 65535
20:01:14.639606 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 9917:10640(723) win 65535
20:01:14.660971 IP 10.0.0.2.54321 > 10.0.0.1.12345: . ack 11769 win 65535
20:01:14.693847 IP 10.0.0.1.12345 > 10.0.0.2.54321: . 12087:13534(1447) win 65535
20:01:14.726564 IP 10.0.0.2.54321 > 10.0.0.1.12345: . ack 15964 win 65535

问题: ACK 似乎仍然不同。它是 5981 而不是 2683。

编辑 2:真实 TCP 输出

22:20:14.492625 IP 72.14.204.99.80 > 10.0.2.15.59745: S 255616001:255616001(0) ack 1727704513 win 65535 <mss 1460>
22:20:14.495606 IP 10.0.2.15.59745 > 72.14.204.99.80: . ack 255616002 win 5840
22:20:14.501015 IP 10.0.2.15.59745 > 72.14.204.99.80: P 1727704513:1727705327(814) ack 255616002 win 5840
22:20:14.501746 IP 72.14.204.99.80 > 10.0.2.15.59745: . ack 1727705327 win 65535
22:20:14.562197 IP 72.14.204.99.80 > 10.0.2.15.59745: P 255616002:255616102(100) ack 1727705327 win 65535
22:20:14.562298 IP 10.0.2.15.59745 > 72.14.204.99.80: . ack 255616102 win 5840
22:20:14.630749 IP 10.0.2.15.59745 > 72.14.204.99.80: P 1727705327:1727706096(769) ack 255616102 win 5840
22:20:14.631228 IP 72.14.204.99.80 > 10.0.2.15.59745: . ack 1727706096 win 65535
22:20:14.692324 IP 72.14.204.99.80 > 10.0.2.15.59745: P 255616102:255616338(236) ack 1727706096 win 65535
22:20:14.692361 IP 10.0.2.15.59745 > 72.14.204.99.80: . ack 255616338 win 6432

问题:我按照您的建议尝试了一个连接的输出。但是这一次,为什么是ACK而不是SEQ+1呢?

【问题讨论】:

  • 你在 iOS 中实现了捕获 tcpdump 吗?如果可以,请您给我建议一下方法。

标签: networking tcp protocols tcpdump


【解决方案1】:

从端口号看,好像LINE1、LINE2、LINE5属于一个会话,而LINE2、LINE4在另一个会话。

不使用tcpdump进行数据包分析,我强烈建议你使用tcpdump抓包,并使用wireshark工具分析结果。

编辑: 对于模拟器流,它搞砸了。由于 10.0.0.1 -> 10.0.0.2 的数据包序列号不完整,所以我认为可能有一些数据包没有被捕获并且时间没有显示真实状态。所以你可以忽略它。

对于真正的流,没关系。对于 syn 数据包,ack reply = seq +1;对于内容发送,ack = seq + len。流实际上向我们展示了这一点。

【讨论】:

  • 任何解释你为什么认为它们可能是不同的连接?我正在使用模拟器来生成此输出,并且仅在 TCP 输出上使用。此外,我们可以在 LINES 1-3 中观察 TCP 握手过程。你怎么看?
  • @Legend,连接仅限于端口对;您的 tcdpump 输出可能与您的模拟器的网络实现有关。最好 tcpdump 一个真正的 tcp 来学习摆脱模拟器的行为。
  • 感谢您的解释。刚刚添加了两个部分:EDIT 1 和 EDIT 2。在第一个部分中,我为单个连接添加了几行。在编辑 2 中,我复制了我得到的真实 tcp 输出......对真实 tcp 行为的任何解释?
  • 我不知道 ack = seq+len 用于内容发送。感谢您的澄清...
猜你喜欢
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2012-02-10
  • 2021-10-23
  • 2012-02-02
  • 2016-02-10
  • 1970-01-01
  • 2022-09-24
相关资源
最近更新 更多