《计算机网络》笔记-第6章链路层和局域网


title: 《计算机网络》笔记-第6章链路层和局域网
date: 2020-11-02 11:00:05


文章目录

    • 0. 前言
    • 1. 概述
    • 2. 差错检测和纠正技术
      • 2.1. 奇偶校验
      • 2.2. 校验和方法
      • 2.3. 循环冗余检测
    • 3. 多路访问链路和协议
      • 3.1. 信道划分协议
      • 3.2. 随机接入协议
        • 3.2.1. 时隙 ALOHA
        • 3.2.2. 载波侦听多路访问(CSMA)
        • 3.2.3. 具有碰撞检测的载波侦听多路访问(CSMA/CD)
      • 3.3. 轮流协议
    • 4. 交换局域网
      • 4.1. 链路层寻址——MAC地址
      • 4.2. 地址解析协议 ARP
        • 4.2.1. 在子网内发送数据报
        • 4.2.2. 发送数据报到子网外
      • 4.3. 以太网(Ethernet)
      • 4.4. 链路层交换机
        • 4.4.1. 交换机的转发和过滤
        • 4.4.2. 自学习
      • 4.5. 虚拟局域网
    • 5. Web 页面请求历程

0. 前言

通过网络层,我们知道网络如何选择最优路径,将分组从一个主机发送到另一个主机。

而通过链路层,我们将知道:分组是如何在构成端到端最优路径的各段物理链路上进行传输的

同样类比物流寄件,如果说网络层解决的是:将邮件从一个地址邮寄到另一个地址;那么链路层解决的就是:将邮件从一个节点交付给下一个节点,是采用卡车、还是飞机、还是轮船呢。

1. 概述

在链路层中,任何设备将称作节点(node),包括主机、路由器、交换机等。

连接相邻节点的通信信道则称为链路(link)

链路层传输的分组称为帧(frame)

在链路层的讨论中,将介绍两种不同类型的链路层通信:

  • 广播信道。它用于连接有线局域网、卫星网中的多台主机等。
  • 点对点信道。它用于长距离链路连接的两台路由器之间等。

链路层协议所提供的服务包括:

  • 成帧。将网络层数据封装进链路层分组——帧中。
  • 链路接入。媒体访问控制(Medium Access Control,MAC)协议规定了帧在链路上传输的规则。根据信道的不同,MAC 协议可分为点对点协议和多路访问协议两大类。在点对点信道上,MAC 协议比较简单;而在广播信道上,MAC 协议比较复杂。
  • 可靠交付。有些高差错率的链路会提供可靠交付服务,但大部分都不提供。
  • 差错检测和纠正。

链路层主体部分在**网络适配器/网络接口卡/网卡(Network adapter)**中实现,网卡的核心是一个实现了大部分链路层服务的芯片——链路层控制器(Controller)。剩余小部分链路层功能在 CPU 中实现。

《计算机网络》笔记-第6章链路层和局域网_第1张图片

2. 差错检测和纠正技术

上文提到,对链路层帧中的比特差错进行检测和纠正,是链路层提供的服务之一。接下来,将介绍3种差错检测技术:

  • 奇偶校验
  • 校验和方法
  • 循环冗余检测

2.1. 奇偶校验

最简单的奇偶校验即使用单个奇偶校验位(parity bit)。假设发送 d 比特的信息,在偶校验方案中,发送方只需附加一个比特,使得这 d+1 比特中 1 的总数是偶数。奇校验则使 1 的个数是奇数。

《计算机网络》笔记-第6章链路层和局域网_第2张图片

实践证明,单个奇偶校验位方案,检测出差错的概率为 50% 。

二维奇偶校验是一种更强大的方案。发送数据的 d 个比特被划分为 ij 列,对每行每列计算奇偶值,产生 i+j+1 个差错检测比特。它还能用来纠正出现差错的比特。

《计算机网络》笔记-第6章链路层和局域网_第3张图片

2.2. 校验和方法

与运输层校验和方法相同。

2.3. 循环冗余检测

