趣谈 Linux 操作系统
刘超
前网易杭州研究院云计算技术部首席架构师
84364 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 72 讲
趣谈 Linux 操作系统
15
15
1.0x
00:00/00:00
登录|注册

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

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

网络为什么要分层?

我们这里先构建一个相对简单的场景,之后几节内容,我们都要基于这个场景进行讲解。
我们假设这里就涉及三台机器。Linux 服务器 A 和 Linux 服务器 B 处于不同的网段,通过中间的 Linux 服务器作为路由器进行转发。
说到网络协议,我们还需要简要介绍一下两种网络协议模型,一种是 OSI 的标准七层模型,一种是业界标准的 TCP/IP 模型。它们的对应关系如下图所示:
为什么网络要分层呢?因为网络环境过于复杂,不是一个能够集中控制的体系。全球数以亿记的服务器和设备各有各的体系,但是都可以通过同一套网络协议栈通过切分成多个层次和组合,来满足不同服务器和设备的通信需求。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • 许童童
    老师:问个问题。我们家庭办理的宽带,都是运营商在哪一层把带宽给限制的呢?

    作者回复: 估计刚出你们家的入口就限制了

    9
  • Regina
    为什么握手使用的socket与链接的socket不一样,有什么原因吗

    作者回复: 需要不同的数据结构,保存不同的状态

    5
  • LDxy
    为什么称为协议栈呢?这和栈这种数据结构有何关系?

    作者回复: 全栈工程师

    5
    1
  • 勤劳的小胖子-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
  • 严志波
    为啥要有交换机呢
    4
    1
  • 无为
    ICMP协议应该是在网络层。并不是传输层
    1
    1
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部