重新组装TCP段

时间:2010-12-19 06:40:56

标签: tcp packet wireshark

在观察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值是指什么?

如果没有,它如何重新组装?

3 个答案:

答案 0 :(得分:3)

SEQ值以字节为单位计算,因此如果您收到带有SEQ == 5的100字节段,您就会知道序列中的下一个段将具有SEQ == 105

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

e.g。一个很长的HTTP响应(假设你正在下载一些大文件),TCP不知道(也不关心)请求结束的地方,因为那是HTTP的工作