首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

关于IP包头的极度困惑,

2013-09-06 
关于IP包头的极度困惑,在线等。。。。IP数据包头开始第一个byte分别为bit0 - bit3为4位版本号,bit4 - bit7为4

关于IP包头的极度困惑,在线等。。。。
IP数据包头开始第一个byte分别为bit0 - bit3为4位版本号,bit4 - bit7为4位首部长度,一般情况都是版本好为4,首部长度为5,按照我的理解打印出来应该是0x54,但是抓包打印出来是0x45,而本人自己打印出来也是0x45,所以本人非常疑惑,也查了很多资料,其中涉及的问题就是大小端的问题,但是按照本人的理解大小端对于单个字节是没有影响的
struct ip
  {
#if __BYTE_ORDER == __LITTLE_ENDIAN
    unsigned int ip_hl:4; /* header length */
    unsigned int ip_v:4; /* version */
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
    unsigned int ip_v:4; /* version */
    unsigned int ip_hl:4; /* header length */
#endif
 ......
 ......
}本人对于这个定义的理解无论在大小端系统,都应该把ip_hl放在高四位,ip_v放在低四位,但是为什么直接在内存里打印出来却是0x45呢,求救,在线等.................................

[解决办法]

引用:
Plain Text code?1234567891011                 0 1 2 3 4 5 6 7    bit                +-+-+-+-+-+-+-+-+                
[解决办法]
1
[解决办法]
0
[解决办法]
1
[解决办法]
0
[解决办法]
0
[解决办法]
0
[解决办法]
1
[解决办法]
0
------解决方案--------------------


                +-+-+-+-+-+-+-+-+                  7 6 5 4 3 2 1 0……


从头到尾都是0x45 ,注意左右0~7的顺序
这里的0~7是什么顺序?0是对应字节的最高位第7位,而7对应最低位吗

热点排行