思维导图: https://www.mubu.com/doc/gscgX7wQEA

一. 链路层概述

1.1 核心术语

  • 节点(Node):指运行链路层协议的设备,包括主机、路由器、交换机和 WiFi 接入点。
  • 链路(Link):连接相邻节点的通信信道。
  • 传输过程:数据报从源主机到目的主机的过程中,会经过多段链路。在每一段链路上,传输节点会将数据报封装在链路层帧中进行传输。

1.2 链路层提供的服务

  • 成帧:这是链路层协议最基础的服务。在传输之前,它会将网络层数据报封装在一个链路层帧中。这个帧由数据字段(包含数据报)和多个头部字段组成,其结构由具体的协议定义。
  • 链路接入:这指的是媒体访问控制(MAC)协议,它规定了帧在链路上传输的规则。
    • 点对点链路(只有两个节点)上,MAC协议通常很简单,发送方只要链路空闲就可以发送。
    • 多路访问链路(多个节点共享一条链路)上,MAC协议则复杂得多,它需要协调多个节点的传输以避免冲突。
  • 可靠交付:某些链路层协议提供这项服务,通过确认和重传来确保每个数据报无差错地传输。这与 TCP 等传输层协议提供的可靠交付类似。
    • 这种服务通常用于高差错率的链路(如无线链路),其目的是在本地(即发生差错的链路上)纠正错误,从而避免强制进行端到端的重传。
    • 然而,对于比特差错率低的链路(如光纤),这种服务可能被视为不必要的开销,因此许多有线链路层协议不提供该服务。
  • 差错检测和纠正:由于信号衰减和电磁噪声可能导致传输中的比特差错,许多链路层协议提供了检测机制。
    • 差错检测:发送方在帧中添加差错检测比特,接收方利用这些比特来检查帧是否出错。链路层的差错检测通常比网络层和传输层的更复杂,且由硬件实现。
    • 差错纠正:比差错检测更进一步,接收方不仅能检测到错误,还能确定错误的位置并进行纠正。

1.3 链路层在何处实现

链路层在计算机系统中的实现方式,指出它主要由硬件和软件协同工作。

  • 硬件实现:链路层的大部分核心功能都由专门的硬件来实现,这个硬件被称为网络适配器,也常称为网络接口卡(NIC)。网络适配器的核心是一个链路层控制器芯片,它负责执行像成帧、链路接入、差错检测等关键任务。
    • 在过去,网络适配器通常是独立的插卡,但现在,它们越来越多地被集成到计算机的主板上。
  • 软件实现:虽然大部分功能是硬件完成的,但部分链路层功能是通过运行在主机 CPU 上的软件来实现的。
    • 发送端:软件负责获取数据报、将地址信息组装到帧中,并激活硬件控制器来发送帧。
    • 接收端:当帧到达时,软件会响应控制器的中断,处理可能出现的错误,并将数据报向上层(网络层)传递。

二.差错检测和纠正技术

  • 基本概念
    • 为了保护数据在传输中免受比特差错(即0和1的翻转),发送节点会在数据(D)后添加额外的差错检测和纠正比特(EDC)
    • 接收节点收到的是可能已经发生变化的 D′ 和 EDC′。
    • 接收方的挑战是在只收到 D′ 和 EDC′ 的情况下,判断传输过程中是否发生了差错。
  • 差错检测的局限性
    • 差错检测技术并非总是能检测出所有比特差错,可能存在未检测出的比特差错
    • 因此,选择合适的差错检测方案时,需要确保未检测出差错的概率尽可能小。
    • 通常,越复杂的检测和纠正技术,开销也越大,需要更多的计算量和额外的EDC比特。
  • 三种技术: 文章随后将讨论三种常见的差错检测技术:
    1. 奇偶校验:它用来描述差错检测和纠正背后隐含的基本思想
    2. 检验和:它通常更多地应用于运输层
    3. 循环冗余检测:它通常更多地应用在适配器中的链路层

2.1 奇偶校验

单个奇偶校验位

  • 原理:发送方在数据(D)后附加一个奇偶校验位。这个位的选择使得整个数据和校验位中的“1”的数量为偶数(偶校验)或奇数(奇校验)。
  • 检测能力:接收方只需统计接收到的“1”的数量。如果发现与预设的奇偶性不符,就表明发生了奇数个比特差错。
  • 局限性:这种方法无法检测出偶数个比特差错,因此存在未检测出差错的风险。虽然在比特差错独立发生且概率极小的情况下可能足够,但在实际中,差错常以“突发”方式出现,这使得单比特奇偶校验的可靠性大大降低。

二维奇偶校验

  • 原理:将数据比特组织成一个二维表格,对每一行和每一列分别计算奇偶校验位。
  • 能力:这种方法能更强大地检测和纠正差错。
    • 差错纠正:当发生单个比特差错时,受影响的行和列的奇偶校验都会出错。接收方可以根据出错的行和列的交点,精确定位并纠正这个错误的比特。
    • 差错检测:二维奇偶校验也能检测出两个比特差错的任何组合,但无法纠正它们。

前向纠错(FEC):这种在接收方无需发送方重传即可纠正差错的能力被称为前向纠错

- **优点**:FEC技术可以减少数据重传的需要,从而降低了往返时延。这对于实时网络应用或长传播时延的链路(如深空通信)特别有价值。
- 这些技术通常用于如音频 CD 这样的音频存储和回放设备中。

2.2 检验和方法

  • 原理
    • 检验和方法将数据视为一系列k比特整数,然后将这些整数相加。
    • 得到的和或其反码就作为差错检测比特(即检验和)。
    • 因特网检验和就是基于这种方法,将数据视为16比特整数并求和,然后取其反码作为检验和。
  • 工作流程
    • 发送方:计算数据的和,并取反码作为检验和。
    • 接收方:将接收到的数据(包括检验和)相加,然后对结果取反码。如果最终结果是全1比特,则说明数据没有发生差错;如果包含0,则表明有差错。
  • 优点与局限性
    • 开销小:检验和方法只需要相对较小的分组开销(例如 TCP 和 UDP 中只占 16 比特)。
    • 保护较弱:与更复杂的 CRC 相比,检验和提供的差错保护相对较弱。
  • 检验和与CRC的实现差异
    • 为什么运输层使用检验和,而链路层使用CRC?
      • 运输层通常在主机中用软件实现,因此需要一个简单、快速的差错检测方案,检验和正好符合要求。
      • 链路层通常在网络适配器中用专用硬件实现,这使得它能够快速执行更复杂的CRC操作,从而获得更强的差错保护。

