数据链路层

目的设计数据链路层的主要目的就是在原始的、有差错的物理线路的基础上,采取差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,以便向它的上一层——网络层提供高质量的服务。

要点:数据链路层的链路管理、数据帧封装、差错控制、流量控制这几项功能的实现原理,BSC、SDLC、HDLC和PPP这几种典型的数据链路层协议及二交换原理。

数据链路层基础

数据链路层和它下面的网络层其实作用一样,都是用来构建进行网络通信、访问的通道,只不过物理层构建的是一条物理通道,而数据链路层构建的是真正用于数据传输的逻辑通道。

主要功能和实现原理

向网络层提供透明、可靠的数据传输服务。
数据链路管理、封装成帧、透明传输、差错控制。

  • 数据链路层提供的服务类型

    • 有确认的面向链接服务
      在提供服务时,必须先建立好双方通信链接,在提供服务时,必须要求对方确认后才进行。
      存在三个阶段:数据链路建立,数据传输,数据链路释放等阶段。
      占用一条专门的通信链路,是非常可靠的链接服务。
      例如:SLIP(串行线路协议)、PPP(点对点协议)、PPPoE(基于以太网的点对点协议)、HDLC(高级数据链路控制协议)

    • 有确认的无连接服务
      接收端接收到每一个数据帧时都向发送端确认,进行数据传输前不需要建立专门的数据链路的。(实际上是因为数据链路已近建立起来,永久存在)
      虽然不用建立专门的链接,但是可以保证数据可靠传输。
      例如:令牌环网,令牌总线网,各种无线通信系统。

    • 无确认的无连接服务
      接收端结束到数据帧不需要进行确认,也不需要建立链接。
      看似不可靠,但是是建立在可靠通信线路基础上,数据传输仍十分可靠。
      例如:以太网。

数据封装成帧和透明传输

  • 网络层传输的包(packet,又称分组),在数据链路层中传输的是“帧”(frame)。数据包到达数据链路层后加上数据链路层的协议头和协议尾就构成了一个完整的帧。

  • 由数据包封装的数据帧其大小是受对应的数据链路层协议的MTU(最大传输单元)限制的。例如以太网数据链路层封装网络层IP包的MTU值为1500字节(数据部分不超过1500)还有最小限制,例如以太网封装的IP包最小值为46字节,如果小于,则用特殊字符填充。

比特流的帧组装及透明传输原理

在发送端数据链路层中的帧到达物理层后就会以比特位为单位进行传输,而不是以帧。 接收端物理层把比特流向数据链路层传输,到达后又要将比特流封装成数据帧,这就是帧同步问题。

  • 字节计数法
    以一个特殊字符代表一个帧的起始,并以一个专门的字段标识当前帧长度。

  • 字符填充收尾界定法
    用特定的字符界定一个帧的起始与结束。为了防止与相同字符被误判成帧头和帧尾,可以在帧头填充一个转义控制字符。

  • 比特填充的收尾界定法
    在收尾插入特定的比特串(例如:01111110),为了防止误判,传输的数据如果连续出现五个“1”则在后面插入一个“0”。
    例如:0110111111011111001 变为:01111110 011011111010111110001 01111110
    很容易由硬件实现,性能优于字符填充方式。

  • 违法编码法
    只适用于采用冗余编码的特殊编码环境。
    例如:曼切斯特编码中利用“高-高”电平和“低-低”电平来界定帧的起始与终止。

差错控制

  • 差错检测
    一般通过对差错编码进行校验,常见的校验方法有奇偶校验码(Parity Check Code,PCC)、循环冗余校验(Cyclic Redundancy Check,CRC)两种。

    • 奇偶校验法:在传输的二进制最后专门设置一个奇偶校验位,来记录代码中的“1”的个数是基数还是偶数。
    • 循环冗余校验:是在数据后加上一段通过该数据生成的固定位数的校验法。
  • 差错纠正
    针对不同的传输类型采取了不同的纠错方法。
    对于面向字符的,一般采用“反馈检测”的方法来进行纠错。接收端收到后向发送端发送一个相同的帧,发送端判断是否正确,如果正确则不发消息,如果错误,则发送DEL字符,提示接收端删除对应的帧。
    但是这种传输方法效率低。所以,一般采用“自动重发请求”(ARQ法)。先发送带冗余检测码的数据,接收端对数据帧进行错误检测,如果错误,则返回请求重发的响应(不用返回全部帧)。

    • 连续重发请求方案:发送端可以连续发送一些列数据帧,不同等前一帧被确认。

    • 海明码纠错:对错误位进行取反。

