第五章 数据链路层与局域网
type
status
date
slug
summary
tags
category
icon
password
5.1 数据链路层服务
向下:利用物理层提供的位流服务
向上:向网络层提供明确的服务接口


数据链路层功能
- 负责结点-结点(node-to-node)数据传输
- 组帧(Framing)
- 物理寻址(Physical addressing)
- 流量控制(Flow control)
- 差错控制(Error control)
- 访问控制(Access control)
结点:主机、路由器、交换机
链路:连接相邻结点的通信信道,包括有线链路、无线链路、局域网
帧:链路层(第2层)数据分组,封装网络层数据报
数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。
- 组帧:封装网络层数据报构成数据帧
- 字节计数法
- 带字节填充的定界符法
- 带比特填充的定界符法
- 物理层编码违例
帧同步:从物理层接收的比特流中准确区分出一帧的开始和结束






- 差错检测:信号衰减和噪声会引起差错,差错编码
- 差错纠正:前向纠错:接收端直接纠正比特差错——纠错码,通知发送端重传
- 链路接入:若物理信道是共享介质,需要解决信道接入,帧首部中的“MAC”地址,用于标识帧的源和目的
- 相邻结点间可靠交付:在低误码率的有线链路上很少采用(如光纤,某些双绞线等),无线链路误码率高,需要可靠数据传输协议(停-等协议、滑动窗口协议)
- 流量控制:协调相邻的发送结点和接收结点,避免接收端被数据“淹没”
基于反馈的流量控制:接收方反馈,发送方调整发送速率
基于速率的流量控制:发送方根据内建机制,自行限速
- 全双工和半双工通信控制
全双工:链路两端结点同时双向传输
半双工:链路两端结点交替双向传输
- 服务类型:无连接服务/面向连接服务
链路层的具体实现:每个主机或路由器接口,链路层在“适配器”(即网络接口卡-NIC)中实现或者在一个芯片上实现,连接主机的系统总线,由硬件、软件与固件组成


5.2 差错检测与纠正
差错编码可分为检错码与纠错码
汉明距离:两个码字之间对应位不同的数目
要把一个合法码字变成另一个合法码字,至少需要 d 位翻转;所以 ≤d 位翻转不会“伪装”成其他合法码字

差错检测
奇偶校验码
1比特校验位:检测奇数位差错
二维奇偶校验:检测奇数位差错、部分偶数位差错,纠正同一行/列的奇数位错
Internet校验和(Checksum)
发送端:
- 将“数据”(校验内容)划分为16位的二进制“整数”序列
- 求和:补码求和(最高位进位的“1”,返回最低位继续加)
- 校验和:sum的反码
- 放入分组(UDP、TCP、IP)的校验和字段
接收端:
- 与发送端相同算法计算
- 计算得到的校验和:
- 为16位全0(或sum为16位全1):无错
- 否则:有错
循环冗余校验码 CRC
检错能力更强大的差错编码
G(x)有 r 阶,G(x)位串有 r + 1 位,冗余码R有 r 位

广泛应用于实际网络(以太网,802.11 WiFi,ATM)


差错纠正
前向纠错FEC:纠错码
检错重发:停-等协议、滑动窗口协议
反馈检验
检错丢弃
课堂练习

汉明距离为3:要把一个合法码字变成另一个合法码字,至少需要 3 位翻转;所以 ≤2 位翻转不会“伪装”成其他合法码字。
5.3 多路访问控制(MAC)协议
两类“链路”:
- 点对点链路:拨号接入的PPP、以太网交换机与主机间的点对点链路
- 广播链路(共享介质):早期的总线以太网、HFC的上行链路、802.11无线局域网
单一共享广播信道,两个或者两个以上结点同时传输:干扰
结点同时接收到两个或者多个信号:冲突,接收失败
多路访问控制协议:采用分布式算法决定结点如何共享信道,即决策结点何时可以传输数据
必须基于信道本身,通信信道共享协调信息,无带外信道用于协调
理想MAC协议:
给定:速率为R bps的广播信道
期望:
- 当只有一个结点希望传输数据时,它可以以速率R发送数据
- 当有M个结点期望发送数据时,每个结点发送数据的平均速率是R/M
- 完全分散控制:无需特定结点协调,无需时钟、时隙同步
- 简单
信道划分MAC协议
时间、频带、码片划分
TDMA(时分多址)
“周期性”接入信道,每个站点在每个周期,占用固定长度的时隙,未用时隙空闲
例如:6-站点LAN:1、3、4传输分组,2、5、6空闲

