计算机网络 自顶向下 第6章 链路层和局域网(上)读书笔记

最近在二刷《计算机网络——自顶向下》做点笔记,加深印象,书不在手边时也能有个参考。之前的章节会陆续补充。

两种链路层信道:

  • 广播信道:如有线局域网、卫星网、混合光纤同轴电缆(HFC)。需要媒体访问协议来协调帧传输。
  • 点对点通信链路:如长距离链路连接的两台路由器、PC到以太网交换机。

6.1 链路层概述

节点(node):运行链路层协议的任何设备。如主机、路由器、交换机、Wi-Fi接入点

链路(link):连接相邻节点的通信信道

6.1.1 链路层提供的服务

  1. 成帧:封装成链路层帧(如以太网帧格式)
  2. 链路接入:主要用于广播信道,媒体访问控制(MAC)协议,用于协调多个节点的帧传输
  3. 可靠交付:通常通过确认和重传实现。对于光线、同轴、双绞线,很少出现比特差错,可靠交付会产生不必要的开销,因此以太网没有提供可靠交付
  4. 差错检测和纠正:运输层有因特网校验和(checksum);链路层的差错检测更复杂,用硬件实现。以太网采用CRC,能够检测差错,但是不能纠正(直接丢弃)。

6.1.2 链路层在何处实现

链路层主体部分在网络适配器(网络接口卡NIC),其核心是链路层控制器

大部分链路层服务在硬件(链路层控制器)中实现:

  • 成帧:从内存中接收IP数据报
  • 链路接入
  • 差错检测

部分链路层在软件中实现:

  • 组装寻址信息、激活控制器硬件
  • 响应控制器中断、向上传递给网络层等

链路层是软硬件结合体, 是协议栈中软件与硬件交接的地方。

6.2 差错检测和纠正技术

通常,要保护网络层数据报以及链路层帧首部。即使采用了差错检测比特,还是可能有未检出比特出差。

三种技术:

  • 奇偶校验
  • 检验和(checksum):运输层
  • 循环冗余检测(CRC):适配器链路层

6.2.1 奇偶校验

  • 偶校验:数据+校验比特共偶数个1

  • 奇校验:数据+校验比特共奇数个1

实际上差错经常以“突发”的方式聚集在一起,一旦出错通常会有多个比特一起出错。单比特奇偶检验保护的一帧中未检出差错概率达50%。

二维奇偶检验

可以检测并纠正单个比特差错(包括校验比特本身)

  • 能够检测但不能纠正两个比特差错

6.2.2 检验和方法

d比特数据,按 k 比特划分为一个个整数,把这些整数加起来。

因特网检验和将数据按16bit整数对待,求和,取反码(每一位取反)。接收方对接收到的数据(包括检验和)求和取反,检测是否全1。

TCP和UDP对所有字段包括首部和数据字段都计算因特网检验和。

  • 运输层软件实现,简单快速
  • 链路层在适配器中用专用硬件实现,能快速执行复杂的CRC

6.2.3 循环冗余检测 CRC

也称为多项式编码,将发送比特串看成是系数是0和1的多项式。每个CRC标准都能检测

  • 任何小于r+1比特的突发差错
  • 任何奇数个比特差错
  • 长度大于 r+1 的比特突发差错以概率 1-0.5^r 被检测到

6.3 多路访问链路和协议

点对点链路:

  • PPP:Point-to-Point Protocol
  • HDLC:High-level Data Link Control

广播链路:

  • 以太网
  • 无线局域网

多路访问信道:

  • 有线共享(如电缆接入网)
  • 无线共享(如Wi-Fi)
  • 卫星

多路访问协议:规范共享广播信道上的传输行为,协调活跃节点的传输

  • 信道划分协议
  • 随机接入协议
  • 轮流协议

理想情况下,对于速率为 R bps的广播信道:

  1. 单节点发送,具有R bps吞吐量
  2. M个节点发送,每个节点平均吞吐量 R/M bps
  3. 协议分散,无单点故障
  4. 协议简单,实现成本低

6.3.1 信道划分协议

  • 时分多路复用 TDM
  • 频分多路复用 FDM
  • 码分多址 CDMA(Code Division Multiple Access)

TDM将时间划分为时间帧,每个时间帧 time frame 分为N个时隙 slot。TDM 消除了碰撞、公平。但单节点只能利用 R/N 带宽,即使只有一个发送节点。且节点必须等待轮次。

FDM 优缺点同 TDM:消除碰撞,单节点最大 R/N 带宽。

CDMA 对每个节点分配不同的编码,同时传输,不在乎其他节点干扰。CDMA编码类似于 TDM的时隙和FDM的频率。军用到民用蜂窝电话。

