Linux中网络字节序和主机字节序

运维 系统运维
主机字节序就是我们平常说的大端和小端模式:不同的 CPU 有不同的字节序类型,这些字节序是指整数在内存中保存的顺序 这个叫做主机序。Big-Endian和Little-Endian。引用标准的Big-Endian和Little-Endian的定义如下......

主机字节序就是我们平常说的大端和小端模式:不同的 CPU 有不同的字节序类型,这些字节序是指整数在内存中保存的顺序 这个叫做主机序。Big-Endian和Little-Endian。引用标准的Big-Endian和Little-Endian的定义如下:

a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

网络字节序:4个字节的32 bit值以下面的次序传输:首先是0~7bit,其次8~15bit,然后16~23bit,***是24~31bit。这种传输次序称作大端字节序。由于 TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序,一个字节的数据没有顺序的问题了。

为了进行转换 bsd socket 提供了转换的函数 有下面四个

htons 把 unsigned short 类型从主机序转换到网络序

htonl 把 unsigned long 类型从主机序转换到网络序

ntohs 把 unsigned short 类型从网络序转换到主机序

ntohl 把 unsigned long 类型从网络序转换到主机序

在使用 little endian 的系统中 这些函数会把字节序进行转换

在使用 big endian 类型的系统中 这些函数会定义成空宏

注意:

1 、网络与主机字节转换函数 :htons ntohs htonl ntohl (s 就是 short l 是 long h 是 host n 是 network)

2 、不同的 CPU 上运行不同的操作系统,字节序也是不同的。
 

【编辑推荐】

  1. linux下快速结束应用程序
  2. Linux安全编程:如何编写安全的应用程序
  3. Linux应用程序安装与管理
责任编辑:赵宁宁 来源: 中国IT实验室
相关推荐

2021-04-15 11:43:53

C语言位域字节序

2021-12-10 07:45:48

字节音频视频

2019-09-11 15:13:57

Oracle数据库存储

2021-10-12 16:46:59

ArrayList接口LinkedList

2021-03-30 15:10:50

Java序列化

2021-09-06 15:52:19

鸿蒙HarmonyOS应用

2009-06-14 22:01:27

Java对象序列化反序列化

2011-06-01 15:05:02

序列化反序列化

2021-08-30 12:05:46

Linux字节对齐代码

2024-08-22 14:47:50

开源Linux网络抓包工具

2021-12-16 10:08:34

文件字节流FileInputStFileOutputS

2021-08-06 11:50:49

Linux 字节对齐Linux 系统

2022-03-30 10:10:17

字节码栈空间

2023-08-02 08:27:13

2021-08-17 11:45:44

LinuxC语言字节

2009-03-27 10:53:52

注入SQLMySQL

2022-01-07 08:14:53

Convert Datoracle数据库

2012-09-28 10:20:52

IBMdw

2012-09-25 15:23:24

操作系统

2017-12-14 21:17:24

点赞
收藏

51CTO技术栈公众号