FDMA(频分多址)
信道频谱划分为若干频带,每个站点分配一个固定的频带,无传输频带空闲
例如:6站点LAN:1、3、4频带传输数据,2、5、6频带空闲。

CDMA(码分多址)
WDMA(波分多址)
随机访问MAC协议
当结点要发送分组时:利用信道全部数据速率R发送分组,没有事先的结点间协调
两个或多个结点同时传输:冲突
随机访问MAC协议需要定义如何检测冲突、如何从冲突中恢复
时隙ALOHA协议
假定:
- 所有帧大小相同
- 时间被划分为等长的时隙(每个时隙可以传输1个帧)
- 结点只能在时隙开始时刻发送帧
- 结点间时钟同步
- 如果2个或2个以上结点在同一时隙发送帧,结点即检测到冲突
运行:当结点有新的帧时,在下一个时隙发送
- 如果无冲突:该结点可以在下一个时隙继续发送新的帧
- 如果冲突:该结点在下一个时隙以概率p重传该帧,直至成功

优点:
- 单个结点活动时,可以连续以信道全部速率传输数据
- 高度分散化:只需同步时隙
- 简单
缺点:
- 冲突,浪费时隙
- 空闲时隙
- 结点也许能以远小于分组传输时间检测到冲突
- 时钟同步
效率:长期运行时,成功发送帧的时隙所占比例。
最大效率= 1/e = 0.37
ALOHA协议
非时隙(纯)Aloha:更加简单,无需同步,当有新的帧生成时立即发送
冲突可能性增大:在t0时刻发送帧,会与在[t0-1, t0+1]期间其他结点发送的帧冲突

最大效率= 1/2e = 0.18,比时隙ALOHA协议更差
CSMA
载波监听多路访问协议:发送帧之前,监听信道(载波)
- 信道空闲:发送完整帧
- 信道忙:推迟发送
冲突可能仍然发生:信号传播延迟
继续发送冲突帧:浪费信道资源
CSMA/CD
带有冲突检测的载波监听多路访问协议:短时间内可以检测到冲突,冲突后传输中止,减少信道浪费
CSMA/CD应用于以太网,CSMA/CA应用802.11无线局域网

有线局域网易于实现:测量信号强度,比较发射信号与接收信号
无线局域网很难实现:接收信号强度淹没在本地发射信号强度下


课堂练习

轮转访问MAC协议
信道划分MAC协议:
网络负载重时,共享信道效率高,且公平
网络负载轻时,共享信道效率低
随机访问MAC协议:
网络负载轻时,共享信道效率高,单个结点可以利用信道的全部带宽
网络负载重时,产生冲突开销
轮转访问MAC协议:综合两者的优点
轮询
主结点轮流“邀请”从属结点发送数据

问题:轮询开销、等待延迟、单点故障
令牌传递
控制令牌依次从一个结点传递到下一个结点

令牌:特殊帧
问题:令牌开销、等待延迟、单点故障
共同点:开销、等待延迟、单点故障、无冲突、信道预约 + 数据传输
不同点:
- 轮询:集中式预约(分配)信道
- 令牌:分布式预约信道
比特映像介质访问控制协议

课堂练习

5.4 ARP协议(地址解析协议)
链路层寻址关键需求:唯一
- IP地址:32位(IPv4),接口的网络层地址,用于标识网络层(第3层)分组,支持分组转发
- MAC地址(LAN地址、物理地址、以太网地址)
作用:用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口
48位MAC地址(用于大部分LANs),固化在网卡的 ROM中,有时也可以软件设置
举例:1A-2F-BB-76-09-AD
广播地址:FF-FF-FF-FF-FF-FF
局域网中的每块网卡都有一个唯一的MAC地址
MAC地址由IEEE统一管理与分配,网卡生产商购买MAC地址空间(前24比特)
MAC地址是“平面”地址:可“携带”,可以从一个LAN移到另一个LAN
IP地址是层次地址:不可“携带”,IP地址依赖于结点连接到哪个子网
(在同一个LAN内)如何在已知目的接口的IP地址前提下确定其MAC地址?

