小码哥《网络协议从入门到底层原理》笔记(五):物理层、数据链路层

1,263 阅读4分钟

我的Github地址

小码哥《恋上数据结构与算法》笔记

极客时间《iOS开发高手课》笔记

iOS大厂面试高频算法题总结

iOS面试资料汇总

网络互连模型

  • 为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型
    • OSI 参考模型(Open System Interconnect Reference Model),具有 7 层结构

请求过程

网络分层

物理层

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

数字信号,模拟信号

  • 模拟信号(Analog Signal)
    • 连续的信号,适合长距离传输
    • 抗干扰能力差,受到干扰时波形变形很难纠正

  • 数字信号(Digital Signal)
    • 离散的信号,不适合长距离传输
    • 抗干扰能力强,受到干扰时波形失真可以修复

数据通信模型

信道(Channel)

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

数据链路层

  • 链路:从一个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点
  • 数据链路:在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输
    • 不同类型的数据链路,所用的通信协议是可能不同的
      • 广播信道:CSMA/CD协议(比如同轴电缆,集线器等组成的网络)
      • 点对点信道:PPP协议(比如2个路由器之间的信道)
  • 数据链路层的3个基本问题:
    • 封装成帧
    • 透明传输
    • 差错检验

封装成帧

  • 帧(Frame)的数据部分
    • 就是网络层传递下来的数据包(IP数据包,Packet)
  • 最大传输单元MTU(Maximum Transfer Unit)
    • 每一种数据链路层协议都规定了所能够传送的帧的数据长度上限
    • 以太网的MTU为1500个字节

透明传输

差错检验

CSMA/CD协议

  • CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
    • 载波侦听多路访问/冲突检测
  • 使用了CSMA/CD的网络可以称为是以太网(Ethernet),它传输的是以太网帧
    • 以太网帧的格式有:Ethernet V2标准,IEEE的802.3标准
    • 使用最多的是:Ethernet V2标准
  • 为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少有64个字节
  • 用交换机组建的网络,已经支持全双工通信,不需要再使用CSMA/CD协议,但它传输的帧依然是以太网帧
    • 所以用交换机组件的网络,依然叫做以太网

Ethernet V2帧的格式

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

Ethernet V2标准

  • 当数据部分的长度小于46字节的时候
    • 数据链路层会在数据的后面加入一些字节填充
    • 接收端将会把添加的字节去掉
  • 长度总结:
    • 以太网帧的数据长度:46~1500bytes
    • 以太网帧的长度:64~1518bytes(目标MAC + 源MAC + 网络类型 + 数据 + FCS)

网卡

  • 网卡接收到一个帧,首先会进行差错校验,如果校验通过则接收,否则丢弃
  • Wireshark抓到的帧没有FCS,因为它抓到的是差错校验通过的帧,(帧尾的FCS会被硬件去掉)
  • Wireshark抓不到差错校验失败的帧

PPP协议

  • Address字段:图中的值是0xFF,形同虚设,点对点信道不需要源MAC,目标MAC地址
  • Control字段:图中的值是0x03,目前没有什么作用
  • Protocol字段:内部用到的协议类型
  • 帧开始符,帧结束符:0x7E

字节填充

  • 0x7E替换成0x7D5E
  • 0x7D替换成0x7D5D