理解网络字节序与主机字节序
2020-06-29 04:55
1401 查看
主机字节序就是我们平常说的大端和小端模式:不同的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。由于这个问题曾引发过血案!公司项目代码中由于存在这个问题,导致了很多莫名其妙的问题,所以请谨记对主机字节序不要做任何假定,务必将其转化为网络字节序再赋给socket。
相关文章推荐
- 两个例子理解主机字节序和网络字节序,不同平台字节序转换
- 网络字节序与主机字节序
- 主机字节序(大小端判断)及网络字节序
- “字节序”是个什么鬼? 大端 小端 主机字节序 网络字节序
- 网络字节序与主机字节序 高低位
- 网络字节序与主机字节序的转换
- 网络字节序和主机字节序笔记
- 网络字节序与主机字节序
- Linux中网络字节序和主机字节序
- 网络字节序与主机字节序的转换
- 数据包头分析---网络字节序与主机字节序
- 网络字节序与主机字节序
- 网络字节序与主机字节序-科卓培训移动网络开发系列
- 网络字节序与主机字节序
- Python网络字节序和主机字节序(全文摘录)
- 网络字节序和主机字节序
- 网络字节序与主机字节序
- 大端模式与小端模式 网络字节序与主机字节序
- 主机字节序 与 网络字节序
- [转]网络字节序与主机字节序