《计算机网络自顶向下方法》笔记 (4) 链路层

链路层

链路层从网络层接受下传的数据报,并沿着链路将链路层分组帧(frame) 传递给下一个结点。

5.2 差错检测和纠正技术

奇偶校验

差错检测最简单的方式是使用单个奇偶校验位。在偶(奇)校验方案中,发送方只需包含一个附加的比特,使得初始信息加上一个校验比特中 1 的总数是偶(奇)数。接收方只需重新计数并比对即可。然而,很显然,奇偶校验只能检测出奇数个比特差错。

在这里插入图片描述

二维奇偶校验方案中,初始信息被划分为 i 行 j 列,对每行每列计算奇偶值,共产生 i+j+1 个校验比特。这样,包含差错比特的行和列的校验值都将会出现差错。因此,接收方不仅可以检测到单个比特差错,还可以利用存在奇偶校验差错的行和列的索引,来实际识别发生差错的比特,并纠正它。接收方还能够检测,一个分组中的两个比特差错的任何组合,但不能纠正它。除此之外,校验比特本身的单个比特差错也是可检测和可纠正的。

在这里插入图片描述

检验和

在检验和中,d 比特数据被当作一个 k 比特整数的序列处理。一个简单检验和方法就是将这 k 比特整数累加,并用得到的和作为差错检验比特。互联网检验和就基于这种方法,见 TCP/UDP 检验和字段。

循环冗余检测

循环冗余检测(CRC)编码,也叫多项式编码。考虑 d 比特的数据 D,发送方和接收方首先必须协商一个 r+1 比特模式,称为生成多项式 G,G 的最高有效位必须是 1。然后,发送方要选择 r 个附加比特 R,并将它们附加到 D 上,使得 d+r 比特模式(被解释为一个二进制数)用模 2 算术恰好能被 G 整除。接收方用 G 去除接收到的 d+r 比特,如果余数为 0,说明出现了差错,否则数据正确。其中,模 2 算术除法就是用异或(XOR)代替减法的除法。

在这里插入图片描述

G 在不同的发送数据间可以通用(由国际标准定义),而 R 必须针对发送的不同数据分别求出。求 R 的方法是 R = r e m a i n d e r ( D 2 r / G ) R = remainder(D·2^r/G)

D 2 r R = n G D·2^r \oplus R = nG --> D 2 r = n G R D·2^r = nG \oplus R --> R = r e m a i n d e r ( D 2 r / G ) R = remainder(D·2^r/G)

在这里插入图片描述

采用 CRC,能够检测出小于 r+1 比特的差错,而大于等于 r+1 比特的差错能以概率 1 0. 5 r 1-0.5^r 被检测到。

5.3 多路访问链路和协议

在广播链路中,所有结点都能传送帧,所以多个结点可能会同时传输帧,一个结点可能会同时接收多个帧,这些帧的信号混杂在一起,无法区分,这种情况称为碰撞。涉及碰撞的帧都丢失了,在碰撞时间间隔中的广播信道就被浪费了。因此,需要多路访问协议来协调结点的传输。多路访问协议主要有三种类型:信道划分协议、随机接入协议和轮流协议。

信道划分协议
  1. 时分多路复用(TDM):TDM 将时间划分为时间帧,并进一步划分每个时间帧为 N 个时隙,然后把每个时隙分给 N 个结点中的一个,结点将要发送的分组就在被指派的时隙内传输。TDM 优点在于,它消除了碰撞而且非常公平,每个结点在每个帧时间内得到了专用的传输速率 R/N bps。缺点在于,结点被限制于 R/N bps 的平均速率结点,也必须总是等待它在传输序列中的轮次,即使当它是唯一有分组要发送的结点时。

  2. 频分多路复用(FDM):FDM 将信道划分为不同的频段,每个频段具有 R/N bps 带宽,相当于将 R bps 信道划分为 N 个较小的 R/N bps 信道。FDM 具有与 TDM 相同的优缺点。