2.3 循环冗余检测(CRC)

CRC 的基本原理

  • CRC 也被称为多项式编码。它将数据比特串视为一个多项式,然后通过模2算术进行操作。
  • 发送方接收方需要事先协商一个 r+1 比特的生成多项式(G)
  • CRC 的核心思想是:发送方计算出r 个附加比特(R),并将它们附加到原始数据(D)后,形成一个 d+r 比特的新串。这个新串必须能够用模2算术G 整除(即余数为零)。

模2算术

  • 所有 CRC 计算都使用模2算术,它最大的特点是没有进位或借位
  • 在这种算术中,加法和减法都等同于按位异或操作。

CRC 的工作流程

  1. 发送方:为了计算 R,发送方将数据 D 左移 r 位,然后用 G 去除这个新结果。得到的余数就是 R。接着,发送方将 D 和 R 拼接在一起进行传输。
  2. 接收方:接收到完整的 d+r 比特数据后,用相同的 G 去除它。
  3. 判断:如果除法得到的余数为,则认为数据没有差错;如果余数非零,则表明数据在传输中出现了差错。

CRC 的强大之处

  • CRC 标准定义了多种生成多项式(如 8、12、16 和 32 比特)。
  • CRC 的差错检测能力非常强大:
    • 它可以检测出所有长度小于或等于 r 比特的突发差错(即连续的比特错误)。
    • 对于长度大于 r+1 比特的突发差错,在适当的假设下,它能以 的极高概率检测到。
    • 它还能检测到任何奇数个比特差错。

三.多路访问链路和协议

3.1 概述

两种网络链路类型

  • 点对点链路:连接两个单独的节点,一个发送方和一个接收方。例如,PPP 和 HDLC 协议就是为此类链路设计的。
  • 广播链路:允许多个节点连接到同一个共享信道上。当一个节点传输数据时,所有连接到该信道的其他节点都能收到一个副本。以太网和无线局域网都属于广播链路。

局域网 是一个地理上集中在一座建筑物中 ( 或者在一个公司 , 或者在大学校园)的网络 。

多路访问问题
在广播链路中,多个节点共享同一个信道,这带来了一个核心问题:如何协调谁在什么时候可以传输数据? 这个问题被称为多路访问问题

  • 碰撞(Collision):如果多个节点同时传输数据,它们的信号会相互干扰,导致所有传输的帧都丢失。这会浪费信道带宽,降低效率。
  • 多路访问协议:为了解决碰撞问题,计算机网络使用多路访问协议来规范节点在共享信道上的传输行为。

    多路访问协议的分类
    目前,大多数多路访问协议可以分为三大类:

  1. 信道划分协议:将信道划分成更小的部分,分配给每个节点专用,以避免碰撞。
  2. 随机接入协议:允许节点在任何时候随机发送数据,并在发生碰撞时采用特定机制(如延迟重传)来解决问题。
  3. 轮流协议:节点轮流获得传输机会,避免了碰撞。

理想多路访问协议的特性
在理想情况下,对于速率为 R bps 的广播信道,多路访问协议应该具有以下所希望的特性 :
1)当仅有一个节点发送数据时,该节点具有 R bps 的吞吐量;
2)当有 M 个节点发送数据时,每个节点吞吐量为 R/M bps 。这不必要求 M 个节点中的每一个节点总是有 R/M 的瞬间速率,而是每个节点在一些适当定义的时间间隔内应该有R/M的平均传输速率。
3)协议是分散的;这就是说不会因某主节点故障而使整个系统崩溃。
4)协议是简单的,使实现不昂贵。

3.2 信道划分协议

接下来介绍了三种信道划分协议,它们通过在多个节点间划分共享的广播信道来解决多路访问问题。这三种协议是:时分多路复用 (TDM)频分多路复用 (FDM)码分多址 (CDMA)
1.时分多路复用(TDM)

  • 原理:将时间划分为固定长度的时间帧,每个时间帧又被分成N个时隙。每个时隙被分配给一个特定的节点。
  • 工作方式:节点只能在分配给它的时隙中传输数据。当一轮时隙分配结束后,会重复下一轮。
  • 优点:彻底消除了碰撞,且对所有节点都非常公平,每个节点都获得了 R/N 的专用平均带宽。
  • 缺点:即使信道上只有一个节点有数据要发送,它也只能使用 R/N 的带宽,并且必须等待自己的时隙才能发送,这导致了效率低下。

    2. 频分多路复用(FDM)

  • 原理:将总的信道带宽(R bps)划分为N个更小的、互不重叠的频段,每个频段分配给一个特定的节点。
  • 工作方式:每个节点在分配给它的频段内进行传输,相当于在单个大信道中创建了N个独立的窄带信道。
  • 优点和缺点:与TDM类似,FDM也能消除碰撞并公平分配带宽。但它也同样存在效率低的问题,即当信道空闲时,单个节点也无法利用全部带宽。

3. 码分多址(CDMA)

  • 原理:不划分时间和频率,而是为每个节点分配一个独特的编码
  • 工作方式:节点使用各自的编码来对数据进行加密传输。由于编码经过精心设计,多个节点可以同时传输,而彼此的信号不会相互干扰。
  • 应用:CDMA 因其强大的抗干扰特性,被广泛应用于军事和民用领域,尤其是在蜂窝电话中。

    3.3 随机接入协议

    随机接入协议是第二大多路访问协议类型。它的核心思想是允许节点在任何时候以信道的全部速率(R bps)发送数据
    主要工作机制如下:
  • 发送:当一个节点有数据要发送时,它会立即发送,不进行事先协调。
  • 碰撞处理:如果多个节点同时发送数据并发生碰撞,所有涉及碰撞的节点都不会立即重发。
  • 随机延迟重发:每个碰撞的节点会独立地选择一个随机延迟时间。等待该时间过后,再尝试重发。
  • 解决碰撞:由于每个节点选择的延迟是随机的,很可能其中一个节点的延迟会比其他节点短,从而能够率先成功地将数据无碰撞地发送出去。

