1

在观察wireshark中的网络流量时,我看到wireshark重新组装数据包,如:

[Reassembled TCP Segments (4233 bytes): #1279(2133), #1278(2100)]

Packet #1278: blahblah, Seq: 1538, Ack:3074, Len: 2133
Packet #1279: blahblah, Seq: 2998, Ack:3074, Len: 2100

(长度是虚构的值)

我希望重新组装我通过 Sharppcap 收到的 tcp 数据包

Wireshark 是否使用 Ack 来知道哪些段属于彼此?

Seq值是指什么?

如果不是,它如何重新组装它们?

4

3 回答 3

3

SEQ 值以字节为单位,所以如果你收到一个 100 字节的段SEQ == 5,你知道序列中的下一个段将有SEQ == 105.

ACK 指示发送方期望从其对等方看到的下一个 SEQ 值。因此,您在多个数据包中看到相同 ACK 值的唯一原因是只有一侧在传输。通过保持 ACK 相同,每次传输时,主机基本上都在说它没有收到任何新的东西。

于 2010-12-19T14:38:12.973 回答
0

序列号标识段中的第一个字节。作为连接建立的一部分,每个对等点都会为它将发送的第一个字节选择一个随机序列号。此后,下一个序列号是前一个序列号加上前一段中的字节数。

我不明白你关于 Wireshark 是否使用 Ack 重新组装段的问题。

于 2010-12-19T07:11:13.557 回答
0

我可能错了,重新组装 PDU 不取决于 TCP。TCP 的工作是确保 tcp 段按顺序到达(seq,ack),它不关心上层协议。

例如一个长的 HTTP 响应(假设你正在下载一些大文件),TCP 不知道(它也不关心)请求的结束在哪里,因为那是 HTTP 的工作

于 2013-01-24T05:20:02.677 回答