在这里插入图片描述

  1. 码分多址(CDMA):CDMA 为每个结点分配一个不同的编码,结点用各自的编码对数据进行编码,接收方再用相同的编码进行解码,就能够使得信道能够同时传输多个数据。具体讨论见后。
随机接入协议

在随机接入协议中,一个传输结点总是以信道的全部速率(R bps)进行发送。当有碰撞时,涉及碰撞的每个结点反复地重发它的帧,到该帧无碰撞地通过为止。但是当一个结点经历一次碰撞时,它不必立即重发该帧。相反,它在重发该帧之前等待一个随机时延。涉及碰撞的每个结点独立地选择随机时延,因此,这些结点之一所选择的时延,可能充分小于其他碰撞结点的时延,并因此能够无碰撞地将它的帧在信道中发出。

最常用的随机接入协议有 ALOHA 协议和载波侦听多路访问协议。

时隙 ALOHA

时隙 ALOHA 是最简单的随机接入协议之一,它基于以下假设:

  • 所有帧由 L 比特组成

  • 时间被划分为长度为 L/R 秒的时隙,即一个时隙等于传输一帧的时间

  • 结点只在时隙起点开始传输帧

  • 结点是同步的,每个结点都知道时隙何时开始

  • 如果在一个时隙中有两个或多个帧碰撞,则所有结点在该时隙结束之前检测到该碰撞事件

时隙 ALOHA 下的每个结点的操作非常简单:

  • 当结点有一个新帧要发送时,它等到下一个时隙开始并在该时隙传输整个帧
  • 如果没有碰撞,该结点成功地传输它的帧,从而不需要考虑重传该帧
  • 如果有碰撞,该结点在时隙结束之前检测到这次碰撞。该结点在后续的每个时隙中以概率 p 重传它的帧,直到该帧被无碰撞地传输出去

时隙 ALOHA 的优点在于,当只有一个活跃结点时,它能利用全部的带宽;同时,时隙 ALOHA 是高度分散的。它的缺点在于,一旦有碰撞,时隙就被浪费掉了。唯有刚好只有一个活跃结点的时隙是未被浪费的,这种时隙就叫做成功时隙。衡量协议的效率因此就有:长期运行中成功时隙的份额与总量之比。

成功时隙的概率为一个结点传输而其余结点不传输的概率。一个结点传输的概率为 p p ,其余结点不传输的概率为 ( 1 p ) N 1 (1-p)^{N-1} ,因此,一个结点成功传输的概率是 p ( 1 p ) N 1 p(1-p)^{N-1} 。因为有 N 个结点,只要有一个结点成功传输,这个时隙就是成功时隙了,所以成功时隙的概率为 N p ( 1 p ) N 1 Np(1-p)^{N-1} 。对该式求极限,能够得到时隙 ALOHA 的最大效率为 1/e = 0.37。

记 G 为负载,即传输一帧的时间内发送的帧的数量,时隙 ALOHA 的吞吐率 S = G × e G S = G \times e^{-G} 。当 G = 1 时吞吐率有最大值 0.37,与最大效率相符。

纯 ALOHA

在纯 ALOHA 中,当一帧首次到达,结点立即将该帧完整地传输进广播信道。如果一个传输的帧发生了碰撞,这个结点将在完全传输完该帧后,以概率 p 重传该帧。否则,该结点等待一个帧传输时间,并再次以概率 p 试图重传。重复,直到该结点重传该帧。

纯 ALOHA 的各结点是异步的,所以成功时隙的要求更为严格,即一个成功传输的帧,不仅要求在该帧传输的时间内没有其他帧在传输,还要求在距离该帧传输的时刻前刚好传输一帧的时间内没有其他帧在传输。换句话说,在纯 ALOHA 下,一个成功传输的帧,要求在能够传输两个帧的时间内,只有它一个帧在传输。前面我们知道,一个帧在传输一帧的时间内成功的概率为 p ( 1 p ) N 1 p(1-p)^{N-1} ,那么,在纯 ALOHA 下,一个帧成功的概率为 p ( 1 p ) 2 ( N 1 ) p(1-p)^{2(N-1)} ,总的概率即 N p ( 1 p ) 2 ( N 1 ) Np(1-p)^{2(N-1)} ,取极限为 1/(2e) = 0.18,仅为时隙 ALOHA 的一半。

