计算机网络基础:数据链路层
基本概念
作用
- 在物理层提供服务的基础上
- 向网络层提供服务
- 最基本的服务是将源自网络层来的数据可靠地传输到相邻结点的网络层
- 差错控制:主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
另一种说法:
- 为网络层提供服务
- 成帧
- 差错控制
- 流量控制
数据链路
物理连接(硬件)+ 通信协议(软件)
除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
- 常用适配器(网卡)来实现这些协议的硬件和软件
- 包括了数据链路层和物理层两层功能
帧
数据链路层的协议数据单元(PDU),封装网络层的数据报
信道
点对点信道、广播信道
三个基本问题
封装成帧
首部 + 数据 + 尾部
首部尾部:
- 控制信息
- 帧定界符(进行帧定界,可以识别开始和结束)
- SOH 帧开始
- EOT 帧结束
- 帧同步:接收方可以识别帧的开始和结尾
透明传输
- 无论怎样的比特都能传输
- 处理数据中和帧的边界相同的字符
- 字符计数法:在首部添加字段存储帧内字节数。错一个后面全错
- 字符填充:遇到 SOH 和 EOT 就插入转义字符 ESC ,遇到 ESC 也插 ESC
差错检测
噪声类型:
-
全局性噪声
随机噪声,是信道固有的。
解决方法:提高信噪比
-
局部性噪声
冲击噪声,产生差错的主要原因
解决办法:编码技术
差错检测:
- 位错:1变0 或 0变1
- 帧错:通过编号解决
- 丢失
- 重复
- 乱序
奇偶校验
n-1 位信息元,1 位校验元。奇偶校验码的区别为加上 1 位的校验位后整个码字中"1"的个数
有些错误无法检测出来、无法确定是哪些位出错
循环冗余码 (CRC,多项式码)
原始数据 + CRC冗余码 = 发送数据
得到CRC冗余码:
- 预先确定一定生成多项式 G(x),设其位数为 n
- 加 r 个 0,r 为生成多项式的阶数
- 加 0 后与多项式进行模 2 除法,余数即为冗余码 n-1 位
- 把原始数据加上这个余数,即能保证发送的数据一定能被 G(x) 整除
差错检验
- 收到的数据和生成多项式进行模 2 除法(加法不进位,减法不借位,刚好是每一位进行异或操作)
- 余数等于 0 则无误(即能被生成多项式整除)
被整除:A/B=0即A能被B整除
只能做到无差错接受,不能做到无差错传输,需要确认和重传
PPP 协议
协议特点
- 使用串行线路通信的面向字节的协议
- 目的是通过拨号或专线的方式来建立点对点的连接
- 主要用于广域网的互联网的正式标准的点对点协议
- 进行差错检测而不纠错,可以做到无差错接收(通过 CRC 校验)
- 只支持全双工链路
- PPP 的两端可以运行不同的网络层
- 被明确地设计成以软件的形式实现,且与调制解调器一起使用,故用字节操作要更加简单
组成部分
- 封装 IP 数据包到串行链路的方法:IP 数据包作为 PPP 帧的数据部分
- LCP 链路控制协议:验证身份、建立和维护连接
- NCP 网络控制协议:用于配置网络层,兼容多种网络层协议,每种协议都需要 NCP 的配置,为网络层协议建立和配置逻辑链接
帧格式
面向字节,所有帧长度都是整数字节
- 首部 4 个字段
- 1 Byte: 标志字段 F = 0x7E
- 1 Byte: 地址字段 A = 0xFF
- 1 Byte: 控制字段 C = 0x03
- 2 Bytes: 网络层协议字段
- 尾部 2 个字段
- 2 Bytes: FCS
- 1 Bytes: 控制字段 F = 0x7E
透明传输
在异步线路上使用字节填充法:若数据部分与标志位冲突,则需要进行字符填充
在同步线路上使用比特填充法
原字节 | 字符填充后 |
---|---|
0x7E | 0x7D, 0x5E |
0x7D | 0x7D, 0x5D |
A < 0x20 | 0x7D, A |
建立过程
局域网
局域网的特点
- 网络为一个单位所有
- 地理范围和站点数目有限
- 使用广播信道,各站点关系平等。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于拓展和演变,各设备的位置可灵活调整。
- 通信延时短,误码率低,可靠性较高。
- 数据传输速率范围在10Mb/s~10Gb/s
拓扑结构
- 星型网
- 总线网
- 环型网
以太网
标准
- IEEE 802.3 第一个以太网标准
- DIX Ethernet V2 第一个局域网产品的规约
以太网是符合 DIX Ethernet V2 标准的局域网
在 IEEE 802 标准中,局域网只包含 OSI 模型的物理层和数据链路层,在任意两个结点之间只有唯一的一条链路,所以不需要路由选择和流量控制,也就无需网络层。
分层
以太网将数据链路层分为了:
- LLC 逻辑链路控制层:识别网络协议,作为高层协议与 MAC 子层之间的标准接口
- MAC 媒体介入控制层:帧处理、差错控制,向上层屏蔽物理层访问的各种差异,提供物理层的统一访问接口
MAC 媒体介入控制层
网络接口板又称为通信适配器 或网络接口卡 NIC ,或“网卡”
重要功能:
- 安装驱动程序
- 串并行转换
- 数据缓存
- 实现以太网协议
硬件地址
- 共 6 个字节:3字节(组织唯一标识符)+ 3字节(扩展唯一标识符),必须保证生产出的适配器没有重复地址
- 适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址。
- 如果是发往本站的帧则收下
- 否则丢弃,不再进行其他的处理。
- “发往本站的帧”包括以下三种帧:
单播 (unicast) 帧(一对一)
广播 (broadcast) 帧(一对全体)
多播 (multicast) 帧(一对多)
MAC 帧
常用的以太网 MAC 帧格式有两种标准,只有微小差别,可以共存:
- DIX Ethernet V2 标准
- IEEE 的 802.3 标准
- 类型:标志上一层是什么协议
- 数据最小长度为 46 字节(低于这个长度则填充,保证整个帧大小不低于 64 字节也是最短有效帧),最大为 1500 字节
- FCS 为 4 字节(PPP为 2 字节)
前导码:在帧的前面插入(硬件生成)的 8 字节中
- 7 个字节,前同步码,实现 MAC 帧的比特同步
- 1 个字节,帧开始定界符,表示后面的信息就是 MAC 帧
无效 MAC 帧:
- 长度不是整数个字节
- FCS 有误
- 数据长度不在 46 ~ 1500 之间
- MAC 帧长度不在 64 ~ 1518 之间
重要措施
无连接
- 不对帧编号
- 不要求确认
- 不建立连接直接发送
- 只实现无差错接收,不实现可靠传输
因为局域网信道质量好,差错概率小
曼彻斯特编码
每一位的中间向上跳变为 0 ,向下跳变为 1(也有完全相反的设定,这里不讨论)
- 高频
- 自同步
- 占用的频带宽度比原始基带信号多一倍
差分曼彻斯特
位开始有跳变为 0 反之为 1
共享信道
多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败。
CSMA / CD
- 载波监听多点接入
- 多点接入:总线上有多台计算机
- 载波监听:发送前检测总线上有无数据
- 碰撞检测
- 边发送边检测信道上信号电压大小,若发送碰撞电压摆动会超过阈值
- 一旦发现总线上出现了碰撞,就要立即停止发送,然后等待一段随机时间后再次发送。

