【计网第三章】数据链路层

596 阅读15分钟

本章重要内容

  • 1)数据链路层点对点信道和广播信道的特点以及这两种信道使用的协议的特点
  • 2)数据链路层的三个基本问题:封装成帧,透明传输,差错检测
  • 3)以太网MAC层的硬件地址
  • 4)适配器,转发器,集线器,网桥,以太网交换机的作用以及使用场合

(3.0) 信道模型

数据链路层使用的信道主要有两种:

(1) 点对点信道:使用一对一的点对点通信方式
(2) 广播信道:使用一对多的广播通信方式,过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

本章侧重介绍分组在同一个局域网内如何从一个主机传送到另一个主机上(不经过路由器) —— 这属于数据链路层的范畴


数据链路层只关注数据在链路层流通的情况:

H1、H2TA们都有完整的五层协议栈,但路由器在转发时使用的只有下面的三层,数据不断地在R1,R2,R3中上下传输(网络层记录着下一站的地址),但研究链路层的数据传输时,我们只关心协议栈中水平方向的个数据链路层.


(3.1) 使用点对点信道的数据链路层

(3.1.1) 数据链路和帧

(1) 链路

链路和数据链路并不是一回事!

1. 链路:也叫物理链路,从一个节点到相邻节点的一段物理线路(有线/无线),中间没有任何交换结点
2. 数据链路:也叫逻辑链路,通信协议 + 物理通道

(现在最常用的方法是使用适配器(网卡)来实现这些协议的硬件和软件); 一般的适配器都包括了数据链路层和物理层这两层的功能。

(2) 帧

点对点信道的数据链路层的协议数据单元——帧

一、 数据链路层将网络层的数据包封装成帧(交给物理层)发送到链路上;以及把(从物理层中)接收到的中的IP数据报取出并交给网络层;
、数据链路层不必考虑物理层如何实现比特传输的细节。甚至还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方。

在这里插入图片描述


(3.1.2) 三个基本问题

数据链路层的协议很多,但有三个基本问题是共同的!

封装成帧、透明传输、差错控制

① 封装成帧

封装成帧(framing): 在一段数据的前后分别添加首部和尾部,构成一个帧。

首部和尾部的一个重要作用就是进行帧定界(确定帧的开始和结束)。

此外,首部和尾部还要添加许多控制信息,链路层协议规定了所能传送的帧的数据部分长度上限,最大传送单元 —— MTU(Maximum Transfer Unit)


当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符

控制字符SOH (Start Of Header) 放在一帧的最前面,表示帧首部开始。 控制字符EOT (End Of Transmission) 表示帧的结束。

② 透明传输

一、问题出现 :若帧的数据部分含有和SOH、EOT相同的内容,那么帧的开始和结束位置就会被错误的判定。

如果需要传输的内容正好就是转义字符,那么就在转义字符前面再加个转义字符,在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。

二、解决方法 :字节填充(byte stuffing)或字符填充(character stuffing)

发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。

接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。

如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。


③ 差错检测

现实链路不会很理想,在传输过程中可能会产生比特差错:

1 ---> 0 / 0 ---> 1

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate),为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施

(1) 循环冗余检验

在数据链路层传送的帧中,广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)的检错技术。

检测对象:每一个数据帧的数据部分,故对帧重复、失序、丢失没有检测作用

在发送端,先把数据划分为组。假定每组 k 个比特。

