• 计算机网络中的封装和分用,五层协议


    局域网/广域网

    局域网:

    通过网线连接多台设备

    在这里插入图片描述

    通过转发设备,交换机,路由器

    在这里插入图片描述

    路由器和交换机:实际上,真正的交换机和路由器之间的界限已经越来越模糊了,路由器的很多功能交换机也有,交换机的很多功能路由器也有。

    广域网和局域网:

    局域网:通过路由器/交换机组建起来的网络叫做局域网
    广域网:广域网和局域网之间没有明确的界限,认为比较大的局域网就可以称为“广域网”,全世界最大的广域网Internet(因特网)

    IP地址

    描述一个网络上的一个主机的位置(收货地址),IP地址本质上是一个32位的整数,一般按照每个字节分成四个部分中间用.分割,“点分十进制”
    端口号:描述一个主机上的应用程序(收件人的电话),端口号本质是2个字节(15位)的无符号整数,0-65535。服务器程序在启动的时候就需要绑定端口号以便用户来访问。

    协议

    进行有效的通信,前提就是要明确通信协议,本质上就是约定发出来的数据是什么样子的格式,接收方按照对应的格式进行解析。
    网络通信的时候本质上传输的是光信号和电信号,通过光信号的频率(高频率/低频率)电信号的电平(高电平/低电平)来表示0,1

    协议分层

    将大的复杂的协议拆成小的,每个协议负责一部分工作。

    优点:
    每层协议不需要理解其他协议的细节(更好的做到了封装)
    把对应层的协议换成其他协议(更好地解耦合)

    OSI七层协议模型

    1.物理层:以0,1代表电压的高低,灯光的闪灭,界定连接器和网线的规格。负责比特流和电子信号之间的切换。
    2.数据链路层:互联设备之间传送和识别数据帧。负责数据帧与比特流之间的转换。
    3.网络层:地址管理与路由选择。负责经过那个路由传递到目标。
    4.传输层:管理两个节点之间的数据传输。
    5.会话层:通信管理。负责建立和断开通信连接。管理传输层以下的分层。
    6.表示层:设备固有数据格式和网络标准数据格式的转换。接受不同表现形式的信息,如文字流、图像、声音等。
    7.应用层:针对特定应用的协议。

    TCP/IP五层/四层网络模型

    站在全局角度是一个五层模型,转载程序员角度,最下面的物理层描述的是硬件设备,这时候就认为是四层。
    在这里插入图片描述

    物理层:网络通信中的硬件设备 数据链路层:负责完成相邻的两个设备之间的通信的(一根网线相连的两个设备)
    网络层:负责点到点之间的通信,任意节点到任意节点,更多指的是不相邻的节点。负责规划合适的路线。
    传输层:负责端到端之间的通信,起点和终点只是关注结果(数据到没到),不关注过程(不关注数据走哪条路),相当于买家和卖家,快递公司则要关注中间的过程。
    应用层:和应用程序密切相关,传输数据的作用,不同的应用程序有不同的用处。

    举例

    有一天我在网上卖一个床刷子
    商家站在传输层,考虑这个东西能不能发到我的手上。
    快递公司站在网络层规划线路。
    快递小哥站在数据链路层,骑着电动车把火拉到集散中心。
    电动车/货车/公路站在物理层,提供传输的基础。
    上述都在考虑包裹如何传输,不考虑包裹里面是什么东西干什么用的。

    而造刷子的人是抱着用途的。就是应用层。

    一台主机,其实就对应了物理层到应用层(把这五层都实现了)
    一台路由器,主要是物理层到网络层(主要是实现了物理层,数据链路层,网络层)
    一台交换机,主要是物理层导数据链路层(主要实现了物理层,数据链路层)

    网络分层中的封装和分用:

    封装过程:

    应用层

    根据用户输入的内容,把数据构造成一个应用层的协议报文。

    协议:协议是一种约定,其他传输层,网络层等协议都是现成的,应用层的协议大概率是程序员自己设定的。
    报文:遵守这一约定的一组数据

    假设的一种应用层的协议格式:

    在这里插入图片描述

    应用层协议:调用操作系用提供的API(称为SOCKET API),把应用层的数据交给传输层(就已经进入操作系统内核了)

    传输层(操作系统内核)

    根据刚才传过来的数据,基于当前使用的传输层协议构造出一个传输层的协议报文。

    传输层最典型的协议,UDP,TCP以TCP为例。

    假设的一种传输层的协议格式:
    在这里插入图片描述

    TCP的数据报 = TCP报头 + 数据载荷(Payload,也就是一个完整的应用层数据),
    可以简单的把这个构造TCP报文的过程视为一个字符串拼接(这里拼的是二进制数据)

    TCP报头:包含了很多信息,最重要的就是“源端口”和“目的端口”,即发件人电话和收件人电话 接下来就会把这个传输层的数据包交给网络层

    网络层(操作系统内核)

    拿到了完整的传输层数据报,就会根据当前使用的网络层协议(例如IP),再次进行封装。把TCP数据报构造成IP数据报。还是再加上一个协议报头。

    假设的一种网络层的协议格式:
    在这里插入图片描述

    IP数据报 = IP协议报头 + 载荷(完整的TCP/UDP的数据报)
    IP报头:包含了很多信息,最重要的就是源IP和目的IP,相当于发件人的地址和收件人的地址。 接下来网络层就会把这个IP数据报交给数据链路层。

    数据链路层(驱动程序)

    在刚才IP数据报基础上,根据当前使用数据链路层协议,构造成一个数据链路层的数据报,典型的数据链路层的协议叫做以太网,就会构造一个“以太网数据帧”

    假设的一种以太网数据帧格式:
    在这里插入图片描述

    以太网数据帧 = 帧头 + IP数据报 + 帧尾
    帧头:最重要的信息是接下来要传给的设备地址是啥
    帧尾:校验

    IP协议的报头和帧头的区别:

    IP协议里面的地址写的是起点和终点(西安和安广镇)
    以太网数据帧帧头写的是接下来一个相邻节点的地址,随着数据往下一个设备转发,帧头的地址一直在发生改变。

    例如:
    我人在西安,这里的地址写的是 西安/长春
    我人在长春,这里的地址写的是 长春/白城
    我人在白城,这里的地址写的是 白城/安广

    数据链路层又会把这个数据交给物理层

    物理层(硬件设备)

    负责根据刚才的以太网数据帧(其实就是一组01),变成高低电平通过网线传输出去,或者变成高频/低频的电磁波,通过光纤/无线的方式传播出去。
    到了这一步,书库就已经离开当前主机了,前往了下一个设备,下一个设备可能是交换机或者是路由器等其它设备。

    分用过程:

    物理层(硬件设备,网卡)

    主机B的网卡感知到了一组高低电平,将这组电平翻译成01数据,然后这一串01就是一个完整的以太网数据帧。
    物理层就把这个数据交给了数据链路层。

    数据链路层(驱动)

    对这个以太网数据帧进行解析,去掉帧头和帧尾,取出里面的IP数据报,然后交给网络层。

    网络层(操作系统内核)

    对这个IP数据报的数据进行解析,去掉IP协议报头取出TCP数据报再交给传输层。

    传输层(操作系统内核)

    对这个TCP数据报进行解析,去掉TCP报头,取出里面的数据载荷交给应用层。

    应用层(应用程序)

    调用socket API从内核中读取到这个应用层数据报,再按照应用层协议进行解析,根据解析结果显示到窗口上。

    上述只是讨论到了起点和终点,中间经过的交换机和路由器:
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    中断处理过程的压栈问题
    大模型交互-超拟人合成
    个人如何申请发明专利,需要的资料有哪些
    跨国制造商部署SD-WAN提升全球业务案例分析
    python 执行cmd命令,输出日志的几种写法
    窗口看门狗
    MongoDB中ObjectId获取时间
    Windows10家庭版安装docker toolbox的坑
    忆联分布式数据库存储解决方案,助力MySQL实现高性能、低时延
    分享篇:我用数据分析做副业
  • 原文地址:https://blog.csdn.net/weixin_46429649/article/details/126110597