什么是主机字节序 什么是网络字节序
2014-11-11 18:02
239 查看
记得在学习UC中的网络编程时,会经常用到这样的api:
ntohs、ntohl 或者反过来htons、htonl,前俩是将网络字节序转换为主机字节序,后者是将主机字节序转换为为网络字节序。
为什么要转换?
字节序是什么?
简单的做一下感念介绍:
“大端” 与 “小端”:
小端(Little-Endian) 低位字节排放到低地址端,在内存地址是依次按字节增加;
大端(Big-Endian ) 低位字节排放到高地址端,在内存地址是依次按字节减少。
拿个网络上的图给大家理解下:
为什么要这样转换来转换去,这就要怪互联网的盛行了。
网络传输协议规定(TCP/IP UDP)使用大端字节序在网络上传输数据。
这下急坏了搞系统和硬件的大佬们,借用网络上的数据一用:
现在解释下 什么是主机字节序?什么是网络字节序?
主机字节序:在主机内存中多字节数值存放的顺序
网络字节序:在网络这多字节数值传输的先后顺序
各位大佬为此急破了脑袋也没辙,后来有个聪明的家伙就比较聪明了就发明 字节序转换函数。
ntohs、ntohl 或者反过来htons、htonl,前俩是将网络字节序转换为主机字节序,后者是将主机字节序转换为为网络字节序。
为什么要转换?
字节序是什么?
简单的做一下感念介绍:
“大端” 与 “小端”:
小端(Little-Endian) 低位字节排放到低地址端,在内存地址是依次按字节增加;
大端(Big-Endian ) 低位字节排放到高地址端,在内存地址是依次按字节减少。
拿个网络上的图给大家理解下:
为什么要这样转换来转换去,这就要怪互联网的盛行了。
网络传输协议规定(TCP/IP UDP)使用大端字节序在网络上传输数据。
这下急坏了搞系统和硬件的大佬们,借用网络上的数据一用:
不同的CPU上运行不同的操作系统,字节序也是不同的: 处理器 操作系统 字节排序 Alpha 全部 Little endian HP-PA NT Little endian HP-PA UNIX Big endian Intelx86 全部 Little endian <-----x86系统是小端字节序系统 Motorola680x() 全部 Big endian MIPS NT Little endian MIPS UNIX Big endian PowerPC NT Little endian PowerPC 非NT Big endian <-----PPC系统是大端字节序系统 RS/6000 UNIX Big endian SPARC UNIX Big endian IXP1200 ARM核心 全部 Little endian
现在解释下 什么是主机字节序?什么是网络字节序?
主机字节序:在主机内存中多字节数值存放的顺序
网络字节序:在网络这多字节数值传输的先后顺序
各位大佬为此急破了脑袋也没辙,后来有个聪明的家伙就比较聪明了就发明 字节序转换函数。
相关文章推荐
- 什么是网络字节序,主机字节序
- “字节序”是个什么鬼? 大端 小端 主机字节序 网络字节序
- 什么是网络字节序,主机字节序??
- 浅谈网络字节序与主机字节序
- 网络字节序与主机字节序
- 主机字节序与网络字节序
- c# 主机和网络字节序的转换 关于网络字节序和主机字节序的转换
- 网络字节序与主机字节序
- [转]网络字节序与主机字节序--大端序和小端序
- python通过ntohl和htonl等函数实现主机字节序和网络字节序相互转换
- 网络字节序与主机字节序
- 网络字节序、主机字节序、大端与小端
- 网络字节序与主机字节序
- 网络字节序与主机字节序
- 网络字节序与主机字节序
- 网络字节序与主机字节序的转换~!~~~
- 网络字节序与主机字节序
- 大端模式与小端模式 网络字节序与主机字节序
- 网络字节序与主机字节序分析
- 关于网络字节序(network byte order)和主机字节序(host byte order)