网络协议-网络分层(物理层&数据链路层)

  • 网络分层概览

    在文章 网络协议基础概念中有提到过大致的网络分层,从这篇文章中可以知道按照国际标准是分了7层,但是按照我们实际开发按照TCP/IP协议分层总共四层,但是作为学术研究上来说最好是从五层开始分析也就是分为 物理层、数据链路层、网络层、运输层、应用层,一下文章主要就是按照这五层讲起,先看一下大致的这五层的数据形式以及分别用到的协议如下:

    序号 分层 协议 数据形式
    5 应用层(Application) FTP、HTTP、SMTP、DNS、DHCP 报文、用户数据
    4 运输层(Transport) TCP、UDP 段(Segments)
    3 网络层(Network) IP、ARP、ICMP 包(Packets)
    2 数据链路层(Data Link) CSMA/CD、PPP 帧(Frames)
    1 物理层(Physical) 比特流(Bits)
  • 物理层

    物理层定义了接口标准、线缆标准、传输速率、传输方式等

    通俗点说平时我们办理的宽带是电话线如何还是光纤入户,我们路由器上的接口是百兆接口还是千兆接口,设备之间传输的信号是什么信号比如电话线入户传输过来的是模拟型号然后需要调制解调器转换成数字型号然后再传输到我们的联网设备上,光纤传输的就是光信号,再比如我们使用的传输介质,有的是多条信道,有的是单工信道这些都是有物理层所决定的。

    总结上述:物理层的作用其实就是解决两台服务器之间的通信问题,通过电缆(可以是光纤可以是电话线可以是网线(每种线的传输的信号又不同没传输的信道也有可能不同))在两台机器间简历一个理想的比特流传输通道

  • 数据链路层

    链路:从1个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点如下图所示: image.png 这就算是两个链路(集线器不属于数据链路层也就是不会对数据进行处理)

    数据链路:在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输

    上文说到物理层是解决两个机器的通信问题,数据链路层就是解决如何正确的传输,传输规则,总结一下就是解决下面是哪个问题:

    1. 首先要解决这个包是谁发的,然后谁去接收
    2. 然后就是如果大家都在发送产生混乱怎么办,谁先发谁后发的规则
    3. 发送的过程中出错了怎么办

    先说第二个问题,学名叫做多路访问这里引用一下刘超老师在趣谈网络协议文章中举的一个例子就是车管所车辆管控的例子,解决方式有三种:

    1. 分多个车道,每个车道一个车,各走各的,这个再计算机网络里面叫做信道划分
    2. 单双号限行,这个在计算机网络里面叫做轮流协议
    3. 啥都不管又是就先发出,发现堵塞就回去,等错过高峰期再出发,这个叫做随机接入协议以太网就是用的这种方式

    这样就觉得了问题2

    再说第三个问题之前首先要知道的是在数据链路层上会将上一层的数据也就是数据包封装成帧,然后每个帧都会有一个首部和尾部(里面包含了帧开始和结束符),接收的是一个数据流,所以这时候就通过这个帧开始符帧结束符来判断是否是一个完整的帧如下图所示:(这里的图是引用其他博主的图) image.png

    解决第三个问题大概有以下几种方式:

    1. 透明传输(保证数据完整性)
      使用SOH作为帧开始符
      使用EOT作为帧结束符
      如果数据包中间出现了EOT、SOH、ESC、字符统统进行转义也就是需要字节填充如下图所示:(这里的图是引用其他博主的图) image.png
    2. 差错检验
      帧尾部除了有一个帧结束符还有一个FCS标识,而这个FCS是通过数据部分加上首部计算得出,接收端收到信息之后再用数据部分和首部计算和FCS做对比如果不一致这说明数据包有丢失、错误。 image.png

    最后是解决第一个问题,第一个问题比较简单其实就是将目标MAC地址源MAC地址封装在帧首部,但是如果不知道目标MAC地址这时候就需要发送一个广播地址去寻找,通俗点讲就是靠“吼”,问所有人这个IP是谁的,你的MAC地址是啥(也就是ARP协议),得到了目标MAC地址之后就封装到帧首部,这里拿以太网帧举例(如果传输技术使用的是以太网技术,封装成的帧就是以太网帧)最开始就是目标MAC地址然后是源MAC地址如下图所示: image.png 其中CRC就是用来差错检验的

猜你喜欢

转载自juejin.im/post/7039881532709797902