接下来将描述一些最常用的随机接入协议。
(1)时隙ALOHA
时隙ALOHA是一种简单的随机接入协议,旨在协调多个节点共享一个广播信道。它基于以下假设:

  • 所有数据帧大小相同。
  • 时间被划分为固定长度的时隙,每个时隙恰好能传输一帧。
  • 所有节点都保持同步,只在时隙的开始时刻传输帧。
  • 如果发生碰撞,所有节点都能在时隙结束前检测到。

协议工作机制

  • 发送新帧:当一个节点有新帧要发送时,它会等到下一个时隙开始并立即发送。
  • 成功传输:如果该时隙内没有其他节点发送,传输成功。
  • 碰撞处理:如果发生碰撞,节点会以一个预设的概率 p 在后续的每个时隙中独立地尝试重传,直到成功为止。

优缺点

  • 优点
    • 高效:当只有一个节点活跃时,它能够以信道的全部速率(R bps)连续传输,不像信道划分协议那样受限于固定带宽。
    • 高度分散:每个节点独立地进行碰撞检测和重传决策,不需要中心协调。
  • 缺点
    • 时隙同步:需要所有节点保持时隙同步,这在一些情况下可能难以实现。
    • 效率问题:当有多个活跃节点时,信道的一部分时隙会因碰撞而浪费,另一部分会因节点的随机传输策略而空闲。

协议效率

  • 定义:时隙ALOHA协议的效率被定义为:当有大量活跃节点且它们总有帧要发送时,长期运行中成功时隙(即只有一个节点传输的时隙)所占的比例。
  • 最大效率:通过数学推导可以得出,当节点数量趋于无穷时,时隙ALOHA协议的最大效率约为 0.37(或1/e)
  • 结论:这意味着即使在理想情况下,也只有大约37%的时隙被用于成功传输数据。例如,一个100 Mbps的信道,其有效成功传输速率将小于37 Mbps。

(2)ALOHA
纯ALOHA协议的工作机制

  • 无需同步:纯ALOHA是一个完全分散的协议,不需要节点进行时隙同步。
  • 立即发送:当一个节点有新帧时,它会立刻发送。
  • 碰撞处理:如果发送的帧与另一个或多个帧发生碰撞,该节点在发送完碰撞的帧后,会以概率 p 立即重传。
  • 成功后的处理:如果传输成功,或者该节点决定不重传,它会等待一个帧传输时间。之后,它以概率 p 再次发送帧,或者以概率 (1-p) 保持空闲。

纯ALOHA的效率

  • 成功传输的条件:一个节点的传输要成功,必须满足在它开始传输前的一个帧传输时间内,以及它传输的整个帧传输时间内,都没有其他节点开始传输。
  • 最大效率:通过数学推导,纯ALOHA的最大效率仅为 1/(2e),约为 0.18。这正好是时隙ALOHA最大效率的一半。

(3)载波侦听多路访问 (CSMA)
CSMA协议借鉴了人类交流中的礼貌规则,即“先听后说”。它比ALOHA协议更先进,旨在通过避免碰撞来提高信道利用率。

载波侦听

- **发送前先听**。节点在发送数据前,会先侦听信道。
- 如果信道是空闲的,节点才开始传输。
- 如果信道正在被占用,节点会等待,直到检测到信道空闲后再发送。

CSMA中的碰撞原因
既然所有节点都进行“载波侦听”,为什么还会发生碰撞?

  • 原因:根本原因在于信道的传播时延。信号从一个节点传播到另一个节点需要时间。
  • 时空图示例:当节点B开始传输时,它的信号需要一段时间才能传播到网络中的其他节点(例如节点D)。如果节点D在B的信号到达之前也有数据要发送,D会“错误地”认为信道是空闲的,并开始传输。
  • 结果:B的信号和D的信号会在信道上相互干扰,导致碰撞。
  • 结论:传播时延越长,发生这种碰撞的可能性就越大。因此,CSMA协议的性能会受到网络物理特性的严重影响。

(4)具有碰撞检测的载波侦听多路访问 (CSMA/CD)
CSMA/CD协议在载波侦听(CSMA)的基础上增加了碰撞检测(CD)功能。这意味着节点在发送数据时会同时监听信道。
协议运行步骤:

  1. 准备发送:节点从网络层获取数据报,准备好一个链路层帧,并放入适配器缓存。
  2. 载波侦听:侦听信道。如果信道空闲,立即开始传输;如果信道正忙,则等待直到信道空闲。
  3. 碰撞检测:在传输过程中,持续监听信道是否存在其他节点的信号能量。
  4. 处理碰撞
    • 如果在传输完成前没有检测到碰撞,则传输成功。
    • 如果在传输时检测到碰撞,则立即中止传输
  5. 随机回退:中止传输后,适配器会等待一个随机时间量,然后返回第2步。这种随机等待是为了避免多个发生碰撞的节点再次同时重传。

二进制指数后退算法
为了解决“随机等待时间应该多长”的问题,CSMA/CD使用了一种二进制指数后退算法。

  • 原理:每当一个帧发生第 n 次碰撞后,适配器会从一个包含 0 到 的集合中随机选择一个整数 K。
  • 等待时间:实际的等待时间是 K×512 比特时间(即发送512比特所需的时间)。
  • 指数增长:随着碰撞次数 n 的增加,选择 K 的集合呈指数级增大。这使得多次碰撞后,节点选择相同等待时间的概率大大降低,从而避免了持续的碰撞。

CSMA/CD效率

  • 定义:CSMA/CD的效率是在有大量活跃节点时,帧成功无碰撞传输的时间占总时间的比例。
  • 影响因素:效率主要取决于两个时间参数:
    • :信号在信道上两端之间传播的最大时延。
    • :传输一个最大长度的帧所需的时间。
  • 近似公式​​。
  • 直观理解
    • 趋近于0时,效率趋近于1。这意味着传播时延越小,碰撞就能越快被检测到并中止,信道浪费就越少。
    • ​ 变得很大时(即帧很长),效率也趋近于1。这意味着一旦一个帧获得了信道,它会占用很长时间,使得信道大部分时间都在进行有效传输。