当下使用最广泛的差错检测技术为循环冗余检测(cyclic redundancy check,CRC)编码,也被称为多项式编码

其操作过程为:

  1. 发送方和接收方事先协商一个 r+1 的比特串(最高位必须是1),称为生成多项式,我们将其表示为 G

  2. 对于要发送的 d 字节数据 D,发送方要得出 r 个比特的附加比特串 R ,并附加到 D 右边,使得这个 d+r 个比特能被 G “整除”(除的过程中,加不进位、减不借位,等价于异或)。那如何得出 R 呢?示例:D=101110, d=6, G=1001, r=3,其计算过程如下,最后得到 R011d+r 个比特为 101110 011
    《计算机网络》笔记-第6章链路层和局域网_第4张图片

  3. 接收方接收到 d+r 个比特的数据后,会用 G 去除。如果余数非零,则表示出现差错;余数为零,则表示正确。

3. 多路访问链路和协议

此前提到,有两种类型的链路:

  • 点对点链路。由单个发送方和单个接收方组成,相关协议有:点对点协议(point-to-point protocol,PPP)、高级数据链路控制(high-level data link control,HDLC)。
  • 广播链路。当某节点发送数据时,它会以广播的方式发送,同一广播链路上的节点都能接收到。而当多个发送发同时发送数据时,数据会在链路中发生碰撞,以致数据被损坏。如以太网、无线局域网等都是广播链路。

我们将主要讨论广播链路,而广播链路中最重要的问题即多路访问问题(multiple access problem)。什么是多路访问问题呢?举个例子:有许多人聚集在一个房间中讨论问题,每个人都能发言。但讨论时,有可能每个人都争抢着发言、互不礼让,导致场面混乱不堪。

而为了让讨论井然有序地进行,我们需要指定一些规则:

  • 每个人都有讲话的权力
  • 不要一个人讲太久,导致其它人没有发言机会
  • 想发言可以举手示意
  • 不要贸然打断他人的讲话
  • 当有人讲话时,不能睡觉

这些规则同样适用于解决多路访问问题,这也就是多路访问协议(multiple access protocols)

当下,有十几种多路访问协议,我们将其划分为 3 种类型:

  • 信道划分协议(channel partitioning protocols)
  • 随机接入协议(random access protocols)
  • 轮流协议(taking-turns protocols)

3.1. 信道划分协议

为了避免碰撞,我们可以将广播信道以不同的方式平均地分配给每个节点,这就是信道划分协议。

主要有三种信道划分方法:

  • 时分多路复用(time-division multiplexing,TDM)。TDM 将时间划分为时间帧(time frame),并进一步将每个时间帧划分成 N 个时隙(slot),然后把 N 个时隙分配给 N 个节点。节点发送数据时,必须在指定时隙中传输比特。
    《计算机网络》笔记-第6章链路层和局域网_第5张图片

    其主要缺点为:节点速率被限制为 R / N b p s R/N bps R/Nbps R R R 为整个信道的速率),且必须等待它所属的时隙,即使它是唯一要发送的时隙。

  • 频分多路复用(frequency-division multiplexing,FDM)。将信道划分为不同的频段(每个频段具有 R / N R/N R/N 带宽),并把 N 个频段分配给 N 个节点。它也有着与 TDM 相同的缺点。
    《计算机网络》笔记-第6章链路层和局域网_第6张图片

  • 码分多址(code division multiple access,CDMA)。一种神奇的方法,目前已广泛地用于蜂窝电话中,我们将在之后详细讲解。

3.2. 随机接入协议

在随机接入协议中,节点总是以 R R R 速率发送数据。当发生碰撞时,节点会在等待随机时间后重新发送,如此循环。

我们将主要介绍两种常用的随机接入协议:

  • ALOHA 协议
  • 载波侦听多路访问协议(CSMA)
3.2.1. 时隙 ALOHA

时隙 ALOHA 结合了时分多路复用的方法,但进行了改进。

时隙 ALOHA 先进行了如下规定:

