shuguang's blog

环境决定基础,选择决定价值,努力决定方向。

网络协议 - 物理层和数据链路层

  • 本文主要介绍网络互联模型中数据在物理层和数据链路层传输方式以及相关协议。

#网络互联模型

  • 网络分层

    网络分层

  • 物理层

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

  • 数字信号、模拟信号

    • 模拟信号(Analog Signal)
      • 连续的信号、适合长距离传输
      • 抗干扰能力差,受到干扰时波形变形很难纠正
    • 数字信号(Digital Signal)
      • 离散的信号、不适合长距离传输
      • 抗干扰能力强,受到干扰时波形失真可以修复

  • 数据通信模型

    • 局域网通信模型

      • PC - 数字信号 | 网线 - 集线器 | 交换机 - 数字信号 | 网线 - PC
      • 注意:网线传输的是数字信号,只适用于短距离传输,一般不超过100米。
    • 广域网通信模型

      • PC - 数字信号 | 网线 - 调制解调器 - 模拟信号 | 电话线 - 调制解调器 - 数字信号 | 网线 - PC

      • PC - 数字信号 | 网线 - 光电转换器 - 光信号 | 光纤 - 光电转换器 - 数字信号 | 网线 - 2、信道(单工、半双工、全双工)PC


#信道(单工、半双工、全双工)

  • 信道
    • 信息传输的通道,一条传输介质上(比如网线)上可以有多条信道
    • 单向通信
      • 信道只能往一个方向传输,任何时候都不能改变信道的传输方向(无线电广播、有线电视广播)
    • 半双工通信
      • 信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输(对讲机)
    • 全双工通信
      • 信号可以同时双向传输(打电话)

  • 链路:从1个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点
  • 数据链路:在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输;不同类型的数据链路,所用的通信协议可能是不同的
  • 举例:
    • 广播信道:CSMA/CD协议(比如同轴线缆、集线器等组成的网络)
    • 点对点信道:PPP协议(比如两个路由器之间的信道)
  • 数据链路的三个基本问题:
    • 封装成帧
      • 帧(Frame)的数据部分: 网络层传递下来的数据包 (IP数据包,Packet
      • 最大传输单元MTU(Maximum Transfer Unit)(IP数据包,Packet):
      • 每一种数据链路层协议都规定了所能够传送的帧的数据长度上限
      • 以太网的MTU为1500个字节
    • 透明传输
      • 数据部分中出现SOH、EOT,就需要转义(加上ESC转义)
      • 转义过程是透明。
      • 使用 SOH(Start Of Header)作为 帧开始符
      • 使用 EOT(End Of Transmission)作为 帧结束符
    • 差错检验
      • 每一帧包括帧开始结束符、帧结束符、帧的数据部分、数据链路层首部和FCS.
      • FCS(Frame Check Sequence)是根据**帧的数据部分*- + 数据链路层的首部计算得出的,源站到目标站的数据传输都会计算FCS用来检验数据是否出错。

#CSMA/CD协议

  • CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
  • 以太网帧的格式:
    • Ethernet V2标准、IEEE的802.3标准。

      • 其中使用最多的是:Ethernet V2标准

      • 为了检测以太网帧是否产生了冲突,以太网的帧至少要64字节。(正常传输需要两个信道长度来区分是否为冲突信号,保证在传输一个信道数据过程中,收到冲突信号时,自身还在发送数据,进而能判断时冲突信号)

      • 用交换机和集线器传输的数据都叫以太网帧(其中交换机组建的网络已经支持全双工通信,不再使用CSMA/CD协议,交换机的每个端口就是一个冲突域)。

    • Ethernet V2帧的格式
      Ethernet V2帧的格式

      • 首部:目标MAC + 源MAC + 网络类型(IPv4, IPv6)
      • 以太网帧:首部 + 数据 + FCS
      • 数据的长度至少:64-目标MAC(6)-源MAC(6)-类型(2)-FCS(4) = 46字节

    • Ethernet V2标准
      Ethernet V2标准

      • 当数据部分小于46字节,会在数据后面添加一些字节填充,接收端会将添加的字节去掉。
      • 以太网帧数据部分是46到1500字节
      • 以太网帧的长度:64到1518字节为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要 64 字节
        1518字节 = 目标MAC(6) + 源MAC(6) + 网络类型(2) + 数据(1500) + FCS(4)

#PPP协议

  • PPP(Point to Point Protocol)协议是在点到点链路上承载网络层数据包的一种链路层协议,由于它能够提供用户验证、易于扩充,并且支持同/异步通信,因而获得广泛应用。

  • 帧开始符、帧结束符:0x7E

  • Address 字段:图中的值是 0xFF,形同虚设,点到点信道不需要源MAC、目标MAC地址

    • Control 字段:图中的值是 0x03,目前没有什么作用
    • Protocol 字段:内部用到的协议类型
      PPP帧的格式
  • PPP协议字节补充

    • 将 0x7E 替换成 0x7D5E
      • 将 0x7D 替换成 0x7D5D
        PPP帧的格式补充

#网卡

  • 网卡工作在(物理层和数据链路层)这两层。
  • Wireshark抓到的帧没有FCS,是因为抓到的是校验通过的帧(帧尾的FCS被硬件去掉)
    网卡的工作