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

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

UDP
TCP
ARP协议
MAC地址
路由协议
IP地址
应用层
第四层:传输层
第一层:物理层
第二层:数据链路层
第三层:网络层
TCP/IP模型
OSI的标准七层模型
理解网络包的封装、转发、解封装过程
掌握的重点
网络协议的七个层次
发送数据包
Socket系统调用
网络分层
网络协议
总结时刻
预习: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
立即购买
登录 后留言

全部留言(16)

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

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

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

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

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

    作者回复: 全栈工程师

    2019-07-06
    5
    1
  • 勤劳的小胖子-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-05
    6
  • www
    站得高,讲得真清楚,之前一直不太理解Socket的定位
    2022-03-06
    2
  • 侯代烨
    讲的很详细,从封包到解包过程很详细
    2020-03-22
    1
  • 严志波
    为啥要有交换机呢
    2020-01-14
    4
    1
  • 无为
    ICMP协议应该是在网络层。并不是传输层
    2019-11-19
    1
    1
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部