计算机网络——数据链路层

概述

从数据链路层来看,两个主机之间的通信,可以看成是在几段不同的链路上的通信组成的。

链路(Link):就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。

数据链路(Data Link):是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。

在数据链路层上传输的数据包,又称为。也就是说,数据链路层以帧为单位传输和处理数据。

数据链路层的三个重要问题:封装成帧、差错检测、可靠传输。

封装成帧

封装成帧:数据链路层给上层交付的协议数据单元添加帧头帧尾使之成为帧。

帧头和帧尾中包含有重要的控制信息,帧头和帧尾的作用之一就是帧定界

透明传输:是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

  • 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
  • 面向比特的物理链路使用比特填充的方法实现透明传输。

为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元 MTU(Maximum Transfer Unit)。

差错检测

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

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

奇偶校验

在待发送的数据后面添加 1 位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。

  • 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码
  • 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检)

由于漏检率较高,因而计算机网络的数据链路层一般不会采用这种检测方法。

循环冗余校验 CRC(Cyclic Redundancy Check)

  1. 收发双方约定好一个生成多项式 G(x);(算法要求生成多项式必须包含最低次项,即 1)
  2. 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
  3. 接收方通过生成多项式来计算收到的数据是否产生了误码。

检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误

要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较小使用

循环冗余检验 CRC 有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层

在计算机网络中通常采用我们后续课程中将要讨论的检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务。

可靠传输

基本概念

出现误码(比特错误)后的处理取决于数据链路层向上层提供的服务类型:

  • 不可靠传输服务:仅仅丢失有误码的帧,其他什么也不做;
  • 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。

一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。

无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。

比特差错只是传输差错中的一种。从整个计算机网络体系结构来看,传输差错还包括分组丢失分组乱序以及分组重复。(对于数据链路层,分组指帧)梦幻联动:基因突变

分组丢失、分组乱序与分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。

实现机制

  • 停止——等待协议(SW)
  • 回退 N 帧协议(GBN)
  • 选择重传协议(SR)

这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到计算机网络体系结构的各层协议中。

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

发送方每发送完一个数据分组后,就停止发送下一个数据分组,等待来自接收方的确认分组(ACK)或否认分组(NAK)。若收到确认分组(ACK),则可继续发送下一个数据分组;若收到否认分组(NAK),则重发之前发送的那个数据分组。

  • 针对发送数据分组丢失,使用超时重传。(超世纪时期的重传时间略大于“从发送方到接收方的平均往返时间”)
  • 针对接收方的确认分组(ACK)丢失,使用一个比特(与上一次不同即可)对分组进行编号。
  • 针对确认分组(ACK)迟到,对确认分组(ACK)也进行编号。

对于数据链路层(点对点信道),往返时间较固定,不必为确认分组(ACK)编号。

停止——等待协议的信道利用率

\(T_D(Data)\):发送方发送数据分组所耗费的发送时延。

\(RTT\):收发双方之间的往返时间。

\(T_A(Answer)\):接收方发送确认分组(ACK)所耗费的发送时延。

\(U = \frac{T_D}{T_D + RTT + T_A}\)(忽略了处理时延)

\(T_A\)远小于\(T_D\),可忽略;当\(RTT\)远大于\(T_D\)时(例如使用卫星链路),信道利用率\(U\)会非常低。

回退 N 帧协议(GBN)(Go-Back-N)

针对停止——等待协议,采用流水线传输可提高信道利用率。

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

  1. 采用 3 个比特给分组编序号,即序号 0~7;
  2. 发送窗口的尺寸\(W_T\)的取值:\(1 < W_T \leq 2^3 - 1\)
  3. 接收窗口的尺寸\(W_R\)的取值:\(W_R = 1\)。(可以按序接收数据分组)

累计确认:接收方在收到几个数据分组后,对按序到达的最后一个分组发送确认\(ACKn\)表示序号\(n\)及以前的所有数据分组都已正确接收。

累计确认优点:即使确认分组丢失,发送方也可能不必重传。

当通信线路质量不好时,回退 N 帧协议的信道利用率并不比停止——等待协议高。

选择重传协议 SR(Selective Request)

回退 N 帧协议的接收窗口尺寸\(W_R\)只能等于\(1\),因此接收方只能按序接收正确到达的数据分组