纯 ALOHA 的吞吐率 S = G × e 2 G S = G \times e^{-2G} ,当 G = 1/2 时有最大值 0.18。

在这里插入图片描述

载波侦听多路访问

在 ALOHA 协议中,一个结点并不关心在它开始传输时是否有其他结点正在传输,导致了不必要的碰撞发生。**载波侦听多路访问(CSMA)**协议在纯 ALOHA 的基础上,实施载波侦听,即传输前先听信道。若结点检测到有其他帧正在信道上传输,不同的方案有着不同的行为:

  • 1-坚持:继续监听信道,当听到信道空闲时,以概率 1 发送数据。这种方法冲突的几率最高。
  • 非坚持:放弃监听信道,随机等待一段时间再开始监听。这种方法冲突的几率低,但降低了网络的效率。
  • p-坚持:继续监听信道,当听到信道空闲时,以概率 p 发送数据,概率 1-p 不发送数据并等待到下一个时隙继续尝试,直到发送成功。这种方法适用于信道有时隙且时隙周期大于等于最大传播时间,既减少了冲突,又提高了效率。

虽然载波侦听能够避免不必要的碰撞,但尚不能杜绝所有碰撞。因为物理现实的限制,帧在信道中传输是有时延的,所以结点不能立即检测到正在传输但尚未到达的帧,就导致了碰撞。信道传播时延越长,载波侦听结点不能侦听到网络中另一个结点已经开始传输的几率就越大。

在这里插入图片描述

具有碰撞检测的载波侦听多路访问

在 CSMA 中,即使发生了碰撞,结点仍将继续传输当前帧直到完整地传输该帧。然而,发生碰撞后,继续传输碰撞帧显然是无济于事的。**具有碰撞检测的载波侦听多路访问(CSMA/CD)**就实施了碰撞检测,即当一个结点在传输时一直侦听信道,若检测到碰撞发生,则立即终止传输,并等待一段随机时间,再开始载波侦听。

在这里插入图片描述

假设一个极端状况:一个网络内相隔最远的两个结点 A、B,A 正在传输一个帧,在 A 传输的帧无限趋近于 B 的时刻,B 恰好开始传输帧,于是,在无限小的时间后,两个帧发生了碰撞。A 若要检测到当前帧发生了碰撞,必须在传输该帧时检测到 B 传输来的帧信号。若 A 传输的帧长度过小,则可能在与 B 碰撞的帧到达之前,就完成了传输,A 也就无法得知刚刚传输的帧发生了碰撞。因此,结点传输的帧需要有一个最小长度,以确保极端条件下也能够检测到碰撞。这个最小长度与信道传播时延有关,在刚刚假设的极端状况中,我们可以得知,一个网络中的结点传输一帧的时间,必须大于等于比特在网络中相隔最远的两个结点间的信道来回一趟的时间,即 L / R 2 D / v L/R \ge 2D/v ,其中 L 为帧的长度,R 为信道的传输速率,D 为网络中相隔最远的两个结点的距离,v 为信道的传播速率。

在 10M 以太网中,最远两端数据的往返时间称为争用期,为 51.2 us,正好发送 512 b,即 64 字节。除去帧的头部字段长度,也就得到了 46 字节。

轮流协议
  1. 轮询协议:轮询协议要求这些结点之一被指定为主结点,主节点以循环的方式轮询每个结点,告知其能传输的帧的最多数量。轮询协议消除了碰撞和空时隙,但引入了轮询时延,和集中式的单结点故障缺陷。
  2. 令牌传递协议:一个称为令牌的小的特殊帧在结点之间以某种固定的次序进行交换。一个结点接收到令牌时,只有当它有帧要传输时才会持有它,并开始传输,否则它将令牌传递给下一个结点。

