物理层_数据链路层

网络互连模型

客户端向服务器发送请求 会经过层层封装 然后服务器再进行拆包

ISO在1985年制定了网络互连模型

OSI参考模型 具有七层结构

TCP/IP协议

学习研究

物理层

  • 物理层定义了接口标准 线缆标准 传输速率 传输方式等
  • 模拟信号( Analog Signal)

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

    • 离散的信号,不适合长距离传输
    • 抗干扰能力强。收到干扰时候波形失真可以修复
  • 数据通信模型

    • 局域网通信模型

    网线一般不超过一百米

    • 广域网通信模型

信道

信道:信息传输的通道 一条传输介质上 (比如网线)可以有多条信道

  • 单工通信
    • 信号只能往一个方向传输 任何时候都不能够改变信号的传输方向
    • 比如无线电广播
  • 半双工通信
    • 信号可以双向传输 但必须是交替进行 同一时间只能往一个方向传输
    • 比如对讲机
  • 全双工通信
    • 信号可以同时双向传输
    • 比如打电话

数据链路层(Date Link)

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

封装成帧

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

透明传输

  • 使用SOH(Start Of Header)作为帧开始符
  • 使用EOT(End Of Transmission)作为帧结束符
  • 在数据部分如果出现了 SOH,EOT 就需要进行转义

当发现数据中出现SOH,EOT 就填充字节ESC 如果发现就是转义字符ESC也进行填充

因为在接收端要去掉转义字符 所以ESC也要填充 否则就会把ESC去掉

差错检验

  • FCS是根据数据部分+首部计算得出的

  • 如果数据发生变化FCS会变化

CSMI/CD协议

  • 载波侦听多路访问/冲突检测
  • 使用了CSMA/CD的网络可以称之为是以太网 传输的是以太网帧
    • 格式有 Ethernet V2标准 IEEE的802.3标准
    • 使用最多的是Ethernet V2标准
  • 为了能够检测正在发送的帧是否产生了冲突 以太网的帧至少要64字节
    • 帧要足够长才能检测
    • 不够64会填充
  • 用交换机组建的网络已经支持全双工通信 不需要再使用CSMA/CD 但他传输的帧依然是以太网帧
    • 所以用交换机组建的网络 依然可以叫以太网

Ethernet V2帧的格式

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

Ethernet V2 标准

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

PPP协议

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

字节填充

  • 将0X7E替换成0X7D5E
  • 将0X7D替换成0X7D5D

网卡

网卡工作在物理层与数据链路层

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