手动解码IP数据报转储

时间:2012-04-27 09:44:37

标签: networking ip ipv4 datagram

我正在练习这个主题的问题,我遇到了这个问题:

查看下面包含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是总数据报长度。

有人可以解释一下吗?

3 个答案:

答案 0 :(得分:2)

答案 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)。