43 预习 | Socket通信之网络协议基本原理
刘超

上一节我们讲的进程间通信,其实是通过内核的数据结构完成的,主要用于在一台 Linux 上两个进程之间的通信。但是,一旦超出一台机器的范畴,我们就需要一种跨机器的通信机制。
一台机器将自己想要表达的内容,按照某种约定好的格式发送出去,当另外一台机器收到这些信息后,也能够按照约定好的格式解析出来,从而准确、可靠地获得发送方想要表达的内容。这种约定好的格式就是网络协议(Networking Protocol)。
我们将要讲的 Socket 通信以及相关的系统调用、内核机制,都是基于网络协议的,如果不了解网络协议的机制,解析 Socket 的过程中,你就会迷失方向,因此这一节,我们有必要做一个预习,先来大致讲一下网络协议的基本原理。
网络为什么要分层?
我们这里先构建一个相对简单的场景,之后几节内容,我们都要基于这个场景进行讲解。
我们假设这里就涉及三台机器。Linux 服务器 A 和 Linux 服务器 B 处于不同的网段,通过中间的 Linux 服务器作为路由器进行转发。

说到网络协议,我们还需要简要介绍一下两种网络协议模型,一种是 OSI 的标准七层模型,一种是业界标准的 TCP/IP 模型。它们的对应关系如下图所示:

为什么网络要分层呢?因为网络环境过于复杂,不是一个能够集中控制的体系。全球数以亿记的服务器和设备各有各的体系,但是都可以通过同一套网络协议栈通过切分成多个层次和组合,来满足不同服务器和设备的通信需求。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(16)
- 最新
- 精选
- 许童童老师:问个问题。我们家庭办理的宽带,都是运营商在哪一层把带宽给限制的呢?
作者回复: 估计刚出你们家的入口就限制了
9 - Regina为什么握手使用的socket与链接的socket不一样,有什么原因吗
作者回复: 需要不同的数据结构,保存不同的状态
5 - LDxy为什么称为协议栈呢?这和栈这种数据结构有何关系?
作者回复: 全栈工程师
51 - 勤劳的小胖子-libo”将一个网络包从一个网络转发到另一个网络的设备称为路由器“。 这里面的网络不仅包括eth0/1之类的interface,也包括自定义的interface,比如docker自动生成的docker0.就算一台机器只有一个物理网卡,也能当作路由器,是吧。
作者回复: 只要一个网卡,没法路由呀。从一个网络转发到另一个网络的意思是从192.168.1.100/24网络到192.168.2.100/24网络,类似这种
- W.jyao看到留言的问题了,这不就是arp干的事
作者回复: 是的
- WL老师我想问一下在发送数据包的时候, Linux服务A是怎么拿到linux服务器B的mac地址的, Linux服务器B的mac地址是一开始就加上去的吗?
作者回复: A不需要知道B的mac地址。只需要得到网关的mac地址
6 - www站得高,讲得真清楚,之前一直不太理解Socket的定位1
- 侯代烨讲的很详细,从封包到解包过程很详细1
- 严志波为啥要有交换机呢41
- 无为ICMP协议应该是在网络层。并不是传输层11
收起评论