5.4 交换局域网

链路层地址

同 IP 地址一样,一个适配器(即网络接口)对应一个链路层地址。特殊的,交换机的接口并没有链路层地址,因为交换机透明地交换分组,而不需要主机或路由器明确地将帧寻址到交换机上。链路层地址有不同的称呼:LAN 地址、物理地址或 MAC 地址

MAC 地址长为 6 字节,采用十六进制标识法,如 1A-2B-3C-4D-5E-6F。MAC 地址是固定的且全球唯一的(虽然现在用软件改变 MAC 地址是可能的)。与 IP 地址的层次结构(网络号+主机号)不同,MAC 地址具有扁平结构,即无论适配器位于何处,地址都不会发生变化(区别于 IP 地址,在移动时,需要连接不同的子网,获取不同的 IP 地址)。

MAC 地址的广播地址为 FF-FF-FF-FF-FF-FF。

地址解析协议

地址解析协议(ARP)执行网络层与链路层之间的转换。ARP 与 DNS 类似,但不同之处在于,DNS 为整个因特网服务,ARP 只为身处的子网服务。

每台主机或路由器在其内存中具有一个 ARP 表,包含 IP 地址到 MAC 地址的映射关系,以及该映射关系的寿命(TTL,指示从表中删除该映射的时间,通常为 20 分钟)。当主机或路由器需要构造帧时,就需要从 ARP 表中查找相应的映射。若表中没有所需的映射,主机就要广播一个 ARP 查询分组,包括它的 IP 地址和 MAC 地址,以及目的 IP 地址。子网中的其他适配器接收到该帧后,这些适配器之上的 ARP 模块检查自己的 IP 地址是否与分组中的目的 IP 地址相匹配。与之匹配的,将单播一个 ARP 响应分组给查询主机,携带有相应的映射。查询主机接收到响应分组,并更新它的 ARP 表,从而能够发送刚刚构造的帧。

在子网内发送数据报很简单,但跨越子网的数据报发送就稍微复杂了些。跨子网的数据报发送,为其构造的帧中的目的 MAC 地址绝不是目的 IP 地址对应的 MAC 地址,若是如此,就无需网络层了。假设发送主机知道目的主机的 MAC 地址并将其封装在数据帧中,子网内的所有适配器发现其 MAC 地址与目的 MAC 地址不匹配,于是,该帧就无法被转发了。实际上,当要跨越子网时,帧的目的 MAC 地址应该置为其默认网关的 MAC 地址。默认网关收到该帧,利用路由表选择转发的接口,利用 ARP 表找到目的 IP 地址的 MAC 地址(或另一台路由器的 MAC 地址,交由其继续转发),发送该帧。

以太网

在这里插入图片描述

  • 数据字段:该字段承载 IP 数据报。以太网的数据字段长度必须在 46 ~ 1500 字节以内,不足 46 字节的将被填充至 46 字节,网络层使用 IP 数据报首部中的长度字段来去除填充部分。46 字节的最小长度的由来是 CSMA/CD 协议中的公式 L / R 2 D / v L/R \ge 2D/v ,以太网规定了最远距离,因此帧的最小长度也被确定了。
  • 目的地址和源地址字段:各 6 字节。
  • 类型字段:2 字节,与 IP 数据报中的协议字段类似,用于指示上层协议,以便多路分解。
  • CRC 字段:4 字节,差错检测。
  • 前同步码字段:8 字节,该同步码的前 7 字节都是 10101010,最后一个字节是 10101011。用于同步时钟。

以太网的 CSMA/CD 协议,不同之处,一是碰撞检测时检测到其他结点在发送数据,则立即中止发送,并发送一个 48 bit 的堵塞信号(jam signal);二是随机时间的选取采用二进制指数后退算法。当传输一个帧时,在该帧经历了一连串的 n 次碰撞后,结点随机地从 {0, 1, 2, …, 2^n - 1} 中选择一个 K 值。因此,一个帧经历的碰撞越多,K 选择的范围越大。对于以太网,一个结点选择的实际时间量是 512K 比特时间(即发送 512 比特进入以太网所需时间量的 K 倍),n 的最大值在 10 以内。