《计算机网络》笔记-第6章链路层和局域网_第7张图片

然后,其操作过程为:

《计算机网络》笔记-第6章链路层和局域网_第8张图片

与信道划分不同,当只有一个节点发送数据时,它可以独占整个信道,也就是能以 R R R 速率发送数据。

但它的效率并不高。

分享一个历史小故事:

《计算机网络》笔记-第6章链路层和局域网_第9张图片

3.2.2. 载波侦听多路访问(CSMA)

CSMA 的关键在于 载波侦听(carrier sensing),它的本质很简单:一个节点在传输前先听信道,如果没有数据在传输,则发送数据;反之,则等待直到检测到信道一段时间都没有数据传输,再开始传输。

但 CSMA 存在一个问题:当两个节点都监听到信道空闲时,它们会同时发送数据,最终导致数据碰撞。

3.2.3. 具有碰撞检测的载波侦听多路访问(CSMA/CD)

CSMA/CD 在 CSMA 的基础上,加入了碰撞检测(collision detection)。传输节点在传输时会一直监听此信道,如果它检测到另一个节点正在发送干扰帧并产生碰撞,就停止传输,并等待一段随机时间后,重复“侦听——当空闲时传输——碰撞则等待”。

CSMA/CD 具体过程如下:

《计算机网络》笔记-第6章链路层和局域网_第10张图片

算法中有一个很重要的随机时间,如果随机范围太大,则会降低节点效率;如果随即范围太小,则可能会再次碰撞。

为了解决这个问题,人们提出了 二进制指数后退(binary exponential backoff) 算法。算法十分简单,即:当该帧经历了 n n n 次碰撞后,节点将随机从 { 0 , 1 , 2... 2 n − 1 } \{0,1,2...2^n-1\} {0,1,2...2n1} 中选择一个 K K K 值,等待 K K K 倍数的时间。因此,一个帧经历的碰撞越多, K K K 选择的范围也会越大。

3.3. 轮流协议

多路访问协议的两个理想特性是:

  1. 当只有一个节点活跃时,该节点具有 R b p s R bps Rbps 的吞吐量。
  2. 当有 M M M 个节点活跃时,每个节点都有接近 R / M b p s R/M bps R/Mbps 的吞吐量。

信道划分协议具备第2个特性,却不具备第1个;随机接入协议具备第1个特性,却不具备第2个。

为了同时实现这两种特性,人们又发明了轮流协议(taking-turns protocol)。轮流协议有很多,我们只讨论两种比较重要的协议:

  • 轮询协议(polling protocol)。协议会从所有节点中指定一个主节点,主节点 轮询(poll) 每个节点。例如,主节点会先询问节点1,如果它要发送数据,那么主节点会告诉它能传输的帧的最多数量,传输完毕后主节点会接着询问节点,周而复始。虽然轮询协议避免了碰撞和空时隙的问题,提高了效率,但也有一些缺点

    • 引入了轮询时延。节点需要等待主节点轮询到它,才能发送数据。
    • 若主节点发生故障,整个信道就不能使用了
  • 令牌传递协议(token-passing protocol)。一个称为 令牌(token) 的小特殊帧会在节点之间循环传递。当一个节点要发送数据时,它会持有这个令牌,并传输所有数据,然后再释放令牌;当不需要发送数据时,则传给下一个节点。令牌传递协议同样也存在着一些问题,例如:一个节点故障可能导致整个信道崩溃,或者一个节点忘记释放令牌等。

4. 交换局域网

4.1. 链路层寻址——MAC地址

主机与路由器都拥有链路层地址。但严格来讲,并不是主机和路由器拥有链路层地址,而是网络适配器(网络接口/网卡)拥有链路层地址。具有多个网卡的主机或路由器将具有多个链路层地址,也具有多个IP地址。

链路层地址有许多不同的称呼:LAN 地址物理地址MAC 地址,其中 MAC 地址最为常用。

