1. 数据链路层的概念
- 链路是一条点对点的物理线路段,中间没有任何其他的交换节点
- 一条链路只是一条通路的一个组成部分
- 数据链路除了物理线路外,还必须有通信协议来控制数据的传输。将实现了这些协议的硬件和软件加到链路上,就构成了数据链路。
- 目的是让通信过程变得更加可靠
- 现在一般使用适配器(即网卡)来实现这些协议的硬件和软件
1.1 网络中的链路层

- 数据链路层传送的PDU(协议数据单元)是帧
1.2 数据链路层协议的作用

1.3 向网络层提供的服务
- 无确认的无连接服务
- 有确认的无连接服务
- 面向连接的服务
2. 数据链路层的功能
- 封装成帧(帧定界)
- 透明传输
- 差错控制
- 流量控制
注:一般适配器(网卡)都包括了数据链路层和物理层这两层的功能
2.1. 封装成帧
- 涉及问题
- 将上层(网络层)交下来的数据包按照所采用协议决定的格式,封装成一定形式的帧
- 考虑接收双方的同步问题(即定界)
- 计算帧的校验和并放入帧中并一起传送给接收方
- 协议数据单元PDU:帧

- 成帧方法
- 在一段数据的前后分别添加首部和尾部,就构成了一个帧
- 首部和尾部的一个重要作用就是进行帧定界

- 用控制字符进行帧定界

2.2 透明传输
- 透明:指一个实际存在的事物看起来好像不存在一样(不管所传数据是什么样的比特组合,都应当能够在链路上传送)
- 方法:字节填充或字符填充
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(0x1B)
- 接收端的数据链路层在将数据发往网络前删除插入的转义字符
- 如果转义字符本身出现在数据中,则在转义字符本身前插入一个转义字符。接收端接收到两个连续的转义字符时,删除前面一个

2.3 差错检测
- 在传输过程中可能会出现比特差错,0变成1,1 变成 0
- 差错:在通信接收端收到的数据和发送端发送的数据不一致的情况
- 误码率BER:在一段时间内,传输错误的比特占所传输比特总数的比率
- 数据链路层采取循环冗余检验CRC的检错技术
2.3.1 CRC原理
- 发送端,先把数据划分为组,每组k个比特
- 在每组M后面再添加供差错检测使用的N位冗余码,再一起发送出去

- 接收方接收到数据单元和CRC后,将整个码字除以给定除数(同生成CRC用的除数)
- 如果达到的数据没有差错,则接收方CRC校验器产生的余数应该是0,数据被接收,否则不接收

2.3.2 CRC 计算举例



2.3.3 CRC 特点
- CRC只能判断这个帧有无差错,无法判断哪一个或哪几个比特出现了差错
- 检错能力强,开销小
- 易于使用编码器及检测电路实现
2.3.4 纠错码
- 自动每一个二进制代码的传输差错是可以做到的,但是纠错码比检错码复杂的多,而且需要使用更多的冗余位,导致传输效率降低。因此,大部分的纠错码限于处理1-3位的差错
- 最常用的纠错码是“汉明码”,用来处理一位的错误
2.3.5 其他
- 自动请求重发ARQ:Automatic Repeat Request
- 自动发现差错并要求对方重发
- 正向纠错FEC:Forward Error Correction
- 自动发现并纠正错误
3. 数据链路层协议:PPP
- PPP协议在1994年成为互联网正式标准
- 简单、封装成帧、透明性
- 多种网络层协议:能在同一条物理链路上同时支持多种网络层协议
- 多种类型链路:能在多种类型的链路上运行
- 差错检测:能够对接收端收到的帧进行检测,并立即丢弃有差错的帧

3.1 PPP协议的帧格式
- PPP帧的首部和尾部分别为4个字段和2个字段
- 标志字段F=0x7E
- 地址字段A=0xFF
- 控制字段C=0x03
- PPP协议面向字节,所以帧长度是整数字节

3.2 字符填充(异步方式)
- 将信息字段中出现的0x7E字节转变成2字节序列(0x7D,0x5E)
- 将信息字段中出现的0x7D字节转变成2字节序列(0x7D,0x5D)
- 信息字段中出现ASCII码的控制字符(数值小于0x20的字符),则前面添加0x7D

3.3 零比特填充

3.4 PPP 协议的工作状态

3.4 PPP 协议的状态图

