我正在练习这个主题的问题,我遇到了这个问题:
查看下面包含TCP段的IP数据包的40byte转储(十六进制)。
45 20 03 c5 78 06 00 00 34 06 ca 1f d1 55 ad 71 c0 a8 01 7e
00 50 9a 03 3e 64 e5 58 df d0 08 b3 80 18 00 de 00 02 00 00
识别IP和TCP标头的所有字段。
来源:http://www.eng.utah.edu/~cs5480/homeworks/hw3_soln.pdf的第一季
现在我确实在我面前有IPv4的数据报格式布局。我不明白的是,在解决方案中,它表示报头长度为20字节,但根据格式,位4-7对应于报头长度,即0x03c5 = 965字节。但是,在解决方案中,965bytes是总数据报长度。
有人可以解释一下吗?
答案 0 :(得分:2)
看看这个转储你的标题
https://metacpan.org/pod/distribution/Data-HexDump-Range/scripts/hdr_examples.pod#IPV4-header
答案 1 :(得分:1)
数字!=位。
假设从零开始计数,0x03c5是数据中的十六进制数字4-7。
4-7位将是之前出现的十六进制。此标头值表示标头中32位字的数量,因此您必须乘以4才能得到20作为字节数。
答案 2 :(得分:0)
根据链接的PDF文档:
IP header: IP version 4, Header Length: 20 bytes, ToS = 20, Total Length = 0x03c5 =
965 bytes, ...
我觉得很清楚 - 标题长度为20个字节,总长度为965个字节 (很好地匹配Wikipedia on IPv4 headers)。