A想要给同一局域网内的B发送数据报,但B的MAC地址不在A的ARP表中
- A广播ARP查询分组,其中包含B的IP地址
目的MAC地址= FF-FF-FF-FF-FF-FF
LAN中所有结点都会接收ARP查询
- B接收ARP查询分组,IP地址匹配成功,向A应答B的MAC地址
利用单播帧向A发送应答
- A在其ARP表中,缓存B的IP-MAC地址对,直至超时,超时后,再次刷新
ARP是“即插即用”协议:结点自主创建ARP表,无需干预

A 知道 B 的 IP 地址 是通过 上层应用或 DNS 获得的。
A 知道 R 的 IP 地址 是通过 系统网络配置或 DHCP 获得的。
A 通过 ARP 协议动态获得 R 的 MAC 地址。



课堂练习

5.5 局域网技术
以太网
以太网(Ethernet):应用最广泛的LAN技术
以太网物理拓扑:
- 总线:上世纪90年代中期前流行,所有结点在同一冲突域,可能彼此冲突
- 星型:目前主流网络拓扑,中心交换机、交换式以太网、每个结点一个单独冲突域(结点间彼此不冲突)

无连接:发送帧的网卡与接收帧的网卡间没有“握手”过程
不可靠:接收网卡不向发送网卡进行确认,差错帧直接丢弃,丢弃帧中的数据恢复依靠高层协议(如TCP),否则发生数据丢失
以太网的MAC协议:采用二进制指数退避算法的CSMA/CD

时隙时间 = 512 位(bit)传输所需要的时间,以太网最小帧长度(64 字节 = 512 bit)
以太网帧结构

- 前导码(8B):用于发送端与接收端的时钟同步,通常不计入帧长
- 目的MAC地址、源MAC地址(各6B):如果网卡的MAC地址与收到的帧的目的MAC地址匹配,或者帧的目的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),则网卡接收该帧,并将其封装的网络层分组交给相应的网络层协议,否则网卡丢弃该帧。
- 类型(2B):指示帧中封装的是哪种高层协议的分组,实现多路分解
- 数据(46-1500B):指上层协议载荷。
当 IP 数据包的大小 小于 46 时(以太网设备会读取 IP 的首部的长度字段以得知),以太网设备会自动在其末尾填充 0,使其大小为 46 字节。

- CRC(4B):循环冗余校验码,丢弃差错帧
许多不同的以太网标准
以太网命名格式:
速率 + Base + 介质类型 速率单位Mbps






以太网交换机
- 链路层设备
- 存储-转发以太网帧
- 检验到达帧的目的MAC地址,选择性向一个或多个输出链路转发帧
- 利用CSMA/CD访问链路,发送帧
- 透明:主机感知不到交换机的存在
- 即插即用
- 自学习:交换机无需配置
多端口间同时传输

主机利用独享链路直接连接交换机,交换机缓存帧,交换机在每段链路上利用CSMA/CD收发帧,但无冲突,且可以全双工。每段链路一个独立的冲突域
交换:A-A’与B-B’的传输可以同时进行,没有冲突
交换表
- 自学习:交换机通过自学习,获知到达主机的接口信息
当收到帧时,交换机“学习”到发送帧的主机(通过帧的源MAC地址),位于收到该帧的接口所连接的LAN网段,将发送主机MAC地址/接口信息记录到交换表中
- 帧过滤/转发:
- 记录帧的源MAC地址与输入链路接口
- 利用目的MAC地址检索交换表
- 在转发表中查找目的 MAC 地址对应的条目:
- 如果找到条目,说明交换机知道通过哪个端口能到达目的主机:
- 如果目的主机就在收到该帧的同一网段(即该端口对应的网络)上,就丢弃这帧(因为源端口和目的端口相同,直接发回没有意义)。
- 否则,把这帧转发到转发表中记录的那个端口。
- 如果没有找到条目,交换机就对除接收端口外的所有端口进行泛洪(flood),把帧转发出去以寻找目的主机。泛洪时交换机不会修改帧内容
当交换机收到帧:
- 交换机互联:同样自学习
- 交换模式
存储转发模式:默认模式,接收整个帧
直通模式:边收边发,接收到帧的目的地址(6B),即开始转发
无碎片模式:接收到帧的前64字节,即开始转发
课堂练习

