计算机网络 自顶向下 第6章 链路层和局域网(上)读书笔记
最近在二刷《计算机网络——自顶向下》做点笔记,加深印象,书不在手边时也能有个参考。之前的章节会陆续补充。
两种链路层信道:
- 广播信道:如有线局域网、卫星网、混合光纤同轴电缆(HFC)。需要媒体访问协议来协调帧传输。
- 点对点通信链路:如长距离链路连接的两台路由器、PC到以太网交换机。
6.1 链路层概述
节点(node):运行链路层协议的任何设备。如主机、路由器、交换机、Wi-Fi接入点
链路(link):连接相邻节点的通信信道
6.1.1 链路层提供的服务
- 成帧:封装成链路层帧(如以太网帧格式)
- 链路接入:主要用于广播信道,媒体访问控制(MAC)协议,用于协调多个节点的帧传输
- 可靠交付:通常通过确认和重传实现。对于光线、同轴、双绞线,很少出现比特差错,可靠交付会产生不必要的开销,因此以太网没有提供可靠交付
- 差错检测和纠正:运输层有因特网校验和(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的广播信道:
- 单节点发送,具有R bps吞吐量
- M个节点发送,每个节点平均吞吐量 R/M bps
- 协议分散,无单点故障
- 协议简单,实现成本低
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 检测到碰撞立即停止传输。
- 适配器从网络层获取数据报,准备链路层帧,放入帧适配器缓存中
- 如果适配器侦测到信道空闲,开始传输;如果信道正忙,等待
- 传输过程中监听信道其他适配器的信号能量
- 如果传完整帧每检测到其他适配器信号能量,传输完成;如果检测到碰撞,终止传输
- 终止传输后,等待随机时间量,返回步骤 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的广播信道的理想特性:
- 单节点发送,具有R bps吞吐量
- 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发送请求帧。请求帧以随机接入方式传输,不能帧听信道是否空闲,也没有碰撞检测,如果没有在下一个下行控制报文收到响应,则以二进制指数回退延缓重发。