计算机网络——第三章 数据链路层

本文最后更新于:2019年9月9日 晚上

概览:计算机网络数据链路层的两个基本概念(数据链路和帧),三个基本问题,两种信道通信方式,以及对应的协议PPP或者CSMA/CD,以及以太网。

参照书籍:

《计算机网络(第七版)》——谢希仁编著

《图解TCP/IP》第五版


数据链路层的基本概念

链路:链路(link)是一个结点到相邻结点的物理线路段(有线或者无线),中间没有任何其他的交换结点。

数据链路(data link)是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(通信协议的实现)。

数据链路层的协议数据单位是

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收的帧中的数据取出并上交给网络层。

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

封装成帧

在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。

首部和尾部的一个重要作用就是进行帧定界

透明传输

当帧里含有SOH或者EOT这种控制字符的二进制码时,数据链路层会错误的找到帧的边界,而导致数据读取丢失等问题。

而所谓透明传输是指无论什么样组合的比特数据都可以按照原样没有差错的通过数据链路层。

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

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

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

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

差错检测

在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。

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

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

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

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

在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。

仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)——凡是接收端数据链路层接受的帧都没有传输差错(有差错的帧就丢弃而不接受)

两种信道

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

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

点对点协议 PPP

现在全世界使用得最多的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。

用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。

局域网 – 使用广播信道的数据链路层

局域网的优点

  • 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
  • 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
  • 提高了系统的可靠性、可用性和残存性。

共享信道技术

静态划分信道代价高,不适用于局域网。

动态媒体接入控制也叫做多点接入,特点是:信道并非在用户通信时固定分配给用户。

随机接入:所有的用户可随机发送信息,但如果多个用户同时发送消息就会产生冲突导致失败。而以太网就是属于随机接入。

适配器 – 计算机连接到局域网

计算机通过适配器和局域网进行通信

网络接口板又称为通信适配器(adapter)或网络接口卡 NIC (Network Interface Card),或“网卡”。

适配器的重要功能

  • 进行串行/并行转换。
  • 对数据进行缓存。
  • 在计算机的操作系统安装设备驱动程序。
  • 实现以太网协议。

以太网

在局域网的总线上实现一对一通信

最初的以太网是将许多计算机都连接到一根总线上。

总线连接的局域网内B向D发送数据,实现一对一通信。

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

以太网的两个重要措施

  • 采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。
  • 以太网发送的数据都使用曼彻斯特编码(Manchester)

无连接的工作方式:以太网对发送的数据帧不进行编号,也不要求对方发回确认。所以以太网提供的服务是不可靠的交付,即尽最大努力的交付。差错的纠正由高层来决定。

CSMA/CD协议

载波监听多点接入/碰撞检测

  • 多点接入:说明是总线型网络。表示许多计算机以多点接入的方式连接在一根总线上。
  • 载波监听:用电子技术检测总线上有没有其他计算机发送的数据信号。
  • 碰撞检测边发送边监听。适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也再发送数据。如果有两个站在同时发送数据,那么信号就发生了失真,无法从中恢复出有用的信息。

以太网发送的不确定性

即,一个以太网中,每一个站在自己发送数据之后的一段时间内,存在着遭遇碰撞的可能性。这一段时间是不确定的。

课本P87。

在发送数据帧后最多经过以太网端到端的往返时间的这一段争用期。只要经过这一段争用期而没有检测到碰撞,才能肯定这次发送不会碰撞。

以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。

截断二进制指数退避算法

todo


OSI参考模型中的数据链路层

数据链路层负责物理层面上互连的、节点之间的通信传输。例如与1个以太网相连的2个节点之间的通信。

主要功能:将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成与接受)。

数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范。

设备之间的数据传输

各个设备之间在数据传输时,数据链路层和物理层都是必不可少的

因为计算机用0、1表示信息,而实际的通信媒介处理的却是电压的高低、光的闪灭以及电波的强弱等信号。

物理层将这些信号与二进制的0、1进行转换。

数据链路层将0、1序列集合为”帧“,然后再进行传输。

《图解TCP/IP》中的数据链路层

网卡层(网络接口层)及对应的数据链路层,是利用以太网中的数据链路层进行通信的,属于接口层。可以当作让NIC(网卡)起作用的“驱动程序”。

TCP/IP对于OSI参考模型中的数据链路层及一下部分(物理层)未做定义,因为TCP/IP以这两层的功能是透明的为前提。

数据链路层的相关技术

MAC地址

MAC地址用于识别数据链路中互连的节点。

MAC地址长为48比特,这是IEEE 802标准规定的全球地址,MAC地址会被固化到适配器(比如网卡)的ROM中,要求任何一个适配器的MAC地址都是唯一的,在全世界都不会有重复。

  • 除了以太网,FDDI、ATM、无线LAN、蓝牙等都使用的相同规格的MAC地址。

共享介质型网络

指多个设备共享一个通信介质的一种网络。在这种方式下,设备之间使用同一个载波信道进行发送和接受。(基本采用半双工通信)。需要对介质进行访问控制。

两种介质访问控制方式:争用方式令牌传递方式

争用方式

争夺获取数据传输的权力,即先到先得。也叫做CSMA(载波监听多路访问)。

  • 如果多个站同时发送帧,则会产生冲突现象,也因此会导致网络拥堵与性能下降,

CSMA的改良版本——CSMA/CD方式(载波监听多路访问/碰撞检测)。

CSMA/CD方式会要求每个站提前检查冲突,一旦发生冲突,则尽早释放信道。

CSMA/CD工作原理

  • 如果载波信道上没有数据流动,则任何站都可以发送数据。
  • 检查是否会发生冲突。一旦发生冲突时,放弃发送数据,同时立即释放载波通道。
  • 放弃发送以后,随机延时一段时间,再重新争用介质,重新发送帧。

令牌传递方式

是沿着令牌环发送一种“令牌”的特殊报文,只有获得令牌的站才能发送数据。

  • 不会有冲突
  • 每个站都有通过平等循环获得令牌的机会。

非介质共享网络

发送端与接收端不共享通信介质,而是直连交换机,由交换机负责转发数据帧。(采用全双工通信方式)