对大多数局域网而言,MAC 地址长度为 6 字节,通常用十六进制表示,如 1A-23-F9-CD-06-9B 。网卡上的 MAC 地址是与生俱来的,也是固定的(现在可以改变,但我们不考虑),而且没有两块网卡的 MAC 地址是相同的。不论网卡到何处,MAC 地址都不会改变。

到此,你或许会疑惑:为什么网络层与链路层都需要地址呢?且听我慢慢道来。

  • MAC 地址是扁平结构,且每个地址全球唯一,不论身在何处,它相当于身份证;IP 地址则是层次结构,主机移动时 IP 地址需要改变,它用来定位,相当于邮政地址
  • 链路层是为任意网络层协议而设计的,而不只是用于 IP 协议。如果网卡被指派 IP 地址,而不是“中性”的 MAC 地址,那将不能用于其它网络层协议。
  • 若网卡使用网络层地址,那网络层地址就不能“刻”在网卡上,每次移动主机都得重新配置;或者网卡不使用任何地址,而直接交付给网络层,但这样的话,主机将被局域网发送的每个帧而中断,即使帧的目的地不是自己。

在局域网中,网卡会接收每一个发送的帧,并检查帧中目的 MAC 地址是否与自己 MAC 地址匹配。如果匹配,则取出帧中数据,向上层传递;如果不匹配,则丢弃该帧。

与 IP 协议一样,MAC 也有广播地址,即比特全为 1 的 MAC 地址,用于向局域网所有其它主机广播信息。

4.2. 地址解析协议 ARP

当网络层将数据报传给链路层时,链路层只知道目的 IP 地址,那它如何才能知道帧的目的 MAC 地址呢?这就是 地址解析协议(Address Resolution Protocol,ARP) 的任务了。

接下来,将通过两种情况了解 ARP 协议。

4.2.1. 在子网内发送数据报

每台主机或路由器在内存中都有一个 ARP 表,它包含 IP 地址到 MAC 地址的映射关系,以及每个映射的寿命(TTL)。

《计算机网络》笔记-第6章链路层和局域网_第11张图片

现假设主机 222.222.222.220 要向主机 222.222.222.222 发送数据报,但它的 ARP 表并未存在映射关系。当数据报传至链路层时,主机 222.222.222.220 需要用 ARP 解析协议来获取目的主机的 MAC 地址:

  • 首先,222.222.222.220 主机会发送一个 ARP 查询分组,并使用 MAC 广播地址(FF-FF-FF-FF-FF-FF)为目的 MAC 地址。

  • 该分组将被子网中所有主机或路由器接收到,这些主机或路由器将检查分组中的目的 IP 地址是否与自己的 IP 地址相同。若相同,则发送一个 ARP 响应分组

  • 源主机收到响应分组后,便会更新它的 ARP 表,然后正式发送数据报到 222.222.222.222 主机。

4.2.2. 发送数据报到子网外

《计算机网络》笔记-第6章链路层和局域网_第12张图片

如上图所示,现有两个子网 111.111.111/24222.222.222/24,假设主机 111.111.111.111 要向主机 222.222.222.222 发送数据报。由于子网 111.111.111/24 中并不存在主机 222.222.222.222 ,所以 ARP 协议并不能获取目的 MAC 地址,那怎么办呢?

  • 首先,主机通过自己的子网信息,得知目的 IP 地址并不在自己的子网中,所以它会把目的 MAC 地址设为网关(路由器)接口的 MAC 地址。由于主机联网时便知道网关路由器的 IP 地址,所以它可以通过 ARP 协议获取网关路由器的 MAC 地址。

  • 将数据报发送到网关路由器后,路由器会根据路由表选择输出链路接口,将数据报传递到对应接口的适配器中,准备发送。

  • 帧的源 MAC 地址是路由器输出接口的 MAC 地址,而目的 MAC 地址是如何知道的呢?当然是 ARP !路由器会向对应子网中发送 ARP 查询分组,从而获取目的 IP 地址对应的 MAC 地址。

4.3. 以太网(Ethernet)

以太网(Ethernet)是当今最流行的有线局域网技术,甚至将一直保持这一位置。