6.3.2 随机接入协议

节点总是以全部速率 R 发送。碰撞时,等待随机时延,反复重发,直到无碰撞通过。

以太网是CSMA协议。

1. 时隙 ALOHA

  • 所有帧长L比特
  • 时隙:传一帧所用的时间
  • 节点只在时隙起点开始传输帧
  • 节点是同步的,每个节点知道时隙何时开始
  • 如果碰撞,所有节点在时隙结束前检测到碰撞
  • 发送节点等待时隙开始,传输帧
  • 如果没碰撞,成功传输,无需重传
  • 如果碰撞,以概率p在后续时隙中重传

最大效率: 一个节点成功传输的概率 p*(1-p)^(N-1)

N个节点活跃节点,时隙 ALOHA的效率是 Np*(1-p)^(N-1)

当 N趋向于∞,最大效率 37%。另外37%空闲,另外26%碰撞。

2. ALOHA

非时隙、完全分散。收到网络层数据报,立即发送,如果碰撞,发完之后立即以概率p重传。

ALOHA 最大效率是时隙ALOHA的一半。

3. 载波侦听多路访问 CSMA

  • 载波侦听:节点发送前先听信道,如果有其他节点正在发送,则等待一段时间没有传输后再开始发送。

  • 碰撞检测:检测到碰撞,立即停止传输。

这两个规则包含在CSMA和CSMA/CD中。

为什么有载波侦听还会碰撞?因为传播时延。A节点发送数据,但传播到B节点需要一段时间,这时B节点也开始发送。传播时延越长,碰撞机会越大。

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

CSMA没有碰撞检测,即使碰撞也会继续发送完。

CSMA/CD 检测到碰撞立即停止传输。

  1. 适配器从网络层获取数据报,准备链路层帧,放入帧适配器缓存中
  2. 如果适配器侦测到信道空闲,开始传输;如果信道正忙,等待
  3. 传输过程中监听信道其他适配器的信号能量
  4. 如果传完整帧每检测到其他适配器信号能量,传输完成;如果检测到碰撞,终止传输
  5. 终止传输后,等待随机时间量,返回步骤 2

随机时间量的选取:以太网和DOCSIS使用二进制指数后退算法。一个帧经历n次碰撞后,随机从 {0…2^n – 1} 中选择K。对于以太网,等待的时间是发送512比特所需时间的K倍。

5. CSMA/CD 效率

定义:大量活跃节点,大量帧要发送

传输时间指传是一个最大长度以太网帧的时间,对于10M以太网,约为1.2ms。

效率=1/(1+5*传播时延/传输时间)

  • 传播时延接近0时,效率趋近1
  • 传输时间变大时,效率也趋近1(占用信道时间长)

6.3.3 轮流协议

6.3 节中对于速率为 R bps的广播信道的理想特性:

  1. 单节点发送,具有R bps吞吐量
  2. M个节点发送,每个节点平均吞吐量 R/M bps

随机接入的 ALOHA 和 CSMA 具备第1个特性,但不具备第2个特性。轮流协议可以满足第2个特性。

两种重要的轮流协议:

  • 轮询协议:有一个主节点,依次告知每个节点能够传输帧的最多数量,通过观察信道是否空闲判断节点是否发送完成。消除了碰撞和空时隙,但引入了轮询时延——依次询问每个非活跃节点。如果主节点故障,整个信道不可用!例子:802.15和蓝牙协议。
  • 令牌传递协议(token):没有主节点。小的令牌帧,以固定次序在节点之间交换。节点收到令牌,若有帧传输,则发送最大数目的帧数,然后把令牌发给下个节点;否则直接把令牌转发给下个节点。如果节点故障(如忘记释放令牌),可能使整个信道崩溃。

6.3.4 DOCSIS:用于电缆因特网的链路层协议

电缆接入网用到了信道划分协议、随机接入协议和轮流协议。

  • CMTS:Cable Modem Termination System,电缆调制解调器端接系统

  • DOCSIS:Data Over Cable Service Interface,CMTS:数据经电缆服务接口

DOCSIS 使用 FDM 将下行(CMTS到Modem)和上行(Modem到CMTS)划分为多个频率信道。每个上下行均为广播信道。下行只有CMTS发送,没有多路访问问题;上行可能出现碰撞。每个上行信道划分为时间间隔(类TDM),CMTS在下行信道通过MAP控制报文显式准许各个Modem在特定微时隙进行传输。

为了通知CMTS有数据发送,Modem在微时隙的特定间隔内向CMTS发送请求帧。请求帧以随机接入方式传输,不能帧听信道是否空闲,也没有碰撞检测,如果没有在下一个下行控制报文收到响应,则以二进制指数回退延缓重发。