计算机网络 - 数据链路层

参考资料

数据链路层概述

数据链路层,主要研究的是在同一个局域网中,分组如何从一台主机传送到另外一台主机,但并不经过路由器。

基本概念:

  • 链路(Link):从一个节点到一个相邻节点的一段物理线路,而中间没有任何其他交换节点。
  • 数据链路(Data Link):数据链路的构成是指把实现通信协议的硬件和软件加到链路上。
  • 数据链路以为单位传输和处理数据。

1

数据链路层的三个重要问题:

  1. 封装成帧
  2. 差错检测
  3. 可靠传输

数据链路层的三个基本问题:

  1. 封装成帧
  2. 透明传输
  3. 差错检测

封装成帧

封装成帧是把网络层交付的协议数据单元,添加帧头和帧尾的操作,称为封装成帧,主要目的是为了在链路上以帧为单元传输数据,从而实现数据链路层本身的功能。

2

在物理层中会将构成帧的各比特,转换成电信号交给传输媒体,为了便于接收方数据链路层从物理层交付比特流中提取出一个一个的帧,因此需要帧头跟帧尾来做一个帧定界,来实现从比特流中提取出一个一个的帧。

ppp帧的格式:

3

在帧头和帧尾各有一个帧定界编制,由1子节组成,其01111110(7E)和01111110所包裹的数据就是一个帧,数据链路层可以识别这个帧定界从而提取出一个帧。

MAC帧的格式:

4

MAC协议是没有帧定界标志的数据链路层协议:其帧的提取由物理层添加的前导码来识别开始,并且按照稳定的时钟周期,在每一帧的结束会由96比特发送时间的间隔,以此来识别一个帧的结束。

前导码 = 帧开始定界符 + 前同步码

两者的区别:

计算机网络按传输技术可分为广播网络和点对点网络。广播网络中所有机器共享通信信道,而点对点网络中机器是一对一连接起来的,一条信道链路只对应两台机器。
以太网与点对点协议(Point-to-Point Protocol)均是数据链路层协议。区别在于以太网被设计用于广播网络,ppp协议用于点对点网络。看帧格式就能明显看出区别来,以太网帧中有目标Mac地址,用于在多路信道确认目标端机器。而点对点协议中就没有目标mac,点对点链路两端的主机事先就已经知道链路那头是哪个ip了。

现在全世界使用得最多的数据链路层协议就是点对点协议。用户使用拨号电话线接入因特网时,一般都是使用PPP协议。
1
2
3
4

透明传输:

概念: 封装抽象出具体的传输逻辑,只暴露出传输的功能。
在此指的是数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

传输数据
在传输数据过程中可能会出现数据比特流与帧定界标志符一样的情况,造成误读定界标志导致传输错误。
在这种情况下,说明数据链路层对于数据有了一个要求:不能存在与定界符一样的数据编码。这就代表着对上层交付的数据有了限制,这就不是透明传输。
因此为了实现透明传输,需要在数据链路层对数据进行处理,实现透明传输的功能。

在数据链路层中会有对数据的处理来实现透明传输功能,例如:字节填充、比特填充,主要思路是在每一个传输数据中出现的定界符进行转义,防止误读。
1
2
3
4
5
6
7
8
9

字节填充:适用于面向字节的异步链路,主要步骤:

比特填充:适用于面向比特的同步链路,主要步骤:

差错检测

实际的通信过程中都不是理想的,在传输过程中可能会产生比特差错:1 可能会变成 0, 而 0 也可能变成 1。

在一段时间内,传输错误的波特率站比特总数的比率称为误码率BER(Bit Error Rate)

使用差错检测码来检测数据在传输过程中是否出现差错是数据链路层的一个重要问题。

5

1.发送方会基于发送的数据和检错算法计算出检错码,并放在帧尾。 2.接收方主机根据数据链路层放在帧尾的检错码和检错算法来判断传输过程是否有错误。

常用的检验方法有两种:奇偶检验 和 循环冗余校验CRC(Cyclic Redundancy Chek)

奇偶检验:

6

循环冗余校验:

循环冗余检验是一种可靠性非常高的校验方法,主要有以下几步:

  1. 收发双方约定好一个生成多项式G(x)
  2. 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后方一起传输
  3. 接收方通过生成多项式来计算收到的数据是否出现误码

可靠传输

尽管误码是不能完全避免的,但若能实现发送方发送什么,接收方就能收到什么,就称为可靠传输。

一般情况下,有线链路的误码率比较低,为了减小开销,不要求数据链路层向上提供可靠传输服务。即使出现了误差,可靠传输的问题由其上层解决。对于无线链路,误码率较高,因此要求数据链路层必须向上层提供可靠传输服务。比特差错知识传输差错中的一种,从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序、分组重复

可靠传输的实现机制:

  1. 停止-等待协议SW(Stop-and-Wait)
  2. 回退N帧协议GBN
  3. 选择重传协议SR

停止-等待协议SW(Stop-and-Wait)

停止等待协议有4个最基本原则:

  1. 确认与否认
  2. 超时重传
  3. 确认丢失
  4. 确认迟到

7

————————确认与否认——————————————>超时重传——————————————>确认丢失——————————————>确认迟到

停止-等待协议的信道利用时间:

  • TD:发送时间,发送时延

  • RTT:往返时间

  • TA:发送确认分组时间,发送时延

8

回退N帧协议

回退N帧协议可以理解为停止等待协议的一种优化,在相同的时间内,使用停止-等待协议的发送方只能发送一个数据分组,而采用流水线传输的发送方,可以发送多个数据分组。

回退N帧协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送数据分组的个数。

9