目的地址6B,6 × 8 / 100 × 10^6
虚拟局域网 VLAN(未讲,自学,要求掌握)
- 动机:在一个规模较大的局域网(LAN)中,如果所有主机都处于同一个二层网络中,那么像 ARP 请求、DHCP 广播、未知目的 MAC 地址的帧 等二层广播流量都会被扩散到整个网络,这样不仅会占用带宽、降低效率,还会带来安全和隐私风险,并且使网络管理和控制更加复杂。
- 虚拟局域网(VLAN):VLAN 技术允许在同一个物理局域网的基础上,逻辑地划分出多个相互隔离的广播域,支持 VLAN 功能的交换机可以被配置成多个虚拟网络,每个 VLAN 内的主机可以像在独立的局域网中一样通信,而不同 VLAN 之间的通信则必须经过三层设备(例如路由器)转发。
- 基于端口的 VLAN:交换机管理员可以通过交换机的管理软件将端口分配给不同的 VLAN,这样一来,同一台物理交换机就可以像是多台逻辑上独立的虚拟交换机在运行:属于同一个 VLAN 的端口之间可以直接通信,不同 VLAN 的端口之间默认无法直接通信,从而实现隔离与管理。
- 多线缆连接,每个线缆连接一个VLAN
- 中继端口:在跨越多个物理交换机定义的VLAN承载帧 802.1q帧
流量隔离:去往/来自端口1-8的帧只到达端口1-8,也可以基于MAC地址定义VLAN, 而不是交换端口
动态成员:端口可以动态分配给不同VLAN
在VLAN间转发:通过路由,就像在独立的交换机之间。实践中,厂家会将交换机与路由器集成在一起
跨越多交换机的VLAN:
带VLAN标记的帧称为标记帧,普通以太网帧称为无标记帧

其他VLAN划分方法:基于MAC地址的VLAN、基于协议的VLAN、基于子网的VLAN
课堂练习

H5 发送帧给 H1,该帧首先进入 S2 的端口3,S2 查找转发表
S2 当前转发表为空,找不到目的MAC,进行泛洪(flood),把该帧发往除端口3(接收端口)以外的所有端口,也就是 H3、H4、S1
S1 收到来自 S2 的帧,S1 检查目的MAC地址 00-11-22-33-44-a1,转发表中有记录:该地址在端口1
S1 把帧转发到端口1,不会泛洪到其他端口
5.6 PPP协议(未讲,自学,要求掌握)
PPP协议
点对点数据链路控制:一个发送端,一个接收端,一条链路,比广播链路容易,无需介质访问控制,无需明确的MAC寻址
PPP(Point-to-Point Protocol)协议:常见的点对点数据链路控制协议之一
能够在不同的链路上运行,能够承载不同的网络层分组,简单、灵活
- 组帧:将网络层数据报封装到数据链路层帧中,可以同时承载任何网络层协议分组(不仅IP数据报),可以向上层实现分用(多路分解)
- 比特透明传输:数据域必须支持承载任何比特模式
- 异步传输时:字节填充
- 同步传输时:零比特填充
- 差错检测:无纠正
- 连接活性检测:检测、并向网络层通知链路状态
- 网络层地址协商:端结点可以学习/配置彼此网络地址
- 无需差错纠正/恢复,无需流量控制,不存在乱序交付,无需支持多点链路,差错恢复、流量控制等由高层协议处理




在交换网络层数据之前,PPP数据链路两端必须:
- 配置PPP链路:最大帧长、身份认证等
- 学习/配置网络层信息:对于IP协议:通过交换IPCP协议报文,完成IP地址等相关信息配置
PPPoE
以太网优点:原理简单,应用非常广,设备成本低
以太网缺点:安全性较低、不宜管理(使用广播信道,造成了安全性较低,无认证功能)
PPP优点:原理简单、安全性高(点对点信道,提供认证机制)、提供良好的访问控制和计费功能
PPPoE(Point-to-Point Protocol over Ethernet):提供在以太网链路上的PPP连接,实现了传统以太网不能提供的身份验证、加密,以及压缩等功能,实现基于用户的访问控制、计费、业务类型分类等,运营商广泛支持
PPPoE使用Client/Server模型,服务器通常是接入服务器


PPPoE可分为三个阶段:
- Discovery阶段:获取对方以太网地址,确定PPPoE会话ID
- Session阶段:PPP协商阶段、PPP数据传输
- Terminate阶段:会话建立以后的任意时刻,发送报文结束会话
5.7 链路虚拟化(未讲,不做要求)
Loading...