首先明白字节序,字节序是指占内存超过1个字节类型的数据在内存中存放顺序,通常有小端和大端两种顺序类型:
   小端顺序:指低字节数据存放于内存低地址处,高字节数据存放在内存高地址处;
   大端顺序:指低字节数据存放于内存高地址处,高字节数据存放在内存低地址处。

具体如下例子所示:

1.主机序

不同的CPU在处理数据时有不同的字节序类型,将一台设备的字节序类型称作主机序。

2.网络序

网络上以字节流的方式传输数据,在传输过程的字节序类型称为网络序。其与具体设备的cpu、os类型无关,保证了在不同设备间传输时能够被正确解析。

网络序固定采用大端排序方式。

3.两者转换

为了实现不同设备间的通讯,数据能够被正确的解析,需要进行主机序与网络序两者间的转换。

转换规则:相同字节序的设备进行网络通信时无需字节序转换,反之必须进行字节序转换。

原因为:网络协议规定《发送方网络协议函数接收到得第一个字节是高字节,并将其存放到低地址,然后传输时会首先去低地址取数据的高字节进行发送》。
且不管是发送设备(或者接收设备),取(或者存)数据都是从低地址到高地址进行

例子:小端模式设备的多字节数据在存放时,低地址存放的是低字节,而被发送方网络协议函数发送时会首先去低地址取数据(想要取高字节,真正取得是低字节),接收方网络协议函数接收时会将接收到的第一个字节存放到低地址(想要接收高字节,真正接收的是低字节),所以最后双方都正确的收发了数据。而相同平台进行通信时,如果双方都进行转换最后虽然能够正确收发数据,但是所做的转换是没有意义的,造成资源的浪费。而不同平台进行通信时必须进行转换,不转换会造成错误的收发数据,字节序转换函数会根据当前平台的存储模式做出相应正确的转换,如果当前平台是大端,则直接返回不进行转换,如果当前平台是小端,会将接收到得网络字节序进行转换。

转换接口:htons、htonl 、ntohs 、ntohl

参考:https://www.cnblogs.com/fuchongjundream/p/3914770.html

主机序、网络序的理解相关推荐

  1. 大端模式小端模式 主机序网络序

    1. 主机序 不同的CPU有不同的字节序类型这些字节序是指整数在内存中保存的顺序,这个叫做主机序.最常见的有两种: 1.         Little endian:将低序字节存储在起始地址. 即小端 ...

  2. 大端模式小端模式、主机序网络序、入栈地址高低问题

    一.大端模式&小端模式 所谓的"大端模式",是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把 ...

  3. 通俗易懂说字节序,大小端,网络序和主机序

    通俗易懂说字节序,大小端,网络序和主机序 1. 什么是字节序 1.1 为什么字符串不用转序 2. 什么是网络字节序 3. 什么是主机字节序 3.1 主机字节序 3.2 大小端字节序 4. 举例 4.1 ...

  4. 通俗易懂说字节序,大小端,网络序和主机序(2)htonl和ntohl 源码实现

    通俗易懂说字节序,大小端,网络序和主机序(2)htonl和ntohl 源码实现 1. htonl 内核源码实现 1.1 注意:这里有判断,如果本身内存中存储的就是网络序,那就不转 1.1 __bswa ...

  5. java 主机字节序 网络字节序_主机字节序 与 网络字节序

    一.字节顺序 是指占用内存多于一个字节类型的数据在内存中的存放顺序. 计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的.所以,计算机的内部处理都是小端字节序. 但是,网络传输.文件储存. ...

  6. 程序人生 | C语言字节对齐问题详解 - 对齐/字节序/位序/网络序等(上)

    本文首发于 2014-07-21 15:32:28 1. 引言 考虑下面的结构体定义: typedef struct{char c1;short s; char c2; int i; }T_FOO; ...

  7. 序列化和反序列化二叉树 -----前序,中序,后序,层序

    目录 一.序列化和反序列化 1.什么是序列化和反序列化 二.前序遍历 1.序列化 1.问题分析 2.代码实现 2.反序列化 1.问题分析 2.代码实现 三.后序遍历 1.序列化 1.思路分析 2.代码 ...

  8. 由先序+后序遍历确定序列是否唯一并输出一个中序序列

    由先序+后序遍历确定序列是否唯一并输出一个中序序列 @(算法学习) 在前面讨论过如何确定两种唯一二叉树的情况. 先序+中序 后序+中序 中序是必须要有的,因此按照这个提示原则,我们根据根在先序或后序的 ...

  9. 二叉树的构造(前序+中序)---(后序 + 中序)

    二叉树的构造(前序+中序)-(后序 + 中序) 思路:要对前序+中序(后序+中序)的构建树的动态过程要了解,思路比较简单,在了解了这个过程之后,理解下面代码就容易了. 过程 参考图: 前序 + 中序: ...

最新文章

  1. 移动端导航页面html,swiper4实现移动端导航切换
  2. 利用Javadoc工具生成api文档
  3. MVC 3 登录、注销
  4. EditorGridPanel的网格样式以及编辑属性设置
  5. js父页面和子页面之间传值
  6. Java中如何引用文档对象模型_在JAVA中使用文档对象模型DOM经验小结
  7. 专题导读:大数据整理
  8. 变更数据推送java_idea 团队成员修改工程后push推送
  9. 将一个对象相同的属性(不区分大小写)赋值给一个新对象 DataTable的一个简单的扩展...
  10. iOS开发之UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout
  11. mysql 使用内置函数来进行模糊搜索(locate()等)
  12. 极域电子教室豪华版v6.0.2021有哪些功能
  13. 外螺纹对照表_美制螺纹内外径对照表unf
  14. echarts 基于个性化百度地图的迁徙图
  15. 微信小程序-tab切换(scroll-view + swiper)
  16. 计算机控制技术第二章,微型计算机控制技术 赖寿宏版 课件 第二章.ppt
  17. 各大电商历史价格json后端接口
  18. Java error 62_java – Maven build和maven-failsafe-plugin – 分叉的VM在没有正确说再见的情况下终止...
  19. 【CentOS】常用命令
  20. 手术分级标准目录2020_2020年3月份即将实施国家标准目录(四)

热门文章

  1. 2023年5种最适合网络安全工程师学习运用的编程语言
  2. go使用viper读取配置参数热加载
  3. From Shadow Generation to Shadow Removal (CVPR2021)阅读笔记
  4. 区块链如何解决数据安全问题?
  5. Codeforces D. Omkar and Bed Wars
  6. 面试官最常问的10道测试用例面试题及答案,每1题都很经典
  7. 毕设分享SSM 网上购物商城系统(含源码+论文)
  8. 2022QS世界大学排名:全球全日制MBA、商科硕士榜单公布
  9. 摄像头工作原理及结构介绍(一)
  10. 使用 Arduino 和电位器控制直流电机速度