知识点:

  • 回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议

  • 在协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议

  • 当通信线路质量不好时,回退n帧的效率会不比停止等待协议好。

  • 累计确认:接收方不一定要对收到的数据分组逐个发送确认,而可以在收到几个数据分组后(由具体实现),对按序到达的最后一个数据分组发送确认,ACKn表示序号为n及以前的所有数据分组都已正确接收。

10

选择重传协议SR

对于选择重传协议,在回退n帧协议的基础上,为了进一步提高传输性能,可设法只重传出现错误的数据分组。因此,接收窗口的尺寸WR不应在等于1,应该大于1,以便接收方先收下失序到达但无误码并且序号落在接收串口内的那些数据分组,等到所缺分组收齐后再一起送交上层。

对于选择重传协议,为了使发送方仅重传出现差错的分组,接收方不能再采用累计确认机制,而要选择对每个正确接收到的数据分组进行逐一确认。

11

12

点对点协议PPP

  • 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议

  • PPP协议是因特网工程任务组IEIF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]

  • PPP协议是数据链路层使用的一种协议,它的特点是:简单;只检测差错,而不是纠正差错;不使用序号,也不进行流量控制;可同时支持多种网络层协议

13

  • PPPoE 是为宽带上网的主机使用的链路层协议

  • PPP协议也广泛应用于广域局域网路由器之间的专用线路。

PPP协议标准办法

PPP协议为在点对点链路传输各种协议数据报中提供了一个标准办法,主要由三部分组成:

  1. 对各种协议数据报的封装方法(封装成帧)
  2. 链路控制协议LCP ——用于建立、配置以及测试数据链路的连接
  3. 一套网络控制协议NCPs——其中的每一个协议支持不同的网络层协议

PPP协议的地位:

14

PPP协议的帧格式:

15

PPP协议解决透明传输问题,前面已经讲解,不再赘述。

PPP协议的工作状态:

16

数据媒体接入控制

数据媒体接入控制(Medium Access Control)简称MAC,其要着重考虑的问题就是如何协调多个发送和接收站对一个个共享传输媒体的占用,也就是解决冲突的问题。

17

  • 静态划分信道
  • 信道复用技术
    • 频分复用FDM:频分复用的所有用户在同样的时间占用不同的带宽资源。
    • 时分复用TDM:时分复用的所有用户在不同的时间占用同样的频带宽度。
    • 波分复用WDM:使用一根光纤同时传输多个频率很接近的光载波信号。
    • 码分复用CDM:每个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。

动态接入控制

18

随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。

随机接入:

以太网(Ethernet)是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网(Ethernet)的技术标准
以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确认。目的站收到有差错帧就把它丢弃,其他什么也不做。
1
2

最初的以太网是将许多计算机都连接到一根总线上。易于实现广播通信。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。

19

但是在多个主机公用一个总线时,避免不了会出现碰撞的问题。如何协调总线上个主机的工作,尽量避免碰撞是一个必须解决的重要问题。因此就出现了载波监听多址接入/碰撞检测 CSMA/CD协议。用于解决碰撞问题。

随机接入分为总线型局域网和无线型局域网。

  • 总线型局域网使用的是CSMA/CD协议(Carrier Sense Multiple Access / Collision Detection,载波监听多址接入/碰撞检测)。
  • 无线型局域网使用的是CSMA/CA协议(Carrier Sense Multiple Access / Collosion Acoidance,载波监听多址接入/碰撞避免)。

CSMA/CD协议 工作原理:

  • 多址接入MA:多个主机连接在一条总线上,竞争使用总线;
  • 载波监听CS:发送帧前先检测总线,若总线空闲96比特时间,则立即发送;若总线忙,则持续检测总线直到总线空闲96比特时间后再重新发送;
  • 碰撞检测CD:边发送边检测碰撞,若检测到碰撞,则立即停止发送,退避一段随机时间后再重新发送。

在无线局域网中能不能使用CSMA/CD协议呢?

20

21

在无线局域网中,每个主机的作用域有限,不能做到像总线型局域网中信号传遍总线的情况。因此难以进行碰撞检测。

22

CSMA/CA协议中帧间间隔:

23

CSMA/CA协议的工作原理:

当某个站点发送数据帧时:
(1)先检测信道(进行载波侦听)。
(2)目的站若正确收到此帧,则经过时间间隔SIFS后,向源站发送确认帧ACK。
(3)所有其他站都设置网络分配向量NAV,表明在这段时间内信道忙,不能发送数据。
(4)当确认帧ACK结束时,NAV(信道忙)也就结束了。在经历了帧间间隔之后,接着会出现一段空闲时间,叫做争用窗口,表示在这段时间内有可能出现各站点争用信道的情况。
(5)争用信道比较复杂,因为有关站点要执行退避算法。
1
2
3
4
5
6

MAC地址、IP地址以及ARP地址

  • MAC地址是以太网的MAC子层所使用的地址,处于数据链路层

  • IP地址是TCP/IP体系结构网际层所使用的地址

  • ARP协议属于TCP/IP体系结构网际层,起作用是已知设备所分配到的IP地址,使用APR协议可以通过该地址获取到设备的MAC地址

数据包转发过程中IP地址与MAC地址的变化情况:

MAC地址: 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址,由于这类地址用于媒体接入控制MAC,因此这类地址称为MAC地址;

  • MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
  • MAC地址有时也被称为物理地址。

一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

IP地址:

24

  • IP地址在传输过程中不会发生变化。
  • MAC地址在发送过程中沿着主机的传输而变化。

ARP地址解析的工作过程:

  • 主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01; 主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02; 当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址。

以下为工作流程:

  • 第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
  • 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
  • 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
  • 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
  • 第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。