在观察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值是指什么?
如果没有,它如何重新组装?
答案 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的工作