争用期
:A 站 到 B 站的单程传播时延
发送数据的站,最多在发送数据帧后至多经过时间 就可以知道发送的数据帧是否碰撞(最多经过 的时间发生碰撞,这个信息传回发送站最多需要 的时间),这就是争用期
参数 与信道利用率
- 多个站在以太网上同时工作就可能会发生碰撞。
- 当扣除碰撞所造成的信道损失后,以太网总的信道利用率并不能达到 100%。
- 设帧长为 L (bit),数据发送速率为 C (bit/s),则帧的发送时间为 。
表示碰撞可以立刻被检测出来,信道利用率高
表示争用期所占的比例增大,每发生一次浪费很多信道资源,利用率低
- 速率一定时,以太网的连线长度应该受到限制
- 帧长不能太短,否则 太小
二进制指数类型退避算法
发送碰撞后等待一个随机时间才能再发送数据(随机接入)
- 基本退避时间取为争用期的长度
- $ k = min(\text{重传次数}, 10) $
- 从 [0, 1, 2, 3,…, ()] 中随机取出一个数,即为 r,随机时间即为 r 倍的争用期,也就是
- 重传 16 次仍失败则丢弃,并报告上一层
最短有效帧长
最短有效帧长 = 速率 * 争用期长度
当检测到冲突停止发送时,此时发送出去的数据大小一定小于最短有效帧长,为无效帧。
以太网规定争用期为 51.2 微秒
特性
- 只能半双工通信
- 发送的不确定性使以太网的平均通信量小于以太网的最高数据率
局域网拓扑及设备
采用集线器的星形拓扑
- 采用双绞线
- 添加集线器(可靠性非常高,物理层)

