• 计算机网络(第一弹) --- 一篇关于协议的博客


    接下来的一段时间要针对计算机网络有关的知识进行总结分析, 提炼出比较有用的知识点; 于我而言, 经常会忘记一些零碎的知识点, 虽然有些内容比较基础, 但还是有必要常翻阅一下.
    那么, 就从一篇关于协议的博客开始吧!!!💪🏻💪🏻💪🏻

    1 认识协议

    1.1 概念

      在说协议的概念之前, 想问一下如果计算机之间无法互相通信, 那将是一个什么样的场景? 那如果我要运行多个业务, 那我就得在家里安装多台电脑, 每个电脑都去运行一个业务逻辑, 这样的场景想想都可怕; 随着计算机技术的发展, 我们需要计算机之间去互相通信, 互相的分享数据, 也就是说多个计算机要协同工作来完成我们的任务, 这时候就有了网络之间的互联.
      那么多台电脑设备如何建立连接或者是共享数据呢? 毕竟电脑的生产厂商非常之多, 操作系统呢也有很多, 再加上各种计算机网络硬件设备, 每个厂商的计算机如何去进行和其他厂商的计算机进行通信呢, 因此就要有人站出来规定一个共同的标准, 按照标准行事,这时候就诞生了协议这个概念, 也就是网络协议的简称, 网络协议就是所有的电脑设备建立连接或者识别所要共同遵循的一组约定或者规则, 只有遵循这个约定, 计算机之间才能相互通信交流.
    总之, 协议就是双方通信达成的一种共识.

    1.2 三要素

    • 语法: 数据与控制信息的结构或者格式, 如我们在使用微信发语音的时候使用同样的语言, 而不是我用普通话你用英语给我交流;
    • 语义: 指的是发出什么信息, 要完成什么操作并做出什么响应, 主要用来说明通信双方应当怎么做;
    • 时序: 事件实现的顺序加以说明, 也就是说时序定义了什么时候开始进行通信, 先做什么, 后做什么, 是同步传输啊还是异步传输等; 如微信和女票开语音的时候是你先挂断啊还是我先挂断.

    1.3 五元组

    • 源 IP: 用来标识源主机;
    • 源端口号: 用来标识源主机中该次通信发送数据的进程;
    • 目的 IP: 用来标识目的主机;
    • 目的端口号: 用来标识目的主机中该次通信接收数据的进程;
    • 协议号: 用来标识发送进程和接收进程双方约定的数据格式.

      在 TCP/IP 协议中, 用五元组来标识一个网络通信, 五元组在网络通信中的作用就类似于我们发快递, 如下图所示:
    在这里插入图片描述

    2 协议分层

    2.1 为什么要分层? 分层的好处?

    • 分层能够避免某个协议过于庞大复杂;
    • 分层之后, 协议之间"解耦合", 上层协议不需要理解下层协议的细节实现, 相当于是"封装"; 简言之, 对于使用方来说, 并不关心提供方是如何实现的, 只需要使用接口即可; 对于提供方来说, 利用封装的特性, 隐藏了实现的细节, 只需要开放接口即可;
    • 分层之后, 任意层次的协议都可以灵活替换.

    2.2 OSI 七层模型

      OSI 即开放系统互连, 其是一个逻辑上的定义和规范, 将网络从逻辑上分了七层, 如下:

    • 应用层: 也就是对于特定应用的协议, 如电子邮件有电子邮件协议, 文件传输有文件传输协议;
    • 表示层: 设备固有的数据格式和网络标准数据格式的转换, 也就是接收不同表现形式的信息, 如在国际会议中, 参会人员可能会带一个翻译耳麦, 这个耳麦就会接受每个国家发言人的语言, 转换成我们比较熟悉的语言传递给自己.
    • 会话层: 负责通信管理, 如何时建立连接, 何时断开连接以及保持多久的连接;
    • 传输层: 用于管理两个节点之间的数据传输, 负责可靠的传输, 以确保数据被可靠的传送到目标地址;
    • 网络层: 主要是地址的管理及路由的选择, 如传输的信息经过哪个路由传递到目标地址?
    • 数据链路层: 介乎于物理层和网络层之间, 数据链路层在物理层提供服务的基础上向网络层提供服务, 其最基本的服务是将源自物理层来的数据可靠地传输到相邻节点的目标机网络层。主要功能就是互相连接或者共享数据的设备之间传送或者识别数据帧;
    • 物理层: 以"0" / “1” 代表电压的高低, 灯光的闪灭, 界定连接器和网线的规格.

    注意: OSI 七层模型只是教科书上的理论, 只是一种框架性的设计方法, 最主要的功能就是帮助不同类型的主机实现数据传输, 其最大的优点就是将服务 / 接口 / 协议 这三个概念明确的进行了区分, 理论比较完整, 但是呢, 这并不是实际情况, 毕竟其太复杂了, 一点也不实用, 在实际的组建网络时, 我们只是以 OSI 七层模型设计中的部分进行分层, 也就是 TCP / IP 五层(或者四层)模型来实现.

    2.3 TCP / IP 五层(或者四层)模型

      这里包含的协议很多, 其中最典型的代表就是 TCP 协议和 IP 协议;

    • 应用层: 应用程序直接打交道的协议, 这也是实际开发中涉及到的最多的部分, 甚至有可能会自己设计应用层协议;
    • 传输层: 负责端到端之间的传输, 这里只需要关注起点和终点就可以, 例如在淘宝上买衣服, 卖家发货只需要关注你的地址是啥, 收件人是谁就可以了, 不会关注你买的衣服的尺码, 颜色等;
    • 网络层: 负责点到点之间的传输, 需要规划路径, 如物流公司开始运送我们在淘宝买的衣服, 在开始运送之前公司会规划好具体走哪条路, 如从济南到北京是直接从济南到北京啊还是从济南先到天津再到北京啊;
    • 数据链路层: 负责相邻之间具体如何传输, 例如确定了是从济南直接发到北京, 那么是空运啊还是陆地运输甚至是铁路运输?
      在这里插入图片描述
    • 物理层: 网络通信的基础硬件设施, 如网线 / 基站等, 也就是纯硬件的东西, 和软件关系不大, 一般从我们程序猿的角度都会忽略掉物理层, 这就是可能是四层模型.

    注意: 数据链路层和物理层和系统没有直接关系, 而是取决于具体的硬件设备以及硬件设备配套的驱动程序, 当然传输层呢就是纯软件的一些协议, 由操作系统内核来实现, 这里要区分开; 其次主要流程就是上层协议调用下层协议, 下层协议给上层协议提供服务.

    2.4 常见问题

    • 对于一台主机, 其操作系统内核实现了从传输层到物理层的内容;
    • 对于一台路由器, 其实现了从网络层到物理层;
    • 对于一台交换机, 其实现了从数据链路层到物理层;
    • 对于集线器, 其只实现了物理层.

    以上说法其实并不是真实的情况, 也可以说是理论上的情况, 因为现代的交换机和路由器并没有本质的区别, 而且都实现到应用层, 其实现在的交换机 / 路由器 / 电脑都没啥本质的区别了, 如核心硬件设备 LSW 转发芯片, 也有 CPU / 内存 / Flsh 卡, 也遵循了冯诺依曼体系结构.

    2.5 总结

    在这里插入图片描述

  • 相关阅读:
    力扣刷题(122. 买卖股票的最佳时机 II)动规、贪心
    模型风险管理简述
    Jetty各版本历史
    软件测试书单/书籍推荐(整理更新中)
    面试官:了解HashSet吗?请做下面的题目
    3D Web开发新篇章:threelab探索之旅
    PyPDF2 模块抽取PDF文件部分页面另存新文档
    ROS播包可视化
    Cpolar+Tipas:在Ubuntu上搭建私人问答网站,为您提供专业的问题解答
    python中的装饰器
  • 原文地址:https://blog.csdn.net/Onion_521257/article/details/127677276