3.4 轮流协议

轮流协议
轮流协议通过让节点按顺序轮流使用信道来避免碰撞,从而提高效率。它力求实现两个理想特性:

  1. 当只有一个活跃节点时,能以信道全速传输。
  2. 当有多个活跃节点时,公平地共享信道带宽。

1. 轮询协议(Polling Protocol)

  • 工作原理:指定一个节点为主节点。主节点循环地向每个节点发送一个特殊报文,告诉它可以开始传输。被轮询的节点在发送完一定数量的帧后,主节点再继续轮询下一个节点。
  • 优点
    • 彻底消除了碰撞和空闲时隙,效率更高。
  • 缺点
    • 轮询时延:主节点轮询每个节点需要时间,即使只有一个节点活跃,也必须等待轮询所有非活跃节点,导致其传输速率低于 R bps。
    • 单点故障:如果主节点发生故障,整个信道都会瘫痪。
  • 应用示例:802.15协议和蓝牙协议。

2. 令牌传递协议(Token-Passing Protocol)

  • 工作原理:信道中没有主节点,而是一个特殊的令牌帧在节点间按固定顺序循环传递。只有持有令牌的节点才有权传输数据。节点发送完数据后,将令牌传递给下一个节点。如果节点没有数据要发送,则立即将令牌转发给下一个节点。
  • 优点
    • 分散式:没有中心主节点,更加分散。
    • 高效率:与轮询协议类似,也能有效避免碰撞和空闲时隙。
  • 缺点
    • 单点故障:一个节点的故障(例如未能释放令牌)可能导致整个信道瘫痪。需要复杂的恢复机制来解决这类问题。
  • 应用示例:光纤分布式数据接口(FDDI)协议和 IEEE 802.5 令牌环协议。

3.5 DOCSIS: 用于电缆因特网接入的链路层协议

在前面我们已经学习了 3大类多路访问协议: 信道划分协议、随机接入协议和轮流协议。这里的电缆接入网将作为一种很好的学习案例,因为在电缆接入网中我们将看到这三类多路访问协议中的每一种。

DOCSIS 协议概述

  • DOCSIS 是一套用于电缆数据网络的规范。
  • 它使用 频分多路复用(FDM) 将下行(CMTS 到调制解调器)和上行(调制解调器到 CMTS)信道划分为不同的频率。
  • 下行信道:由于只有一个 CMTS 在发送数据,所以没有多路访问问题。
  • 上行信道:有多个电缆调制解调器共享同一个信道,因此存在多路访问问题。

多路访问协议的混合应用
DOCSIS 在上行信道上结合了多种协议来解决多路访问问题:

  1. 信道划分(TDM/轮流)
    • 上行信道被划分为一系列微时隙
    • CMTS(电缆调制解调器端接系统)充当主节点,通过下行控制报文(MAP)显式地为每个电缆调制解调器分配特定的微时隙来传输数据。
    • 这种显式分配确保了在这些微时隙中不会发生碰撞,类似于轮询协议
  2. 随机接入(ALOHA/CSMA-like)
    • CMTS 并不知道哪个调制解调器有数据要发送,所以它需要一种机制来接收请求。
    • 电缆调制解调器通过在特殊指定的微时隙内,以随机接入的方式向 CMTS 发送微时隙请求帧
    • 这些请求帧可能会发生碰撞。
    • 如果调制解调器在下行的 MAP 报文中没有收到对其请求的响应,它就推断请求发生了碰撞。
    • 一旦推断出碰撞,调制解调器会使用二进制指数回退算法来延迟重传请求,这类似于 CSMA/CD 中的处理方式。

总结
电缆接入网是一个极佳的例子,它展示了三种主要的多路访问协议类型(FDM、TDM、随机接入)如何协同工作:

  • FDM用于区分上下行信道。
  • 上行方向采用一种混合模式
    • 轮询(或集中分配)用于有序地传输数据帧,从而避免碰撞。
    • 随机接入用于发送最初的资源请求,并利用类似 CSMA/CD 的二进制指数回退机制来处理碰撞。

四.交换局域网

交换局域网是一种使用网络交换机作为核心连接设备的局域网。

4.1 链路层寻址和ARP

(1)媒体访问控制(MAC)地址
MAC 地址的基本概念

  • 地址归属:MAC 地址是分配给适配器的,而不是给主机或路由器本身。因此,一个有多块网卡的设备会有多个 MAC 地址。
  • 别名:MAC 地址也被称为 LAN 地址或物理地址。
  • 结构和格式:通常由6个字节组成(共48位),用十六进制表示,例如 IA-23-F9-CD-06-9B
  • 唯一性:全球唯一的,由 IEEE 组织管理。IEEE 向生产适配器的公司出售地址空间,保证不会出现重复地址。

MAC 地址与 IP 地址的区别
MAC 地址和 IP 地址在结构、层次和作用上都有显著差异:

特性 MAC 地址 IP 地址
结构 扁平结构:没有层次划分。 层次结构:包含网络部分和主机部分。
变化 固定:无论设备移动到哪里,MAC地址不变。 可变:当设备连接到不同网络时,IP地址必须改变。
类比 类似于人的社会保险号,固定且全球唯一。 类似于人的邮政地址,随居住地变化。

MAC 地址在局域网中的作用

  • 寻址和转发:当一个适配器要发送一个帧时,它会将目的地的 MAC 地址放入帧中。
  • 接收和丢弃:当一个适配器接收到一个帧时,会检查目的 MAC 地址是否与自己的地址匹配。如果匹配,它会接收帧并传递给上层协议;如果不匹配,它会丢弃该帧。
  • 透明性链路层交换机没有 MAC 地址,它通过学习 MAC 地址表来透明地转发数据帧。这意味着主机和路由器无需知道中间交换机的地址。
  • 广播:如果发送方想让局域网上的所有设备都接收该帧,它会在目的 MAC 地址字段中填入一个特殊的广播地址FF-FF-FF-FF-FF-FF)。所有接收到这个广播帧的适配器都会处理它。