逻辑上仍是总线网,仍使用 CSMA/CD 协议,共享逻辑上的主线
物理层扩展以太网
扩展方式
- 使用光纤扩展
- 使用集线器扩展
- 优点
- 使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。
- 扩大了以太网覆盖的地理范围。
- 缺点
- 碰撞域增大了。
- 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
- 优点
碰撞域
一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络
在数据链路层扩展以太网
网桥
工作流程:
-
网桥的每个端口与一个网段相连,网桥从端口接收网段上传送的各种帧
-
每当收到一个帧时,就先暂存在其缓冲中。检测差错,若有差错则丢弃。(存储转发)
-
若检查发往的目的站 MAC 地址属于另一网段,则通过查找转发表,将收到的帧送往对应的端口转发出去。若转发表中不存在,则发送到除输入网段之外的其它所有网段
特点:
- 网桥过滤了通信量,扩大了物理范围,提高了可靠性
- 可互连不同物理层、不同 MAC 子层和不同速率的局域网。
- 增加了时延,对用户太多和通信量太大的局域网不适合。
- 网桥工作在数据链路层。
- 当网桥收到一个帧时,根据 MAC 帧的目的地址对收到的帧进行转发或丢弃。
- 能够隔离冲突域
网桥与中继器
- 网桥工作在数据链路层,中继器工作在物理层
- 网桥只转发未出现差错、且目的站属于另一个网络的帧,而中继器会转发所有帧
- 中继器转发一帧时不用检测传输媒体,而网桥在转发前必须执 CSMA/CD 算法
- 网桥能够提高局域网的效率,并可以连接不同 MAC 子层 和 不同速率的局域网。
以太网交换机(交换式集线器)
实质上是一个多端口的网桥
并行:能同时连通多对接口,使多对主机能同时通信
隔离碰撞域:一个接口是一个碰撞域
即插即用:自学习地维护一张动态查找表,若帧的源地址不在查找表中则加入,若帧的目的地址不在查找表中则在除源端口外的端口进行广播
用户独享带宽:拥有 N 个端口的交换机总容量是传统共享式以太网的 N 倍(相比集线器只能有一个节点通过公共信道)
交换模式:
-
存储转发:接口有缓存器,先缓存再处理
-
直通方式:直接转发,不检查差错,不支持速率不同的端口
采用以太网交换机的星形拓扑
- 采用以太网交换机的星形结构成为以太网的首选拓扑。
- 以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,以全双工方式工作。但仍然采用以太网的帧结构。
交换机存在的问题:
-
回路问题:两台交换机形成回路后,由于交换表中不存在该数据,所以互相广播,导致帧在两台交换机之间来回传递。解决方法:使用生成树协议 STP,消除环路。
-
广播域:交换机上的所有设备都处于同一广播域中,容易引起广播风暴。
交换机与网桥的对比:
- 拥有十几个端口,而网桥一般只有 2~4 个
- 都工作在数据链路层
- 网桥的端口一般连接到局域网,而以太网的每个接口都直接与主机相连,交换机允许多对计算机间能同时通信
- 网桥使用存储转发方式,以太网可以直通也可以存储转发
- 以太网转发速度比网桥快
虚拟局域网
标准:IEEE 802.1Q
由一些局域网网段构成的与物理位置无关的逻辑组
只是局域网给用户提供的一种服务,不是一种新型局域网。
帧
在以太网的帧格式中插入 4 字节标识符 VLAN 标签,其中的后 12 位包含了 VLAN 的标识符 VID,可以识别 4096 个不同的 VLAN
- 主机并不知道自己所处的虚拟局域网的 VID
- 插入 VID 后 FCS 需要重新计算
- 若需要经过其它交换机,则 VLAN 标签由交换机在转发至其它交换机前插入,在转发至主机前取出,故主机发送和接收的都是标准以太网帧
优点
- 改善了性能——避免的广播风暴,节省了带宽
- 简化了管理——只需要网管改改配置
- 降低了成本——不需要购买更多的设备
- 改善了安全性——隔离的数据
划分方式
- 基于交换机端口
- 基于计算机网卡的MAC地址
- 基于协议类型
- 基于 IP 子网地址
- 基于高层应用或服务