数据包是碎片但标志位于Do not Fragment

时间:2013-10-01 17:35:34

标签: networking tcp ip libpcap winpcap

我在winpcap上有以下2个TCP数据包:

http://pastebin.com/FUAs3UZ7 或者以pcap格式https://www.dropbox.com/s/0ss4j0weszy92no/SO.pcap

要重新组装这两个数据包,但它们的IP标志是“010”,意思是“不要碎片”,并且片段偏移量为0.它们有一个连续的标识号,但如果我理解正确的话单独定义分段数据包是不够的。

Wireshark 确实重新组合这些数据包,我真的不明白为什么。

我在这里缺少什么? Wireshark如何知道重新组装这两个数据包?

1 个答案:

答案 0 :(得分:1)

第一个数据包:

00 80 f4 09 e6 a5 - 以太网目的地址

00 50 56 26 ab 04 - 以太网源地址

08 00 - 以太网类型,即IPv4

45 - IP版本(4代表IPv4)和标题长度(5代表5 * 4 = 20字节)

00 - DSCP / ECN(或过去的TOS)

02 40 - 总长度(576字节)

74 ff - 识别

40 00 - 标志和片段偏移量; DF,片段偏移量为0

80 - 生活的时间

06 - 协议,即TCP

当您说“Wireshark 重新组合这些数据包”时,您指的是 IP 重组或 TCP 重新装配?那些发生在不同的层,我怀疑Wireshark正在做的是重新组装第一个数据包中的全部或部分TCP段和第二个数据包中的TCP段,以便为上的协议生成一个数据包< / em> TCP; TCP是一种字节流协议,因此不能保证TCP段边界(几乎在所有情况下都变成链路层帧边界)对应于在TCP之上运行的协议的数据包边界。