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

记得在学习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


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

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

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


各位大佬为此急破了脑袋也没辙,后来有个聪明的家伙就比较聪明了就发明 字节序转换函数。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值