(2)地址解析协议(ARP)
什么是 ARP?
地址解析协议(ARP)是用于在网络层地址(如 IP 地址)和链路层地址(如 MAC 地址)之间进行转换的协议。它的核心任务是根据一个设备的 IP 地址,找到其对应的 MAC 地址。

为什么需要 ARP?
在同一个局域网内,设备之间通过 MAC 地址进行通信。当一个主机要发送 IP 数据报给另一个主机时,它需要知道目的主机的 MAC 地址才能构建链路层帧。而主机通常只知道目的 IP 地址,因此需要 ARP 来完成这个地址转换。

ARP 的工作原理
每个主机或路由器都维护一个ARP 表,该表存储着 IP 地址到 MAC 地址的映射关系,并包含一个生存时间(TTL),过期后条目会被移除。
当主机 A(例如 IP 地址为 222.222.222.220)想发送数据给主机 B(例如 IP 地址为 222.222.222.222)时,会执行以下步骤:

  1. 查询 ARP 表:主机 A 首先检查自己的 ARP 表,看是否有主机 B 的 IP 地址到 MAC 地址的映射。
  2. 发送 ARP 查询(如果表中没有)
    • 如果 ARP 表中没有找到对应条目,主机 A 会构造一个ARP 查询分组
    • 该查询分组包含主机 B 的 IP 地址,并以MAC 广播地址FF-FF-FF-FF-FF-FF)封装在一个链路层帧中,发送到局域网。
    • 因为是广播,局域网上的所有设备都会接收并处理这个帧。
  3. 发送 ARP 响应
    • 收到查询的设备会检查其中的目的 IP 地址。
    • 只有主机 B 的 ARP 模块发现该 IP 地址与自己的地址匹配,它会向主机 A 发送一个包含自己 MAC 地址的 ARP 响应分组
    • 这个响应分组以单播形式发送,而不是广播。
  4. 更新 ARP 表并发送数据
    • 主机 A 收到响应后,会用主机 B 的 MAC 地址更新自己的 ARP 表。
    • 之后,主机 A 就可以将 IP 数据报封装在链路层帧中,并使用主机 B 的 MAC 地址作为目的地址,进行发送。

ARP 的特点

  • 即插即用:ARP 协议是自动运行的,无需系统管理员手动配置。
  • 跨层协议:ARP 分组既包含网络层地址(IP),也包含链路层地址(MAC),因此它被认为是一个跨越网络层和链路层边界的协议。
  • 局限于子网:ARP 只能解析同一子网内设备的地址,不能跨子网进行解析。

(3)发送数据报到子网以外
多子网网络环境

  • 一个路由器可以连接多个子网。
  • 路由器每个接口都有一个独立的 IP 地址、MAC 地址、ARP 模块和适配器。
  • 每个子网内的所有设备(包括路由器的接口)都有一个共同的网络地址前缀。

跨子网发送数据报的步骤
假设主机 A(在子网 1)要向主机 B(在子网 2)发送一个 IP 数据报。

  1. 发送方主机(主机 A)的 ARP 任务
    • 寻找下一跳:主机 A 的目标不是直接找到主机 B 的 MAC 地址。因为主机 B 不在同一个子网,所以主机 A 必须将数据报发送给通往目的地的路由器
    • 确定路由器地址:主机 A 的适配器需要知道路由器的IP 地址(即路由器在主机 A 所在子网的接口 IP)和对应的 MAC 地址
    • 执行 ARP:主机 A 会使用 ARP 协议,通过 ARP 查询来获取该路由器接口的 MAC 地址。
    • 封装与发送:一旦获得路由器的 MAC 地址,主机 A 会将包含目标 IP 地址(主机 B)的数据报封装在一个链路层帧中,并将帧的目的 MAC 地址设置为路由器接口的 MAC 地址。然后,该帧被发送到子网 1。
  2. 路由器的数据转发
    • 接收数据:路由器在子网 1 的接口收到该帧,因为帧的目的 MAC 地址是它自己的。路由器解封装帧,取出 IP 数据报。
    • 查询转发表:路由器根据 IP 数据报中的最终目的 IP 地址(主机 B 的 IP 地址),查询其内部的转发表来决定数据报应该从哪个接口转发出去。
    • 封装与发送:路由器将数据报传递给正确的出接口(即连接子网 2 的接口)。该接口需要将数据报封装进一个新的链路层帧中。
    • 再次执行 ARP:为了封装这个新帧,路由器需要知道主机 B 的 MAC 地址。它会再次使用 ARP 协议,在子网 2 中广播 ARP 查询,以获取主机 B 的 MAC 地址。
    • 完成传输:路由器获得主机 B 的 MAC 地址后,将新的帧发送到子网 2,最终被主机 B 接收。

4.2 以太网

以太网是到目前为止最流行的有线局域网技术。
(1)以太网的拓扑演进
以太网的物理拓扑结构经历了两次重大变革:

  1. 总线拓扑(20世纪70年代至90年代中期)
    • 工作方式:所有节点通过一根共享的同轴电缆总线相连。
    • 协议:使用 CSMA/CD 多路访问协议来管理信道。
    • 性质:这是一种广播局域网,所有传输的帧都会被所有连接到总线的适配器接收。
  2. 集线器星形拓扑(20世纪90年代后期)
    • 工作方式:用双绞线将所有主机连接到一个中心的集线器
    • 集线器:这是一种物理层设备。它接收到比特后,会重新生成并广播到所有其他接口。
    • 性质:同样是一种广播局域网,当多个帧同时到达集线器时,会发生碰撞。
  3. 交换机星形拓扑(21世纪初至今)
    • 工作方式:用交换机取代了中心的集线器。
    • 交换机:这是一种运行在数据链路层(第二层)的设备。它能存储和转发数据帧,并且能够实现无碰撞的通信。
    • 性质:这种拓扑将广播信道转变为点对点的通信,是现代以太网高效运行的基础。

(2)以太网帧结构

以太网帧共有6个字段,每个字段都有特定的功能:

  • 前同步码:8个字节。前7个字节(10101010)用于唤醒接收适配器并同步发送方和接收方的时钟。第8个字节(10101011)的最后两位(11)标志着帧的开始。
  • 目的地址:6个字节。包含目的适配器的MAC地址。接收适配器会根据该地址来决定是接收帧还是丢弃帧。
  • 源地址:6个字节。包含发送适配器的MAC地址。
  • 类型:2个字节。这个字段是多路复用/分解的关键,它告诉接收适配器应该将数据字段的内容交给哪个上层网络层协议(如 IP、ARP 等)来处理。
  • 数据:46-1500字节。承载网络层数据报(通常是IP数据报)。如果数据报小于46字节,需要填充至46字节的最小长度,网络层使用 IP 数据报首部中的长度字段来去除填充部分;最大传输单元(MTU)为1500字节,如果查过,主机必须将该数据分片。
  • CRC:4个字节。用于让接收适配器检测帧在传输过程中是否出现了错误。

(3)以太网的服务特性
以太网向网络层提供的是一种无连接、不可靠的服务。

  • 无连接:发送方在传输帧之前,不需要与接收方进行任何握手。它直接封装数据报并发送。
  • 不可靠:接收适配器在执行 CRC 校验后,不会发送任何确认或否定确认帧。如果一个帧通过了 CRC 校验,接收方会处理它;如果没有通过,它只会静默地丢弃该帧。发送方完全不知道帧是否成功到达。

(4)数据丢失的处理
即使以太网本身是不可靠的,上层协议也能确保数据传输的可靠性:

  • 如果应用程序使用 UDP,那么数据报丢失后,应用程序会看到数据流中的间隙。
  • 如果应用程序使用 TCP,那么由于 TCP 具有可靠性机制,它会发现数据丢失(通过超时或接收方的未确认),并触发发送方重传。从这个意义上讲,即使以太网丢弃了帧,TCP 也能确保数据最终会到达。这说明链路层的不可靠服务可以通过上层协议来弥补。

4.3 链路层交换机

(1)交换机转发与过滤
交换机转发与过滤

  • 过滤:判断一个帧是应该被转发还是被丢弃。
  • 转发:将帧从一个接口导向另一个接口。
  • 交换机表:是交换机进行过滤和转发的依据。交换机表中的一个表项包含 : 1.一个 MAC 地址; 2.通向该 MAC 地址的交换机接口;3.表项放置在表中的时间。

    交换机的工作流程
    当一个数据帧从某个接口(例如接口 x)到达交换机时,交换机会根据帧中的目的 MAC 地址来查询其交换机表,并采取以下三种行动之一:

  1. 目的地址不在表中
    • 操作:交换机会将该帧广播到除入口接口 x 之外的所有其他接口。
    • 原因:交换机不知道目的设备在哪里,因此只能通过广播来寻找。
  2. 目的地址在表中,且与入口接口 x 对应
    • 操作:交换机丢弃该帧(执行过滤功能)。
    • 原因:这表明目的设备与源设备位于同一个局域网网段,帧已经在这个网段内广播过了。转发到其他接口是多余的。
  3. 目的地址在表中,但与另一个接口 y 对应
    • 操作:交换机将该帧转发到接口 y。
    • 原因:这是最理想的情况,交换机可以精确地将帧发送到正确的目的地,避免了广播。

(2)自学习
交换机的自学习机制
交换机能够自动、动态地构建和维护其内部的交换机表,而无需人工配置或特定协议的干预。这种能力是通过以下三个步骤实现的:

  1. 初始状态:交换机表最初是空的。
  2. 学习过程:当交换机在某个接口接收到一个数据帧时,它会检查该帧的源 MAC 地址。然后,它在自己的表中记录下这个 MAC 地址、数据帧到达的接口以及当前时间。这样,交换机就“学会”了哪个设备连接到了哪个接口。
  3. 老化与更新:交换机表中的每个条目都有一个老化期。如果在一段时间内(例如60分钟),交换机没有再次收到来自某个 MAC 地址的帧,它就会自动从表中删除该条目。这确保了当设备被更换或移除时,交换机表能够保持最新。

即插即用特性
正是因为这种自学习能力,交换机成为了“即插即用”设备。网络管理员只需要将局域网设备连接到交换机的接口,而无需进行任何复杂的配置。交换机能够自主地适应网络的拓扑变化,极大地简化了网络管理。

此外,现代交换机通常是全双工的,这意味着任何接口都可以同时发送和接收数据,进一步提高了网络的效率。

(3)链路层交换机的性质
链路层交换机在局域网中提供了多重优势,解决了广播链路固有的问题:

  • 消除碰撞
    • 交换机通过内部缓存和智能转发,确保在任何一个网段上同一时间只有一个帧在传输。
    • 这消除了因碰撞而造成的带宽浪费,使得网络的聚合带宽(所有接口速率之和)得到充分利用,性能远高于共享介质的局域网。
  • 异质链路支持
    • 交换机将不同的网络段彼此隔离。
    • 这使得局域网可以包含不同速率(如 100 Mbps 和 1 Gbps)和不同物理介质(如铜线和光纤)的链路,方便新旧设备的混合使用。
  • 增强网络管理
    • 故障隔离:交换机能自动检测异常设备(如持续发送数据的“快而含糊”适配器)并将其隔离,防止其影响整个网络。
    • 故障定位:相比于传统总线网络中难以定位的物理断线,交换机使得故障范围仅限于受影响的单个设备,极大地简化了故障排除。
    • 数据收集:交换机还能收集带宽使用、碰撞率等数据,为网络管理员提供诊断、规划和解决问题的依据。

(4)交换机和路由器对比
交换机与路由器的根本区别

  • 交换机:工作在数据链路层(第2层),使用 MAC 地址转发数据帧。
  • 路由器:工作在网络层(第3层),使用 IP 地址转发数据报。
    尽管现代设备(如基于 OpenFlow 的交换机)可能同时支持第2层和第3层转发,但它们的核心设计理念和适用场景仍有不同。