4. 多路访问协议
对于广播信道,需要解决信道分配问题,信道的分配方案
- 静态分配:传统的FDM和TDM。如果有N个用户,则将带宽或时间分为N份,每个用户静态地占用一个。缺点是不能很好的处理突发数据,有的用户无通信量时浪费资源
- 动态分配:异步时分多路复用
- 随机访问(争用):只要有数据,就可以直接发送,发送冲突再采取措施解决冲突。适用负载轻的网络
- 控制访问:发送站点先获得发送的权力,再发送数据,不会发生冲突。主要有轮转和预约两种方式
4.1 ALOHA 协议
- 最早采用争用协议的网络
- 两个版本
- 纯ALOHA协议:每个站点只要有数据就可以发送,通过监听信道来发现是否发送冲突,若冲突,则等待一段随机时间,再重新发送
- 时隙ALOHA协议:将信道时间分为离散的时间片,每个时间片分为离散的时间片,每个时间片可以用来发送一个帧。一个站有数据发送时,必须等到下个时间片的开始才能发送
4.2 随机接入协议:CSMA
- CSMA:载波监听多点访问,是ALOHA的改进协议。
- 采用了附加的硬件装置,每个站都能在 发送数据前监听信道上其他站是否在发送数据。如在 发送,则此站就暂不发送数据,从而减少了发送冲突 的可能。这样就提高了整个系统的吞吐量
- 根据监测时刻不同,及监测后采用策略的差异,可分为四种
4.2.1. 1-坚持CSMA
- “1” 的含义是当信道一但“闲”,数据以概率为1的原则发送。
- 信道一但”闲”,数据以概率为1的原则发送。
- 信道”忙”,连续监听,直至监听到通道”闲”,返回上一步。
- 优点:提高信道利用率
- 缺点:若有两个或更多的站同时在监听信道,则一但信道空闲 就必然使这些同时发送的帧互相冲突
4.2.2. P-坚持CSMA
- 若信道“闲”,以0<p<1的概率发送,以1-p的概率延迟一个随机时间段再发送
- 信道“忙”,则继续监听直到信道“闲”,返回第一步
- 优点:P可以设置以提高效率,但很难设置
4.2.3. 非坚持CSMA
- 监听到数据”闲”,则发送;
- 监听到数据“忙”,则放弃监听,按一定 退避算法延迟一段时间(这就是“非坚持”的 含义),返回上一步。
- 缺点: 延迟时间内可能会出现通道闲的情 况,利用率不高
- 优点: 采用随机重传时间减少碰撞概率
4.2.4. 带冲突检测的CSMA/CD
- 引入原因:当两个帧发生冲突时,两个被损坏帧继续传送毫无意义, 而且信道无法被其他站点使用,对于有限的信道来讲, 这是很大的浪费。如果站点边发送边监听,在监听到冲 突之后立即停止发送,可以提高信道的利用率,因此产 生了CSMA/CD
- 原理:
- 站点使用CSMA协议进行数据发送(1-坚持)
- 在发送期间如果检测到冲突,立即终止发送,并发出一 个瞬间干扰信号,使所有的站点都知道发生了冲突;
- 在发出干扰信号后,等待一段随机时间,再重复上述过程。
- CSMA/CD冲突域


4.3 令牌环

4.4 令牌总线


5. 以太网
- 局域网是在一个小区域范围内对各种数据通信设备实现互连的信息网
特点
- 地理范围有限,一般局限于几个建筑物内
- 传输速率比较高,延迟小
- 传输介质通常为光缆、双绞线

5.1 局部网的拓扑结构

5.2 局域网的IEEE 802 系列标准
- 802 系列标准定义了若干种LAN,包括对物理层、MAC子层的定义和描述
- 802.1:基本介绍和接口原语定义
- 802.2:逻辑链路控制(LLC)子层
- 802.3:采用CSMA/CD技术的局域网(以太网)
- 802.4:采用令牌总线技术的局域网
- 802.5:采用令牌环技术的局域网
- 802.11:Wifi

5.3. 局域网中的数据链路层
- 分为两层
- 逻辑链路控制子层(LLC)
- 通过提供统一格式,向网络层提供一个接口
- 支持链路的多路访问特性,建立/释放逻辑连接、差错控制、帧序号处理
- 屏蔽各种802网络的底层差异,如拓扑结构、介质、介质访问控制等
- 介质访问控制子层(MAC)
- 根据网络的拓扑结构和传输介质,不同的局域网采用不同的介质访问控制方法
- 成帧(各种不同的帧结构),拆帧、寻址等
- CRC校验

5.4 LLC的功能(已基本不用)
- 局域网对LLC子层是透明的
- 提供三种服务
- 无连接的服务
- 面向连接的服务
- 复用
- 差错控制和流量控制
- 类似HDLC协议,定义了三种格式
- 信息帧
- 监控帧
- 无编号帧
5.5 IEEE802.3 与 Ethernet(工业标准)


5.6. CSMA/CD
- 基本原理
- 侦听线路
- 空闲发送
- 边送边听(发送最小帧长64bytes的字节未检测到冲突,认为发送成功)
- 冲突后退(指数后退算法,回到第一步)
如何确定是64bytes(512bit)?
- CSMA/CD冲突域

5.7 以太网帧格式

物理地址
- 以太网中,物理地址,网卡地址,MAC地址,硬件地址意义相同,都是用来确认网络设备位置的位址
- MAC地址用于在网络中唯一标识一个网卡,一台设备若有一个或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址
- MAC地址使用6个字节表示,前三个字节为厂家代号,后三个字节为产品序列,要向OUI注册,以免冲突
帧类型
- 类型域 > 1500 (0x05-DC),为EthernetII帧格式。
- 0x0800表示IP,0x8138表示IPX,0x6004表示Decnet
- 否则为IEEE802.3帧格式
5.8 物理层选项与标识方法

10BASE-T 在局域网中的统治地位
- 10Mbit/s速率的无屏蔽双绞线星形网的出现,既降低了成本,又提高了可靠性,具有很高的性价比
- 10BASE-T 双绞线以太网的出现,是局域网发 展史上的一个非常重要的里程碑,它为以太 网在局域网中的统治地位奠定了牢固的基础
- 从此以太网的拓扑就从总线形变为更加方便 的星形网络,而以太网也就在局域网中占据 了统治地位
5.9 以太网传播时延

5.10 10M以太网组网规则(冲突域)


5.11 快速以太网IEEE802.3u




5.12 集线器hub组建以太网

5.13 网桥
- 网桥:是一种数据链路层的网络设备,即插即用,具有存储-转发装置。根据 帧的目的MAC地址,通过查找地址表(转发表)来进行转发
- 连接网段构成具有多个冲突域的系统,从而实现系统地理范围的扩展
- 把一个冲突域分割成多个冲突域,从而实现系统带宽的扩展,在一个网络中运行多机同时发送
- 具有容错功能
- 构成一个广播域(目的地址是广播地址或网桥的MAC表中找不到目的地址时,向除了自己的端口网外的所有端口发送)

6 交换机
- 多口的网桥 = 交换机(原理上)
- 交换机内部都有一张MAC地址表
- 三个基本功能:地址学习、帧转发、消除拓扑循环

6.1 地址学习
- 最初MAC地址表为空
- 逆向学习法:若收到的帧源地址不在表中,则插入到表中,作为以后转发的路径
- 泛洪法:对于目的MAC地址,如地址表没有记录,数据帧从其他所有端口转发出去(除了入口)
- 记录数据帧的源MAC地址,学习MAC地址和端口对应关系,并记录下来
6.2 帧转发
- 通过MAC地址表实现数据帧的单点转发
- MAC地址表的维护 :地址学习
6.3 全双工以太网
- 利用两对线同时发送和接收帧,不受CSMA/CD限制
- 传输距离较半双工模式要长
- 在链路的两个方向同时进行收发操作,从而使其链路的总带宽提高到一倍
- 基于Switch技术,要求点对点满足,接hub不行
6.4. 广播风暴

6.4.1 解决办法:流量本地化


7 VLAN
- IEEE 802.1Q 对虚拟局域网VLAN的定义
- VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪个VLAN

7.1 VLAN与LAN的区别
- VLAN提供控制网络广播的方法
- 通过使用VLAN技术,可以按交换机端口、MAC地址、协议进行逻辑分组
- 可以把一个交换机或多个相连的交换机的端口和用户划分为不同的组
7.2 两层交换机和三层交换机的区别

7.3 VLAN划分方法
- 按交换机的端口划分
- 按MAC地址划分
- 按数据类型划分
- 按组播地址划分
- 以上的组合
基于端口
基于MAC地址
配置静态VLAN
7.4 带标记帧的传输
- 帧中的VLAN标记

- 传输过程:对端根据VLANID来区分正确的VLAN,然后向该VLAN包含的端口转发

7.5 链路冗余

7.6 生成树协议 SPA
- 定义:生成树协议由IEEE 802.1d标准定义
- 作用:为了提供冗余链路,解决网络环路的问题
- 原理:通过生成树算法生成一个没有环路的网络,当主要链路出现故障时,能够自动切换到备份链路,保证网络的正常通信
- 要点:不改变网络的实际拓扑结构,但在逻辑上切断某些链路,使得从一台主机到所有其他主机的路径是无环路的的树状结构


链路聚合
- 定义:也称trunk,交换机把一组链路聚合起来,使得这些链路像是一条链路,这些端口称为聚合端口
- 作用:提高网络容量和可用性
- 范围:用于全双工以太网链路,且所有链路必须以统一速率工作
8. Gigabit Ethernet千兆以太网


9 无线局域网 IEEE 802.11

CSMA/CA协议:避免冲突的CSMA协议
- 无线局域网不能简单搬用CSMA/CD协议,主要有两个原因
- 碰撞检测:要求一个站点在发送本站数据时,必须不间断检测信道,但接收到的信号强度往往会远远小于发送信号的强度,成本过大
- 隐藏站点问题:即使能够实现碰撞检测,并且在发送数据时检测到信道是空闲的,在接收端也可能发送碰撞

- 暴露站点问题

- 802.11 在使用 CSMA/CA协议的同时,还增加使用停止等待协议
CSMA with Collision Avoidance协议
- 送出数据前,监听媒体状态,如信道空闲, 再等待一段随机的时间后依然没有人使用, 才送出数据。
- 发送方先激发(RTS)接收方发送一个短帧 (CTS),使接收方周围的站点不会在即将 到来的数据帧期间发送数据而导致冲突 (避免冲突)。
- 当多个站点同时向一个站点激发时仍会发 生冲突,在预定时间内没有收到CTS的发送 方采用二进制指数退避算法,在等待一随 机时间后再次重试。

- 三种帧类型:控制帧、数据帧、管理帧

