43 预习 | Socket通信之网络协议基本原理
刘超
该思维导图由 AI 生成,仅供参考
上一节我们讲的进程间通信,其实是通过内核的数据结构完成的,主要用于在一台 Linux 上两个进程之间的通信。但是,一旦超出一台机器的范畴,我们就需要一种跨机器的通信机制。
一台机器将自己想要表达的内容,按照某种约定好的格式发送出去,当另外一台机器收到这些信息后,也能够按照约定好的格式解析出来,从而准确、可靠地获得发送方想要表达的内容。这种约定好的格式就是网络协议(Networking Protocol)。
我们将要讲的 Socket 通信以及相关的系统调用、内核机制,都是基于网络协议的,如果不了解网络协议的机制,解析 Socket 的过程中,你就会迷失方向,因此这一节,我们有必要做一个预习,先来大致讲一下网络协议的基本原理。
网络为什么要分层?
我们这里先构建一个相对简单的场景,之后几节内容,我们都要基于这个场景进行讲解。
我们假设这里就涉及三台机器。Linux 服务器 A 和 Linux 服务器 B 处于不同的网段,通过中间的 Linux 服务器作为路由器进行转发。
说到网络协议,我们还需要简要介绍一下两种网络协议模型,一种是 OSI 的标准七层模型,一种是业界标准的 TCP/IP 模型。它们的对应关系如下图所示:
为什么网络要分层呢?因为网络环境过于复杂,不是一个能够集中控制的体系。全球数以亿记的服务器和设备各有各的体系,但是都可以通过同一套网络协议栈通过切分成多个层次和组合,来满足不同服务器和设备的通信需求。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了Socket通信中的网络协议基本原理,从网络分层的必要性到各层功能的详细讲解,为读者提供了全面的知识概览。文章首先解释了网络分层的原因,并介绍了OSI的七层模型和TCP/IP模型,重点讲解了网络协议的几个层次。从网络层开始,讲解了IP地址的作用、网络号的概念以及路由协议的作用。接着,详细介绍了数据链路层和传输层,包括MAC地址的定位功能、TCP和UDP协议的作用以及TCP协议在处理网络不可靠性方面的重要性。最后,解释了应用层和内核之间通过Socket系统调用进行通信的机制。文章通过对网络协议的分层和各层功能的介绍,为读者提供了对Socket通信中网络协议基本原理的快速了解。在阅读本文后,读者可以对网络协议的七个层次有一个整体的认识,并了解了TCP/UDP->IPv4->ARP这一条链的重要性。同时,文章还提到了下一步将从代码层面展示这个过程,为读者提供了进一步学习的方向。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(16)
- 最新
- 精选
- 许童童老师:问个问题。我们家庭办理的宽带,都是运营商在哪一层把带宽给限制的呢?
作者回复: 估计刚出你们家的入口就限制了
2019-07-059 - Regina为什么握手使用的socket与链接的socket不一样,有什么原因吗
作者回复: 需要不同的数据结构,保存不同的状态
2019-07-225 - LDxy为什么称为协议栈呢?这和栈这种数据结构有何关系?
作者回复: 全栈工程师
2019-07-0651 - 勤劳的小胖子-libo”将一个网络包从一个网络转发到另一个网络的设备称为路由器“。 这里面的网络不仅包括eth0/1之类的interface,也包括自定义的interface,比如docker自动生成的docker0.就算一台机器只有一个物理网卡,也能当作路由器,是吧。
作者回复: 只要一个网卡,没法路由呀。从一个网络转发到另一个网络的意思是从192.168.1.100/24网络到192.168.2.100/24网络,类似这种
2019-07-10 - W.jyao看到留言的问题了,这不就是arp干的事
作者回复: 是的
2019-07-05 - WL老师我想问一下在发送数据包的时候, Linux服务A是怎么拿到linux服务器B的mac地址的, Linux服务器B的mac地址是一开始就加上去的吗?
作者回复: A不需要知道B的mac地址。只需要得到网关的mac地址
2019-07-056 - www站得高,讲得真清楚,之前一直不太理解Socket的定位2022-03-062
- 侯代烨讲的很详细,从封包到解包过程很详细2020-03-221
- 严志波为啥要有交换机呢2020-01-1441
- 无为ICMP协议应该是在网络层。并不是传输层2019-11-1911
收起评论