您的位置:首页 > 理论基础 > 计算机网络

什么是主机字节序 什么是网络字节序

2014-11-11 18:02 239 查看
记得在学习UC中的网络编程时,会经常用到这样的api:

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


现在解释下 什么是主机字节序?什么是网络字节序?

主机字节序:在主机内存中多字节数值存放的顺序

网络字节序:在网络这多字节数值传输的先后顺序

各位大佬为此急破了脑袋也没辙,后来有个聪明的家伙就比较聪明了就发明 字节序转换函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: