一、数据链路层功能概述
1.1 基本概念
1.1.1 链路
网络中两个节点之间的物理通道,链路的传输介质主要有双绞线、光波和微波。
1.1.2 数据链路
网络中两个节点之间的逻辑通道,把实现数据传输协议(通信协议) 的硬件和软件加到链路上就构成了数据链路。
1.1.3 帧
链路层的协议数据单元,封装网络层数据报。
1.2 功能概述
1.2.1 为网络层提供服务
为 网 络 层 提 供 服 务 { 无 确 认 无 连 接 服 务 有 确 认 无 连 接 服 务 有 确 认 面 向 连 接 服 务 为网络层提供服务 \begin{cases}无确认无连接服务 \\ 有确认无连接服务\\ 有确认面向连接服务 \end{cases} 为网络层提供服务⎩⎪⎨⎪⎧无确认无连接服务有确认无连接服务有确认面向连接服务
1.2.2 链路管理
连接的建立、维持、释放(用于面向连接的服务)。
1.2.3 组帧
组 帧 { 封 装 成 帧 透 明 传 输 组 帧 的 四 种 方 法 { 字 符 计 数 法 字 符 ( 节 ) 填 充 法 零 比 特 填 充 法 违 规 编 码 法 组帧 \begin{cases} 封装成帧 \\ 透明传输 \\ \end{cases} 组帧的四种方法 \begin{cases} 字符计数法 \\ 字符(节)填充法 \\ 零比特填充法 \\ 违规编码法 \\ \end{cases} 组帧{封装成帧透明传输 组帧的四种方法⎩⎪⎪⎪⎨⎪⎪⎪⎧字符计数法字符(节)填充法零比特填充法违规编码法
1.2.3.1 封装成帧:就是在一段数据前后分别添加首部和尾部,构成一帧。首部和尾部的一个重要作用就是进行帧定界。
1.2.3.2 字符计数法:在帧头部中使用一个字段来标明帧内字符数
- 优点:简单
- 缺点:一旦首字节出错,帧边界将出错。更为严重的是,影响后续帧的帧边界界定。
1.2.3.3 字符填充法:以ASCII码字符来填充,作为首尾。
- 当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。
- 控制字符 SOH (Start Of Header) 放在帧的最前面,表示帧的首部开始。控制字符 EOT (End Of Transmission) 表示帧的结束。
1.2.3.4 位填充法(零比特填充法):每一帧使用一个特殊的位模式,即[01111110] (0x 7E)作为开始和结束标志字节。
这里就有一个透明传输问题:如果数据中的某个字节和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”。
那么如何解决透明传输问题呢,下面给出了两种方式:
- 字节填充或字符填充:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(0x 1B)。接收端的数据链路层删除插入的转义字符, 然后将数据送往网络层。如果转义字符“ESC”也出现在数据当中,那么在转义字符前面插入一个转义字符 ESC。当接收端收到连续两个转义字符时,删除前面一个。
- 用“位填充”法解决透明传输的问题:01111110 (0x 7E)作为开始和结束标志字节。当发送方数据链路层遇到数据中5个连续1时,自动在输出流其后加个0。接收方在数据流中看到5个连续1后面跟个0,自动将此0删去。
1.2.4 流量控制
流 量 控 制 的 方 法 { 停 止 等 待 协 议 滑 动 窗 口 协 议 { 后 退 N 帧 协 议 ( G B N ) 选 择 重 传 协 议 ( S R ) 流量控制的方法 \begin{cases} 停止等待协议 \\ 滑动窗口协议 \begin{cases} 后退N帧协议(GBN)\\ 选择重传协议(SR) \\ \end{cases} \\ \end{cases} 流量控制的方法⎩⎪⎨⎪⎧停止等待协议滑动窗口协议{后退N帧协议(GBN)选择重传协议(SR)
1.2.5 差错控制
位 错 / 比 特 错 { 检 错 编 码 { 奇 偶 校 验 码 循 环 冗 余 码 C R C 纠 错 编 码 — 海 明 码 位错/比特错 \begin{cases} 检错编码 \begin{cases} 奇偶校验码 \\ 循环冗余码 CRC \\ \end{cases} \\ 纠错编码—海明码 \\ \end{cases} 位错/比特错⎩⎪⎨⎪⎧检错编码{奇偶校验码循环冗余码CRC纠错编码—海明码
1.2.5.1 差错控制:在传输过程中可能会产生比特差错:1可能会变成0, 而0也可能变成1。
1.2.5.2 奇偶校验码:根据被传输的一组二进制代码的位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之为偶校验。
如果采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”。
1.2.5.3 循环冗余码CRC:在数据链路层传送的帧中,广泛使用了CRC的检错技术。其检错的原理是在原有数据后添加若干位数据,构成冗余码,用来检错。
冗余码的计算:
- 用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
- 得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商Q,余数 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。
- 将余数 R 作为冗余码拼接在数据 M 后面,一起发送出去。
接收端若得出的余数 R = 0,则判定这个帧没有差错,就接受 (accept),否则抛弃。
二、介质访问控制
介 质 访 问 控 制 { 静 态 划 分 信 道 — 信 道 划 分 介 质 访 问 控 制 { 频 分 多 路 复 用 F D M 时 分 多 路 复 用 T D M 波 分 多 路 复 用 W D M 码 分 多 路 复 用 C D M 动 态 分 配 信 道 { 轮 询 访 问 介 质 访 问 控 制 { 轮 询 协 议 令 牌 传 递 协 议 随 机 访 问 介 质 访 问 控 制 { A L O H A 协 议 { 纯 A L O H A 协 议 时 隙 A L O H A 协 议 C S M A 协 议 { 1 − 坚 持 C S M A 协 议 非 坚 持 C S M A 协 议 P − 坚 持 C S M A 协 议 C S M A / C D 协 议 C S M A / C A 协 议 介质访问控制 \begin{cases} 静态划分信道—信道划分介质访问控制 \begin{cases} 频分多路复用 {\rm {FDM}} \\ 时分多路复用 {\rm {TDM}} \\ 波分多路复用 {\rm {WDM}} \\ 码分多路复用 {\rm {CDM}} \\ \end{cases} \\ 动态分配信道 \begin{cases} 轮询访问介质访问控制 \begin{cases} 轮询协议 \\ 令牌传递协议 \\ \end{cases} \\ 随机访问介质访问控制 \begin{cases} {\rm ALOHA}协议 \begin{cases} 纯{\rm ALOHA}协议 \\ 时隙{\rm ALOHA}协议 \\ \end{cases} \\ {\rm CSMA}协议 \begin{cases} 1-坚持{\rm CSMA}协议 \\ 非坚持{\rm CSMA}协议 \\ P-坚持{\rm CSMA}协议 \\ \end{cases} \\ {\rm CSMA/CD}协议 \\ {\rm CSMA/CA}协议 \\ \end{cases} \\ \end{cases} \\ \end{cases} 介质访问控制⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧静态划分信道—信道划分介质访问控制⎩⎪⎪⎪⎨⎪⎪⎪⎧频分多路复用 FDM时分多路复用 TDM波分多路复用 WDM码分多路复用 CDM动态分配信道⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧轮询访问介质访问控制{轮询协议令牌传递协议随机访问介质访问控制⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧ALOHA协议{纯ALOHA协议时隙ALOHA协议CSMA协议⎩⎪⎨⎪⎧1−坚持CSMA协议非坚持CSMA协议P−坚持CSMA协议CSMA/CD协议CSMA/CA协议
2.1 随机访问介质访问控制
2.1.1 ALOHA协议
ALOHA是一种按需分配时分多址方式,或叫随机多址方式, 广泛用于各种无线数据通信网。
- 纯ALOHA协议:不监听信道,不按时间槽发送,随机重发。想发就发。
- 时隙ALOHA协议:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。控制想发就发的随意性。
2.1.2 CSMA—载波监听多点接入
CS:载波监听,每一个站点在发送数据之前,先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
协议思想:发送帧之前,先监听信道。
- 1-坚持CSMA:当监听到信道空闲时就直接发送数据,当信道忙时,要发送帧的站不断持续侦听,一有空闲,便发送。 长传播延迟和同时发送帧,会导致多次冲突,降低系统性能。
- 非坚持CSMA:当监听到信道空闲时就直接发送数据,当检测到信道忙时,不进行持续信道监听,而是等一个随机时间后,再进行监听。具有更好的信道利用率,延迟更大。
- P-坚持CSMA:当监听到信道空闲时以p概率直接发送数据,概率1-p等待到下一个时间槽再传输。忙则等待一个随机时间之后再进行监听。
2.1.3 CSMA/CD—载波监听多点接入/碰撞检测:带冲突检测的CSMA
碰撞检测:计算机边发送数据边检测信道上的信号电压大小。
二进制指数类型退避算法:
- 基本退避时间取为争用期 2 τ \tau τ
- 从整数集合 [0, 1, … , ( 2 k 2^k 2k - 1)] 中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间。
- 参数 k 按下面的公式计算:k = Min[重传次数, 10]。
- 当 k ≤10 时,参数 k 等于重传次数。
- 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
2.1.4 CSMA/CA—载波监听多点接入/碰撞避免:带冲突避免的CSMA
三、局域网、以太网802.3、无线局域网802.11、虚拟局域网
3.1 局域网
3.1.1 局域网的特点
3.1.2 局域网的优点
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统扩展和逐渐地演变,各设备位置可灵活调整和改变。
- 提高了系统的可靠性、可用性。
3.1.3 局域网分为两个子层
- 逻辑链路控制 LLC子层—802.2
- 媒体接入控制 MAC子层—802.3
3.1.3.1 MAC层 硬件地址
- 在局域网中,硬件地址又称为物理地址,或 MAC 地址。
- IEEE 802 标准规定 MAC 地址字段采用 6 字节(48位)。 前三个字节 (即高位 24 位),称为组织唯一标识符。 后三个字节 (即低位 24 位)由厂家自行指派,称为扩展唯一标识符
- 单播地址,组地址,广播地址:IEEE 规定地址字段的第一字节的最低位为 I/G 位,I/G 表示 Individual / Group。当 I/G 位 = 0 时,地址字段表示一个单播地址;当 I/G 位 = 1 时,表示组地址,用来进行多播(组播);所有 48 位都为 1 时,为广播地址,其只能作为目的地址使用。
- 全球管理与本地管理:IEEE 把地址字段第一字节的最低第 2 位规定为 G/L 位,表示 Global / Local。当 G/L 位 = 0 时,是全球管理(保证在全球没有相同的地址),厂商向 IEEE 购买的 OUI 都属于全球管理;当 G/L 位 = 1 时,是本地管理,这时用户可任意分配网络上的地址。
3.2 以太网802.3
3.2.1 以太网MAC帧格式的两种标准
- DIX Ethernet V2 是世界上第一个局域网产品(以太网)的协议。
- IEEE 802.3 是第一个 IEEE 的以太网标准。
3.2.1.1 以太网V2 MAC帧格式无效的MAC帧:
- 帧的长度不是整数个字节
- 用收到的帧检验序列 FCS 查出有错
- 数据字段长度不在 46 ~ 1500 字节之间。
3.2.1.2 IEEE 802.3 MAC帧格式
与以太网 V2 MAC 帧格式相似,区别在于:
- IEEE 802.3 规定的 MAC 帧的第三个字段是“长度 / 类型”。
- 当这个字段值> 0x0600 时(相当于十进制的 1536),表示“类型”。这样的帧和以太网 V2 MAC 帧完全一样。
- 当这个字段值< 0x0600 时, 表示“长度”。
- 当“长度/类型”字段值小于 0x0600 时,数据字段必须装入上面的逻辑链路控制 LLC 子层的 LLC 帧。
3.2.2 10BASE-T以太网
解释:10-速率为10Mbit/s
BASE-基带
T-双绞线
3.3 无线局域网802.11
3.4 虚拟局域网
3.4.1 虚拟局域网的优点
- 改善了性能
- 简化了管理
- 降低了成本
- 改善了安全性
3.4.2 划分虚拟局域网的方法
- 基于交换机端口
- 基于计算机网卡的MAC地址
- 基于协议类型
- 基于IP子网地址
- 基于高层应用或服务
四、广域网使用的链路层协议
4.1 PPP协议
4.1.1 PPP协议的特点:是目前使用最广泛的数据链路层协议,用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。只支持全双工链路。
4.1.2 PPP协议应满足的要求
- 简单:对于链路层的帧,无需纠错,无需序号,无需流量控制。
- 封装成帧:必须规定特殊的字符作为帧定界符
- 透明传输:与帧定界符一样比特组合的数据应该如何处理:异步线路用字节填充,同步线路用比特填充。
- 多种网络层协议:封装的IP数据报可以采用多种协议。
- 多种类型链路:串行/并行,同步/异步,电/光…,能够在多种类型的链路上运行。
- 差错检测:能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
- 检测连接状态:能够及时自动检测出链路是否处于正常工作状态。
- 最大传输单元:数据部分最大长度MTU
- 网络层地址协商:知道通信双方的网络层地址
- 数据压缩协商:必须提供一种方法来协商使用数据压缩算法。
4.1.3 PPP协议无需满足的要求
4.1.4 PPP协议的三个组成部分
- 一个将 IP 数据报封装到串行链路(同步串行/异步串行)的方法。
- 链路控制协议 LCP:建立并维护数据链路连接。
- 网络控制协议 NCP:PPP可支持多种网络层协议,每个不同的网络层协议都要一个相应的NCP来配置,为网络层协议建立和配置逻辑连接。
4.1.5 PPP协议的帧格式
- PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。
- 标志字段 F = 0x7E (二进制表示是 01111110)。
- 地址字段 A 只置为 0xFF,实际上并不起作用。
- 控制字段 C 通常置为 0x03。
- PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。
4.1.6 透明传输问题
- 当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充(零比特填充)
- 在发送端只要有 5 个连续 1,则填入一个 0。接收端每当发现 5 个连续1时,就把这5 个连续 1 后的一个 0 删除。
- 当 PPP 用在异步传输时,就使用一种特殊的字符填充法。
- 将信息字段中出现的每个 0x7E 字节变成2 字节 (0x7D, 0x5E)。
- 若信息字段中出现一个 0x7D 的字节, 将其变成 2 字节 (0x7D, 0x5D)。
- 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。
4.1.7 PPP协议的状态图
4.2 HDLC协议
五、链路层设备
链 路 层 设 备 { 物 理 层 拓 展 以 太 网 { 光 纤 集 线 器 链 路 层 拓 展 以 太 网 { 网 桥 { 透 明 网 桥 源 路 由 网 桥 交 换 机 ( 多 接 口 网 桥 ) { 直 通 式 交 换 机 存 储 转 发 式 交 换 机 链路层设备 \begin{cases} 物理层拓展以太网 \begin{cases} 光纤 \\ 集线器 \\ \end{cases} \\ 链路层拓展以太网 \begin{cases} 网桥 \begin{cases} 透明网桥 \\ 源路由网桥 \\ \end{cases} \\ 交换机(多接口网桥) \begin{cases} 直通式交换机 \\ 存储转发式交换机 \\ \end{cases} \\ \end{cases} \\ \end{cases} 链路层设备⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧物理层拓展以太网{光纤集线器链路层拓展以太网⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧网桥{透明网桥源路由网桥交换机(多接口网桥){直通式交换机存储转发式交换机
5.1 物理层拓展以太网
5.1.1 使用光纤拓展
- 主机使用光纤和光纤调制解调器连接到集线器。
- 光纤的时延小,带宽高,很容易使主机和几公里以外的集线器相连接。
5.1.2 使用集线器扩展
将多个以太网段连成更大的、多级星形结构的以太网。
- 优点:
- 使原来属于不同碰撞域的以太网上的计算机能够进行通信。
- 扩大了以太网覆盖的地理范围。
- 缺点:
- 碰撞域增大了,发生碰撞的概率增高,但总的吞吐量并未提高。
- 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
5.2 链路层拓展以太网
5.2.1 网桥
5.2.2 交换机
以太网交换机实质上就是一个多接口的网桥。相互通信的主机都是独占传输媒体,无碰撞地传输数据。
5.2.2.1 以太网交换机特点:
- 接口有存储器,能在输出端口繁忙时把到的帧缓存。
- 是一种即插即用设备,其内部的帧交换表(又称为地址表,转发表)是通过自学习算法自动地逐渐建立起来的。
- 使用专用的交换结构芯片,用硬件转发,速率快。
- 性能远远超过普通集线器,而且价格并不贵。
5.2.2.2 以太网交换机的优点:
用户独享带宽,增加了总容量.
5.2.2.3以太网交换机的交换方式
- 直通方式:接收数据帧的同时按数据帧目的MAC 地址决定该帧的转发接口,提高帧的转发速度。 缺点是它不检查差错就直接将帧转发出去,因此有可能将一些无效帧转发给其他站。
- 存储转发方式:把整个数据帧先缓存后再进行处理。
5.2.2.4 采用以太网交换机的星型以太网
5.3 碰撞域和广播域
5.3.1 碰撞域(collision domain)
又称为冲突域,是指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。 碰撞域越大,发生碰撞的概率越高。
5.3.2 广播域
广播域:网络中能接收任一设备发出的广播帧的所有设备的集合。