LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1663|回复: 4

关于网络字节顺序的问题!

[复制链接]
发表于 2005-6-14 19:44:04 | 显示全部楼层 |阅读模式
大头/小头字节顺序不是关于字节在内存中高低地址的排列问题的吗 ? 为什么在IP header的struct中,对IP头中四字节的版本和长度会于大小头字节顺序有关,难道字节顺序还涉及到字节中比特的顺序?
这是/usr/include/linux/ip.h中关于ip header的定义:
struct iphdr {
#if defined(__LITTLE_ENDIAN_BITFIELD)
        __u8    ihl:4,
                version:4;
#elif defined (__BIG_ENDIAN_BITFIELD)
        __u8    version:4,
                ihl:4;
#else
发表于 2005-6-14 19:52:57 | 显示全部楼层
主要是结构体bit field实现的问题。big endian下,bit field先放在高位,little endian相反。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-14 20:00:04 | 显示全部楼层
bit field 也有排列顺序?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-14 20:02:09 | 显示全部楼层
谢谢 Tetris,你的意思是这于结构体的实现相关,编译器的问题?big endian/little endian 这不是由于cpu的体系结构造成的吗?能具体解释一下吗?比如给点资料。
回复 支持 反对

使用道具 举报

发表于 2005-6-14 22:02:27 | 显示全部楼层
big endian/little endian和CPU有关。每个CPU的手册里都有说明。像x86就都是little endian.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表