假设待传送的一组数据 M = 101001(现在 k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。

用二进制的模 2 运算进行 2^n 乘 M 的运算,这相当于在 M 后面添加 n 个 0(左移n位)。

得到的 (k + n) 位的数除以事先选定好的长度为 (n+1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。 将余数 R 作为冗余码拼接在数据 M 后面发送出去。

例子:

现在 k = 6, M = 101001,设 n = 3, 除数 P = 1101, 被除数是 2^nM = 101001000。
模 2 运算的结果是:商 Q = 110101,余数 R = 001。 把余数 R 作为冗余码添加在数据 M 的后面发送出去。
实际发送的数据是:2^n
M + R 。
即:101001001,共 (k+n) 位。

注:在减的过程中,不用借位。

(3.2) PPP协议

由于高级数据链路控制HDLC(High-level Data Link Control)曾是流行的一种数据链路层协议,对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议PPP(Point-to-Point Protocol)

(3.2.1) PPP协议的特点

用户使用拨号电话线接入互联网时,互联网用户通常需要连接到某个ISP之后才能接入到互联网,PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。

① PPP协议应满足的需求

p73 - p74

② PPP协议的组成

PPP 协议有三个组成部分:

(1) 一个将IP数据报封装到串行链路的方法。 (2) 一个链路控制协议LCP(Link Control Protocol)。用来建立、配置和测试数据链路连接 (3) 一套网络控制协议NCP(Network Control Protocol)。其中每一个协议支持不同的网络层协议

(3.2.2) PPP协议的帧格式

① 各字段的意义

PPP帧的首部为4个字段、尾部为2个字段。

  • 标志字段F(flag) = 0x7E (符号"0x"表示后面的字符是用十六进制表示,十六进制的 7E 的二进制表示是 01111110)
  • 地址字段A(address) 只置为 0xFF。地址字段实际上并不起作用。
  • 控制字段C(control) 通常置为 0x03。
  • 协议字段:

PPP 是面向字节的,所有的PPP帧的长度都是整数字节。

附:PPP协议透明传输的问题

与在信道传输的数据一样,PPP协议也要解决透明传输的问题,来确保帧的定界。

  • 当PPP用在同步传输链路时,协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)
  • 如果信息字段是字符流,当PPP用在异步传输时,就使用一种特殊的字符填充法

② 字节填充

当信息字段中出现和标志字段相同的比特(0x7E)组合时,则进行字节填充的办法使得数据部分能够完整的传送到接收端,填充方法如下3种:

  • 将信息字段中出现的每一个0x7E字节转变成为2字节序列 (0x7D, 0x5E)
  • 若信息字段中出现一个 0x7D的字节(即出现了和转义字符一样的比特组合), 则将其转变成为2字节序列 (0x7D, 0x5D)
  • 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变

③ 零比特填充

PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。这时PPP协议采用零比特填充方法来实现透明传输。

具体做法

  • 在发送端,只要发现有5个连续1,则立即填入一个0
  • 接收端对帧中的比特流进行扫描,每当发现5个连续1时,就把这5个连续1后的0删除

附:PPP不提供使用序号和确认的可靠传输

  • 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
  • 在因特网环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
  • PPP协议只实现无差错接受,帧检验序列 FCS 字段可保证无差错接受。

(3.2.3) PPP协议的工作状态(选看)

用户拨号接入ISP ---> 端机向ISP发送一系列链路控制协议LCP分组 ---> 
进行网络层配置 ---> 网络层协议NCP向端机分配IP地址
  1. 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
  2. PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
  3. 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
  4. 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。


(3.3) 使用广播通信的数据链路层

(3.3.1) 局域网的数据链路层

点到点信道一般用于广域网,局域网一般使用广播信道的数据链路层。

由网络拓扑结构就可以看出,局域网内的多台计算机是通过共享信道上网的,而共享信道就要着重考虑一个问题,如何使众多用户能够合理而且方便地共享媒体资源。有两种技术方案:

(1)静态划分信道。划分信道后,就可以使用频分复用、时分复用、波分复用、码分复用等技术高效地共享信道资源了。

  • 缺点:当有计算机接入的时候,要新划分信道。

(2)动态媒体解入控制

  • 随机接入(主要使用)
  • 受控接入

(3.3.2) CSMA/CS 协议

最初的以太网是将许多计算机都连接到一根总线上。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。因此以太网要解决的问题就是如何协调各计算机的工作。 以太网使用像随机接入技术的 CSMA/CD 协议进行协调局域网内的计算机的工作。 这是 CSMA/CD 协议的几个要点

  • 多点接入:即总线网络的方式,多台计算机连接在一条线上。
  • 载波监听:每个站在发送前和发送的时候都不断的检测信道是否有其他站点在发送信号。
  • 碰撞检测:边发送边监听,若在信道上有至少两个站点同时发送信息便发生碰撞,使得两边发送的信息都作废;

以太网的广播方式实现一对一

  • 总线上的每一个工作的计算机都能检测到 B 发送的数据信号。
  • 由于只有计算机 D 的地址与数据帧首部写入的地址一致,因此只有 D 才接收这个数据帧。
  • 其他所有的计算机(A, C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来。
  • 具有广播特性的总线上实现了一对一的通信。

为了通信的简便以太网采取了两种重要的措施

  • 采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。
  • 以太网对发送的数据帧不进行编号,也不要求对方发回确认。
    • 这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。

以太网提供的服务

  • 以太网提供的服务是不可靠的交付,即尽最大努力的交付。
  • 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
  • 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。

(3.4) 使用广播通信的以太网

3.4.1 使用集线器的星形拓扑结构

星型以太网 10BASE-T

  • 10:10Mb/s
  • BASE::连接线上的信号是基带信号
  • T:双绞线

集线器的特点

  • 集线器使用电子器件模拟实际电缆线的工作,所以使用集线器的以太网在逻辑上还是一个总线网,各站逻辑上共享总线。而且是用的还是CSMA/CD协议;
  • 集线器像是一个多接口的转发器;集线器工作在物理层,每个接口只简单地转发比特,不进行碰撞检测,
  • 集线器采用专门的芯片,进行自适应串音回波抵消;(使得同一接口的强信号不会对弱信号产生干扰)

3.4.2 以太网的信道利用率

以太网的信道利用率

帧长为 L (bit),数据发送速率为 C (b/s),因而帧的发送时间 T0 为 L/C 。

对以太网参数的要求

信道利用率的最大值 Smax

3.4.3 以太网的 MAC 层

1. MAC层中的硬件地址

  • 硬件地址又称为物理地址或MAC地址。
  • 硬件地址其实不算严格意义上的地址,因为并没有指明具体位置,硬件地址是适配器唯一编号,用来唯一的标识每台电脑上的适配器
  • MAC地址的二进制前24位代表厂家,后24位标识适配器地址

主机的MAC地址可以更改

2. MAC帧的格式

常用的以太网MAC帧格式有两种标准 :

  • DIX Ethernet V2 标准
  • IEEE 的 802.3 标准

以太网MAC帧格式

最常用的 MAC 帧是以太网 V2 的格式。具体如下图

以太网 V2 的格式

  • 目的地址和源地址指的是硬件地址。
  • 类型字段用来标志上层数据使用的是什么协议,上图就是IP数据报。
  • FCS帧检验序列,使用CRC检验
  • 前同步码是为了使适配器的时钟与比特流达成同步;

目标地址是全f的帧是广播地址帧

3. 无效MAC帧

4. MAC的帧的最小间隔

  • 帧间最小间隔为 9.6微妙,相当于 96 bit 的发送时间。
  • 一个站在检测到总线开始空闲后,还要等待 9.6 微妙 才能再次发送数据。
  • 这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备.

(3.5) 高速以太网

速率>=100Mb/s的以太网

3.5.2 在数据链路层扩展局域网

  • 在数据链路层扩展局域网是使用网桥。
  • 网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发和过滤。
  • 网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口

1. 使用网桥的好处

  • 过滤通信量。 A与B通信时,C与D也可以通信,A,C通信需要网桥B1的转发。
  • 扩大了物理范围。
  • 提高了可靠性(可理解为高可用)。
  • 可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网。

2. 网桥的缺点

  • 存储转发增加了时延。对于接收的帧要先存储和查找转发表,然后经过CSMA/CD算法才能转发。
  • 在 MAC 子层并没有流量控制功能。 网络上负荷重时,网桥的缓存空间不够会溢出,导致帧丢失。
  • 具有不同 MAC 子层的网段桥接在一起时时延更大。
  • 网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的 广播风暴。

4. 以太网交换机

一个多接口的网桥

----------------------------------------------------------------------------