网络字节序与主机字节序
2018-03-28 16:32
405 查看
[b]主机字节序就是我们平常说的大端和小端模式:不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序,这个叫做主机序。引用标准的Big-Endian和Little-Endian的定义如下:
a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
网络字节序:4个字节的32 bit值以下面的次序传输:首先是0~7bit,其次8~15bit,然后16~23bit,最后是24~31bit。这种传输次序称作大端字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序,一个字节的数据没有顺序的问题了。
所以:在将一个地址绑定到socket的时候,请先将主机字节序转换成为网络字节序,而不要假定主机字节序跟网络字节序一样使用的是Big-Endian。
[/b]
a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
网络字节序:4个字节的32 bit值以下面的次序传输:首先是0~7bit,其次8~15bit,然后16~23bit,最后是24~31bit。这种传输次序称作大端字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序,一个字节的数据没有顺序的问题了。
所以:在将一个地址绑定到socket的时候,请先将主机字节序转换成为网络字节序,而不要假定主机字节序跟网络字节序一样使用的是Big-Endian。
[/b]
如果代码中存在这个问题,会出现很多莫名其妙的问题,所以请谨记对主机字节序不要做任何假定,务必将其转化为网络字节序再赋给socket。
相关文章推荐
- 关于网络字节序和主机字节序的转换
- big-endian and little-endian 及 网络字节序 主机字节序
- 网络字节序与主机字节序
- 网络字节序与主机字节序的转换
- 主机字节序与网络字节序
- 网络字节序与主机字节序
- 网络字节序与主机字节序
- 网络字节序与主机字节序
- 网络字节序与主机字节序
- 网络字节序与主机字节序
- 网络字节序与主机字节序的转换
- 关于网络字节序和主机字节序
- 网络字节序与主机字节序
- 数据包头分析---网络字节序与主机字节序
- 网络字节序和主机字节序
- 测试平台大端还是小端(网络字节序和主机字节序)
- Python网络编程——主机字节序和网络字节序之间的相互转换
- linux网络编程一:主机字节序与网络字节序的的判断
- 主机字节序和网络字节序
- 关于网络字节序和主机字节序的转换