以太网向网络层提供的服务是无连接的、不可靠的,类似 UDP。接收方收到一帧时,若该帧未通过 CRC 校验,则接收方直接丢弃该帧,若通过了,也不会向发送方返送确认。若运输层协议使用 UDP,则丢弃未通过 CRC 校验的帧,会使得接收方的应用程序看到数据中的间隙(即缺失了比特);若使用 TCP,接收方的 TCP 发现数据不完整,会引起发送方的 TCP 重传。

交换机

交换机的运行对主机和路由器是透明的,也即无法感知的。当帧到达交换机时,交换机转发该帧。交换机接口设有缓存,以应对暂时的超过链路容量的帧,避免了碰撞。

过滤是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能。转发是决定一个帧应该被导向哪个接口,并把该帧移动到那些接口的交换机功能。交换机的过滤和转发借助于交换机表完成。交换机表中的一个表项包含:一个 MAC 地址,通向该 MAC 地址的交换机接口,以及表项放置在表中的时间。

交换机利用交换机表进行过滤和转发,有三种可能的情况:

  • 如果没有对应于目的地址的表项,交换机广播该帧。
  • 如果有一个表项对应于目的 MAC 地址,且该表项指示应转发的接口与将该帧到达的接口一致,说明该帧的源和目的处于同一个子网,交换机通过丢弃该帧执行过滤功能即可。
  • 如果有一个表项对应于目的 MAC 地址,且该表项指示应转发的接口并非该帧到达的接口,交换机将该帧转发到表项指示的接口。

交换机是自学习的,交换机表中所有的表项自动地建立,而不需要人为的配置。自学习过程是:

  1. 交换机表初始为空。
  2. 对于在每个接口接收到的每个入帧,交换机在表中存储该帧源地址字段中的 MAC 地址、该帧到达的接口以及当前时间,对应于表项中的三个字段。
  3. 如果在一段时间(称为老化期)后,交换机没有接收到以该地址作为源地址的帧,就在表中删除这个地址。

交换机消除了碰撞,并支持连接异质的链路,且更利于管理。

交换机与路由器类似,但是根本不同的。交换机是二层设备,路由器是三层设备;交换机是即插即用的,路由器需要人为配置 IP 地址;交换机具有相对高的分组过滤和转发速率,路由器处理的时间通常比交换机长;为了防止广播帧的循环,交换网络的活跃拓扑限制为一棵生成树,路由器的分组通常不会循环;交换机对广播风暴不提供任何保护措施,路由器对广播风暴提供了防火墙保护。

虚拟局域网

支持**虚拟局域网(VLAN)**的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。在一个 VLAN 内的主机彼此通信,仿佛只有它们与交换机相连。在一个基于端口的 VLAN 中,交换机的端口(接口)由网络管理员划分为组。每个组构成一个 VLAN,在每个 VLAN 中的端口形成一个广播域(即来自一个端口的广播流量仅能到达组中的其他端口)。

在这里插入图片描述

网络管理员使用交换机管理软件声明一个端口属于某个给定的 VLAN(其中未声明的端口属于一个默认的 VLAN),在交换机中维护一张端口到 VLAN 的映射表;交换机软件仅在属于相同 VLAN 的端口之间交付帧。

不同的 VLAN 之间要通信,可以将 VLAN 交换机的一个端口与一台外部路由器相连,并将该端口配置为属于需要通信的多个 VLAN。这样,逻辑上看起来就像路由器连通了这些 VLAN。当然,通过构建包含一台 VLAN 交换机和一台路由器的单一设备,就不需要外部路由器了。

两台 VLAN 交换机之间要通信,就需要各自将一个端口配置为干线端口并相连。干线端口属于所有 VLAN,发送到任何 VLAN 的帧经过干线链路转发到其他交换机。

猜你喜欢

转载自blog.csdn.net/HNUCSEE_LJK/article/details/106878243