它的成功有很多原因:首先,它是第一个广泛部署的高速局域网;其次,它比令牌环等技术更加简单、便宜;第三,它奋发上进,不断产生更高速率的版本,以抵抗其他技术的竞争。

20世纪80年代到90年代,初始的以太网,使用基于同轴电缆总线拓扑 结构,是广播局域网。

20世纪90年代后其,人们使用基于集线器星形拓扑结构,依旧是广播局域网。

21世纪初,以太网经历了革命性变化,交换机代替了集线器,以太网成为了“无碰撞”局域网。

以太网帧结构如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ldos8Rzj-1611933479316)(《计算机网络》笔记-第6章链路层和局域网/15.png)]

各字段详情如下:

特此说明,以太网提供的是无连接、不可靠服务。即适配器在发送帧之前,不会与目标适配器握手;发送帧之后,也不知道目标适配器是否收到,而且如果某帧出现差错没有通过 CRC 效验,目标适配器则会丢弃该帧。

如今,以太网已发展了多种类型,各有各的特色。这些以太网技术,在多年中已经被 IEEE 802.3 工作组标准化了。

《计算机网络》笔记-第6章链路层和局域网_第13张图片

4.4. 链路层交换机

此前提到,基于交换机的以太网已成为主流。由于交换机是全双工的(同时向对方发送消息不会受到干扰),而且具有存储转发的功能,只转发帧到对应的端口。所以交换以太网不再是广播信道,也不会出现碰撞,甚至都不再需要使用多路访问协议了。

为什么交换机如此神奇呢?它的原理是什么呢?

4.4.1. 交换机的转发和过滤

过滤是决定一个帧应该转发还是丢弃,转发是决定一个帧该被导向到哪个接口。

这两个功能都借助于交换机表(switch table),表中每个表项都包含:一个 MAC 地址;通向该地址的交换机接口;表项放置在表中的时间。示例如下:

《计算机网络》笔记-第6章链路层和局域网_第14张图片

现假设目的 MAC 地址为 DD-DD-DD-DD-DD-DD 的帧从接口 x 到达交换机:

  • 表中没有 DD-DD-DD-DD-DD-DD 的表项,则向所有接口广播该帧。
  • 表中存在 DD-DD-DD-DD-DD-DD 但对应的接口是 x ,则丢弃该帧。
  • 表中存在 DD-DD-DD-DD-DD-DD 且接口为 y,则将帧转发到该接口。
4.4.2. 自学习

交换机另一个神奇的特性是:自学习。交换机表是自动、动态地建立的,不需要人为配置,所以交换机是一个即插即用设备

那交换机是如何实现自学习的呢?

  1. 交换机表初始为空。
  2. 对于每一个到达交换机的入帧,交换机都会在表中存储一个表项:该帧的源 MAC 地址;该帧进入的接口;当前时间。只要局域网中的主机发送了一个帧,那它就会在交换机中留下记录。
  3. 如果一段时间后,交换机没有收到以该地址为源地址的帧,就会从表中删除这个地址。

4.5. 虚拟局域网

虽然交换机简单又好用,但也存在着一些问题(以下图为例):

《计算机网络》笔记-第6章链路层和局域网_第15张图片

《计算机网络》笔记-第6章链路层和局域网_第16张图片

为了解决这些问题,虚拟局域网(VLAN) 出现了,它可以将一个物理局域网划分成多个虚拟局域网,虚拟局域网之间互不干扰。如下图:

《计算机网络》笔记-第6章链路层和局域网_第17张图片

但新的问题是:不同 VLAN 之间如何通信呢?

最简单的方法是,用一个路由器将两个 VLAN 连接起来。幸运的是,综合 VLAN 交换机和路由器的单一设备的出现,使这个方法更为容易。

另一种方法则被称为 VLAN 干线连接(VLAN trunking)

《计算机网络》笔记-第6章链路层和局域网_第18张图片

5. Web 页面请求历程

你可能感兴趣的:(计算机基础,计算机网络)