流量控制

  • 基于反馈的流量控制方案
    接收端收到一个数据帧后,要向发送端发送确认帧,发送端继续发送数据。发送端启动定时器,规定时间内没有确认帧则重发。

  • 基于流速的流量控制方案
    限制发送端一次可以发送多少个数据帧,从而控制流量。

  • XON/XOFF流量控制方案
    当接收端认为不能继续接收数据时,会向发送端发送一个XOFF控制字符,当可以继续接收时,发送XON控制字符。

  • 滑动窗口机制
    当一个处于缓存中的帧收到了确认帧,则将这个帧删掉,将空间给其他帧。

面向字符的PPP同步协议

  • BSC,SDLC,HDLC都属于局域网中的数据链路层协议,而PPP(Point-to-Point Protocol,点对点协议)是一种应用非常广泛的局域网数据链路协议。
  • 在链接速率上可以远高于SLIP,最高128kbps
  • 提供了协议类型字段和帧校验序列(FCS)字段。
    • 地址:为固定的11111111(0xFF)标准广播地址。
    • 控制:只有一种帧类型,UI(无编号信息)帧,无需接收端收到进行确认,固定为00000011(0x03)。
    • 协议:除了可以封装IP(0x0021)协议,还可以封装其他多种协议包,例如IPX、AppleTalk等。
    • FCS:使用16位的循环冗余校验计算信息字段中的校验和。
8 8 8 16 可变 16~32 8
标志起始 地址 控制 协议 信息 FCS 标志结束
  • 提供了一整套方案来解决数据链路建立、维护、拆除、上层协议协商、认证等问题:

    • 链路控制协议(LCP):用于建立,测试,配置和管理数据连接。
    • 网络控制协议(NCP):协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议。
    • 口令认证协议(PAP):为PPP提供用户认证功能,可以确保PPP链接的安全性。
    • 质询握手认证协议(CHAP):为PPP提供用户认证功能,可以确保PPP链接的安全性。
  • PPP协议也衍生出新的应用,例如ADSL(Asymmetrical Digital Subscriber Loop,非对称数据用户环境),还有与其他的协议共同派生出了符合宽带接入要求的新协议:PPPoE(PPP over Ethernet),PPPoA(PPP over ATM)。

  • 利用以太网(Ethernet)资源,在以太网上运行PPP来进行用户认证。完成了ADSL的接入要求。
  • 在ATM(异步传输模式)网络上运行PPP协议来管理用户认证的方式。不同在于它在ATM网络上运行,而PPPoE在以太网上运行。

PPP的PAP/CHAP身份认证

  • PPP身份认证
    (单向认证)用明文认证,认证包括两次握手,客户端向服务器发送一个认证请求,PAP服务器端收到后和数据库匹配,返回认证结果(Y/N,ACK/NAK)。如果不成功会多次尝试,最多4次。
  • CHAP身份认证
    采用三次握手机制:认证方要求被认证方提供认证信息->被认证方提供认证信息->认证方给出结果。
    不是明文密码,而是进过MD5之类的摘要加密产生的密钥。

数据链路层主要网络设备

计算机网卡

以太网卡:

  • 接口划分:
    • PCI(最常见的)接口
    • 微型PCI(PCMCIA)接口
    • PCI-X,PCI-E(常用于服务器)
  • 主机接口方面:
    • RJ-45类型(水晶头)(双绞线)
    • ST,SC,FC,LC四种,SC和LC使用最广(光纤)

WLAN网卡:

  • 接口:PCI,USB

网桥及其工作原理

网桥的含义

用来链接不同网段的计算机网络设备,比集线器性(Hub)能更好后来被交换机(Switch)取代。
可链接不同网段的二层网络设备,不只可以类似中继器一样将信号进行放大,而且可以隔离MAC冲突。

  • 作用:

    • 可基于物理网段的MAC地址进行学习
    • 可以隔离冲突域
  • 工作原理:

    • 起初网桥缓存中没有任何MAC地址
    • 当收到广播和数据帧被某个PC接收后,也会把相应的MAC地址记录在缓存中
    • 当源MAC和目的MAC都有时,进行判断是否通过网桥。

二层交换机

交换机,可以说是集线器和网桥的升级换代产品,因为既能有集线器的集中链接功能,又有网桥的数据交换功能。

  • 特点:

    • 具有多个交换端口
    • 数据转发效率更高
    • 更强的MAC地址自动学习能力
    • 每个端口都有独立的背板信道带宽,可以实现全双工谁传输
  • 分类:

    • 网络类型划分:标准(10Mbps),快速(100Mbps),千兆(1000Mbps),十千兆(10000Mbps)
    • 结构划分:固定端口式的和模块化式的
    • 是否支持网管功能:支持(有Console控制端口),不支持(傻瓜式)
  • 原理

    • CAM表(MAC地址与端口映射表)可以通过多种途径获得
      • 静态配置
      • 动态学习
      • 可以通过多种协议,如IGMP嗅探,GMRP协议等方式
    • CAM表不是一成不变的,由定时器控制,定时器为0时删除,每次转发恢复定时器初始值。