交换机的优缺点
优点:

  • 即插即用:交换机具有自学习能力,无需人工配置,极大方便了网络管理。
  • 高速转发:由于只处理到第2层,其转发速度通常比路由器快。
  • 高聚合带宽:通过消除碰撞,有效利用所有接口的带宽,提高了网络总吞吐量。
  • 流量隔离:能将流量限制在必要的网段,避免不必要的广播。
    缺点:
  • 拓扑限制:为了防止广播帧循环,其活动拓扑必须限制为一棵生成树,这限制了网络的冗余路径。
  • 广播风暴:对广播风暴缺乏保护。如果一个设备持续发送广播帧,交换机会将其转发到所有接口,可能导致整个网络崩溃。
  • 大型网络开销:在大型网络中,需要巨大的 ARP 表,会产生大量的 ARP 流量。

路由器的优缺点
优点:

  • 无拓扑限制:由于 IP 地址的层次结构,路由器可以利用多条冗余路径,并使用最佳路径进行转发,拓扑结构更灵活。
  • 广播风暴防火墙:路由器不会转发广播帧,能有效隔离不同子网的广播风暴。
  • 健壮性:IP 数据报的 TTL(生存时间)字段能防止数据报在网络中无限循环。
    缺点:
  • 非即插即用:需要人工配置 IP 地址,安装和管理更为复杂。
  • 处理时间长:需要处理更高层次(第3层)的信息,导致每个分组的处理时间通常比交换机长。

何时使用交换机,何时使用路由器?

  • 小规模网络:对于只有几百台主机的网络,交换机通常是更好的选择。它们能够有效地进行流量本地化和提高吞吐量,且无需复杂的配置。
  • 大规模网络:对于有几千台主机的更大网络,路由器和交换机通常结合使用。路由器提供了更强大的流量隔离、广播风暴控制和更智能的路由功能,从而管理整个网络。

4.4 虚拟局域网

(1)传统局域网配置的缺点
传统的局域网配置(如分部门使用不同交换机)存在三个主要问题:

  1. 缺乏流量隔离:广播流量(如 ARP、DHCP)会跨越整个网络,造成性能下降和安全隐患。
  2. 交换机利用率低:如果每个工作组很小,需要为每个组配置一个独立的交换机,造成资源浪费。
  3. 用户管理困难:当员工移动或加入不同团队时,需要重新进行物理布线。

    (2)虚拟局域网(VLAN)
    VLAN 是一种解决方案,它允许在一个单一的物理基础设施上定义多个独立的虚拟局域网。在一个 VLAN 内的主机之间可以像在同一个物理网络中一样通信,而与外部 VLAN 隔离。

(3)基于端口的 VLAN
这是最常见的 VLAN 类型。

  • 工作原理:网络管理员将交换机的端口划分为不同的组,每个组就构成一个 VLAN。
  • 隔离:来自某个 VLAN 的广播流量只会到达该 VLAN 内的其他端口,实现了流量隔离。
  • 管理简化:当用户移动时,管理员只需通过软件重新配置其端口所属的 VLAN,无需重新布线。

(4)VLAN 间的通信
由于 VLAN 彼此隔离,不同 VLAN 之间的通信需要通过路由器来实现。

  • 方式:将 VLAN 交换机的一个端口连接到外部路由器,并将该端口配置为属于需要通信的多个 VLAN。这样,不同 VLAN 的流量就可以通过路由器进行路由和转发。
  • 逻辑:尽管共享物理交换机,但逻辑上看起来就像是通过路由器互联的两个独立网络。

(5)跨交换机的 VLAN
当一个 VLAN 跨越多个物理交换机时,需要一种VLAN 干线技术来连接这些交换机。

  • 干线端口:在每台交换机上配置一个特殊的干线端口,用以连接其他 VLAN 交换机。该干线端口属于所有 VLAN。
  • 802.1Q 标准:为了区分跨干线传输的帧属于哪个 VLAN,IEEE 定义了 802.1Q 帧格式。这种格式在标准以太网帧中增加了一个 4 字节的 VLAN 标签,该标签包含了 VLAN 标识符。
  • 工作过程:当帧从一个 VLAN 发送到干线时,发送侧的交换机为其添加 VLAN 标签;当帧到达另一侧的交换机时,接收侧的交换机解析并移除该标签,然后将帧转发到正确的 VLAN 端口。

(6)其他 VLAN 类型
除了基于端口的 VLAN,VLAN 还可以基于其他标准来定义,例如:

  • 基于 MAC 地址:根据设备的 MAC 地址来分配其所属的 VLAN。
  • 基于网络层协议:根据 IPv4、IPv6 等协议类型来划分 VLAN。

五.链路虚拟化:网络作为链路层

(1)链路虚拟化:网络作为链路
传统的链路概念是物理线路,但随着网络发展,这个概念被抽象化。例如,以太网交换机将多台主机连接成一个复杂的网络,但从主机的角度看,这个网络仍然像一个简单的“链路”。同样,拨号上网时,电话网被“虚拟化”为一条简单的链路。

MPLS 就是这样一种技术,它从因特网的视角看,将一个复杂的分组交换网络虚拟化为IP 设备之间的链路层互联服务

(2)多协议标签交换 (MPLS)

  • 起源与目的:MPLS 产生于 20 世纪 90 年代后期,旨在提升 IP 路由器的转发速度。它借鉴了虚电路网络的“固定长度标签”概念。
  • 工作原理:MPLS 启用的路由器(被称为标签交换路由器)在标准以太网帧和 IP 首部之间插入一个小的 MPLS 首部,其中包含一个标签
    • 路由器转发时,只需根据这个固定长度的标签来查找转发表,而不需要读取 IP 地址并进行复杂的“最长前缀匹配”查找。
    • 这种基于标签的转发机制比传统的 IP 路由更快。
    • MPLS 是即插即用的,它与 IP 路由选择协议协同工作,利用 IP 的寻址和路由能力,同时通过标签实现高效转发。
  • MPLS 帧格式:一个 MPLS 帧在链路层(如以太网)首部和网络层(IP)首部之间插入了 MPLS 首部。这意味着该帧只能在支持 MPLS 的路由器之间传输。

(3)MPLS 的核心优势
虽然最初目的是提升转发速度,但 MPLS 的真正价值在于其强大的流量管理能力。

  1. 流量工程(Traffic Engineering)
    • 传统的 IP 路由选择协议(如 OSPF)通常只选择一条最低成本的路径。
    • MPLS 允许网络运营商根据策略或性能需求,强制某些流量沿特定路径流动,即使这条路径不是最短的。例如,可以将视频流量和普通网页流量导向不同的路径,以优化网络性能。
  2. 快速恢复
    • MPLS 能够预先计算好备用路径。
    • 当主路径发生故障时,流量可以立即被重路由到备用路径上,实现快速恢复。
  3. 虚拟专用网(VPN)
    • MPLS 能够用于构建 VPN。
    • ISP 可以利用其 MPLS 网络将不同用户的网络连接起来,同时利用 MPLS 的标签来隔离不同用户的数据和寻址方式,从而确保数据安全和隐私。

六.数据中心网络

数据中心网络概览
数据中心是容纳数万到数十万台主机的巨型基础设施,用于支持各类云服务(如搜索、社交网络、电子商务)。数据中心网络负责连接内部主机,并将其与因特网连接。尽管网络成本只占总成本的一小部分,但网络创新对于降低整体成本和最大化性能至关重要。

数据中心网络架构
一个典型的数据中心网络包含以下组件:

  • 主机(刀片):数据中心的计算单元,负责提供内容和执行任务。它们被放置在机架上。
  • 机架顶部(ToR)交换机:位于每个机架顶部,连接该机架内的所有主机,并将它们连接到数据中心的其他交换机。
  • 边界路由器(Border Router):将数据中心网络与公共因特网连接起来。
    数据中心网络需要支持两种流量:
  1. 外部流量:从外部用户流向内部主机。
  2. 内部流量:在内部主机之间流动。

传统等级架构
为了管理大规模网络,数据中心通常采用分层等级架构

  • 结构:由边界路由器、接入路由器、多层交换机(通常是三层)和 ToR 交换机组成。
  • 流量瓶颈:这种架构存在一个主要问题:当不同机架的主机之间需要大量通信时,流量必须通过上层共享的链路。这些链路的聚合带宽有限,会导致严重的流量瓶颈,限制了主机间的通信速率,影响大规模分布式应用的性能。

负载均衡
为了管理外部流量,数据中心使用负载均衡器

  • 功能:负载均衡器接收来自外部用户的请求,并根据主机负载将请求分发给内部主机。
  • 安全性:它提供类似 NAT 的功能,将外部 IP 地址映射到内部主机 IP 地址,保护内部网络结构不直接暴露给外部用户。

数据中心网络的新趋势
为了解决传统架构的瓶颈,新的数据中心网络设计不断涌现:

  • 全连接拓扑
    • 方法:使用一种高度互联的拓扑结构,其中每台上层交换机都与所有下层交换机连接。
    • 优点:这提供了多条不相交的冗余路径,极大地增加了主机间的聚合带宽,缓解了流量瓶颈,并使主机位置对性能的影响最小化。
  • 模块化数据中心(MDC)
    • 方法:将一个“迷你数据中心”构建在标准集装箱内,运送到数据中心场地。
    • 挑战:需要设计高效的内部网络来连接集装箱内的数千台主机,以及一个强大的核心网络来互联所有集装箱。
  • 定制化与自动化
    • 大型云服务商正在定制几乎所有的网络组件,包括网络适配器、交换机、路由器和网络协议,以实现更高的性能和效率。
    • 可用性区域:通过在邻近的不同建筑物中复制数据中心,提供冗余和高可用性,同时确保数据同步。

七.回顾: Web 页面请求的历程

该段内容以学生Bob用笔记本电脑连接校园网络并访问www.google.com网页为例,回顾并综合了网络通信从物理连接到应用层的完整过程,详细阐述了在此过程中涉及的多种协议和概念。

1.准备阶段:DHCP、UDP、IP和以太网

  • DHCP(动态主机配置协议):Bob的电脑启动时没有IP地址,它首先发送一个DHCP请求。该请求被封装在UDPIP以太网帧中,其IP和MAC地址均为广播地址255.255.255.255FF:FF:FF:FF:FF:FF)。
  • DHCP响应:学校路由器中的DHCP服务器收到请求后,会为Bob的电脑分配一个IP地址,并提供DNS服务器IP默认网关IP等信息,这些信息同样通过以太网帧单播回给Bob的电脑。

2.DNS解析和ARP解析

  • DNS(域名系统):Bob在浏览器中输入www.google.com,电脑需要知道其IP地址。它生成一个DNS查询,封装在UDP和IP数据报中,目的IP地址是DHCP服务器分配的DNS服务器地址。
  • ARP(地址解析协议):在发送DNS查询数据报之前,Bob的电脑需要知道默认网关路由器的MAC地址。它会发送一个ARP查询,该查询广播到局域网中。网关路由器收到后,返回一个ARP回答,告知其MAC地址。

3.数据包的路由

  • DNS查询路由:Bob的电脑将DNS查询数据报封装在以太网帧中,目的MAC地址为网关路由器的MAC地址。该数据报在学校网络、Comcast网络中,通过域内路由协议(如RIP/OSPF)和域间路由协议(BGP),最终被转发到DNS服务器。
  • DNS响应路由:DNS服务器查找并返回www.google.com的IP地址(64.233.169.105),该响应数据包通过相同路径返回Bob的电脑。

4.客户-服务器交互:TCP和HTTP

  • TCP连接:Bob的电脑获得谷歌服务器IP后,发起TCP三次握手。它发送一个TCP SYN报文段,该报文段经过多级路由,最终到达谷歌服务器。谷歌服务器返回SYN ACK报文段,Bob的电脑再返回ACK,建立TCP连接。
  • HTTP请求与响应
    • HTTP GET请求:TCP连接建立后,Bob的浏览器发送一个包含HTTP GET报文的TCP报文段,请求网页内容。该报文段同样被路由到谷歌服务器。
    • HTTP响应:谷歌服务器读取GET报文,生成HTTP响应,将网页内容放入响应体,通过TCP连接发回Bob的电脑。Bob的浏览器最终渲染并显示网页。

该过程综合了DHCP、DNS、ARP、以太网、IP、TCP和HTTP等多种协议,展示了从应用层到物理层,再从物理层到应用层的完整数据流动过程。