对一个搞系统和网络的人来讲,主机序和网络序是要清楚的。
这对于写socket通信讲,是很重要的!一个完整的socket通信必然绕不开主机序和网络序问题,这是当今计算机通信的基石。
但对于一个常写socket通信的老手而言,可能也不太知道这个知识点,因为主机序和网络序问题被各种语言的解释器给掩盖了,这虽是减轻了socket编程的工作,但也给网络通信的过程蒙上一层面纱。
很多人不知道主机序和网络序是什么了,更别提“系统”的大端序和小端序,这是一个学习者的悲哀!不懂得本质,哪得来创新,反复造同一个轮子的行为只能让我感觉到一丝难过和万般无奈。
既然谈到主机序和网络序的话题,那么还是从最简单的聊起,这可以让更多人参与进来交流,而不是就几个人在那嗨聊。
在这里先画个重点,网络也是系统。
主机序
主机序有小端序和大端序。小端序是数据字节的低位存储在内存地址的低位,数据字节的高位存储在内存地址的高位;大端序是数据字节的低位存储在内存地址的高位,数据字节的高位存储在内存地址的低位。
小端序更符合人的理解,低对低,高对高嘛!大端序则更符合计算机的处理逻辑,从高到低,顺序存储。

字节存储这个工作往往是解释器做的。

上图这个可执行文件可以看见LSB(Least Significant Bits),最低有效位即是小端序,内存地址的低位是字节的低位。而MSB(Most Significant Bits),最高有效位是大端序,内存地址的高位是字节的低位。
网络序
将网络简化为系统,网络序其实很简单。
网络序并不像主机序,考虑人的直观理解。网络作为一个系统,主要目的是为了通信。考虑的自然是计算机的处理逻辑,所以都是大端序的字节存储方式。
来个结尾
因为主机序有LSB的存在(解释器为了考虑人的直观理解),在网络通信过程,可能会有涉及数据存储方式转换的部分,小端序转大端序,大端序转小端序。
socket编程并不难,但socket通信却有很多细节可以被发现。给出一个感悟,搞网络的绝对不是单纯的只搞网络,每一个网络人对系统的理解都是很强的,期待更多人加入进来,成为网络侠。
主机序和网络序对于系统和网络编程至关重要,尤其是socket通信中。主机序分为小端序和大端序,网络序统一采用大端序以确保通信一致性。在编程时,需要进行字节序转换以确保数据正确传输。了解这些基础知识,能为深入网络通信领域打下坚实基础。

97

被折叠的 条评论
为什么被折叠?