一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码),这是对通信资源的极大浪费。

为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸\(W_R\)不应再等于\(1\)(而应大于\(1\)),以便接收方先手下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层,这就是选择重传协议

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

  1. 采用 3 个比特给分组编序号,即序号 0~7;
  2. 发送窗口的尺寸\(W_T\)的取值:\(1 < W_T \leq 2^{(3-1)}\)
  3. 接收窗口的尺寸\(W_R\)的取值:\(W_R = W_T\)

发送方每按序收到一个确认分组,发送窗口就向前滑动一个位置。

点对点协议 PPP(Point-to-Point Protocol)

点对点协议 PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议。现在的 PPP 协议已称为因特网的正式标准。

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

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

帧格式

F A C P Data FCS F
标志字段 地址字段 控制字段 协议字段 数据字段 帧检验序列字段 标志字段
1 字节 1 字节 1 字节 2 字节 不超过 1500 字节 2 字节 1 字节

(F、A、C、P)为帧的首部,(FCS、F)为帧的尾部

标志(Flag)字段:PPP 帧的定界符,取值为\(0 \times 7E\)

地址(Address)字段:取值为\(0 \times FF\),预留(目前没有什么作用)

控制(Control)字段:取值为\(0 \times 03\),预留(目前没有什么作用)

协议(Protocol)字段:指明帧的数据部分送交哪个协议处理

  • 取值\(0 \times 0021\)表示:帧的数据部分为 IP 数据报
  • 取值\(0 \times C021\)表示:帧的数据部分为 LCP 分组
  • 取值\(0 \times 8021\)表示:帧的数据部分为 NCP 分组

帧检验序列(Frame Check Sequence)字段:CRC 计算出的检验位,用于检查 PPP 帧是否存在误码。

透明传输

PPP 协议实现透明传输的方法取决于所使用的链路类型

  • 面向字节的异步链路:字节填充法(插入“转义字符”)
  • 面向字符的同步链路:比特填充法(插入“比特 0”)

差错检测

使用 PPP 的数据链路层向上不提供可靠传输服务

媒体接入控制

  • 静态划分信道
    预先固定分配好信道,这类方法非常不灵活,对于突发性数据传输信道利用率会很低。通常在无线网络的物理层中使用,而不是在数据链路层中使用。
    • 频分多址
    • 时分多址
    • 码分多址
  • 动态接入控制
    • 受控接入(淘汰)
      • 集中控制
      • 分散控制
    • 随机接入

静态划分信道

复用(Multiplexing)是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。

随机接入——CSMA/CD 协议

早期以太网使用的奇数

载波监听多址接入/碰撞检测 CSMA/CD(Carrier Sense Multiple Access/Collision Detection)

曾经用于各种总线结构以太网和双绞线以太网的早期版本中。

现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用 CSMA/CD。

随机接入——CSMA/CA 协议(无线局域网使用的协议)

载波监听多址接入/碰撞避免 CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)

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

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

MAC 地址

多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址。

在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制 MAC(Media Access Control),因此这类地址被称为 MAC 地址。

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

一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的 MAC 地址。

而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的 MAC 地址。

综上所述,严格来说,MAC 地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

MAC 地址格式(EUI-48)

前 3 个字节:组织唯一标识符 OUI,即代表厂商信息

后 3 个字节:网络接口标识符,由获得 OUI 的厂商自行随意分配

EUI-48 目标寿命为 100 年(直到 2080),鼓励采用 EUI-64 作为替代

IP 地址

IP 地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息:

  • 网络编号:标识因特网上数以百万计的网络
  • 主机编号:标识同一网络上不同主机(或路由器接口)

数据包转发过程中源 IP 地址和目的 IP 地址保持不变;

数据包转发过程中源 MAC 地址和目的 MAC 地址逐个链路(或逐个网络)改变。

ARP 协议

由 IP 地址解析出 MAC 地址

基本原理:发送广播帧请求 MAC 地址

ARP 协议只能在一段链路或一个网络上使用,而不能跨网络使用

ARP 协议没有安全验证机制,存在 ARP 欺骗(攻击)问题

posted @ 2021-11-26 19:18  YL给力啊  阅读(753)  评论(0编辑  收藏  举报