1. 概述
- 链路(Link):指一个节点到相邻节点的一段物理链路,中间没有任何其他的交换节点;
- 数据链路(Data Link):指将实现通信协议的硬件或软件加到链路上,构成数据链路;
- 数据链路层以数据帧为单位进行数据的传输和处理;
- 数据链路层需要解决的问题:封装成帧、差错检测、可靠传输
1)封装成帧:数据链路层需要对网络层传入的网络层协议数据单元添加帧头和帧尾;
2)差错检测:发送方通过检错算法计算检错码并放入帧尾中,接收方通过检错算法和检错码可判断数据帧是否发生误码;
3)可靠传输:接收方收到发生误码的数据帧后会将其丢弃,要想实现可靠传输需要借助一些特殊的手段。可靠传输指发送方发送什么,接收方就可以接收什么。 - 数据链路层设备:网桥、交换机;
2. 封装成帧
2.1 封装成帧
- 物理层:将构成数据帧的比特流转为电信号,发送到传输媒体中;
- 封装成帧:数据链路层将上层交付的协议数据单元添加帧头和帧尾,构成数据帧;
- 帧头和帧尾中含有重要的控制信息;
- 帧头和帧尾可以进行帧定界;
- 有的数据帧格式不需要帧定界符(以太网帧),有的数据帧格式需要使用帧头和帧尾实现帧定界符(PPP帧);
- 实现帧定界可以使数据链路层在物理层交付的比特流中成功提取正确的数据帧;
- 为了提高帧的传输效率,应使帧的数据部分尽可能大些,远大于帧头和帧尾长度;
- 数据帧有大小限制,每一种数据链路层协议规定了帧的数据部分最大长度,即最大传送单元MTU(Maximum Transfer Unit):
2.2 透明传输
- 透明传输:数据链路层对于上层交付的传输数据没有任何限制,好像数据链路层不存在一样;
- 实现透明传输的方法:
1)字节填充/字符填充(面向字节的物理链路):发送方发送数据帧前,对帧的数据载荷部分进行扫描,如果数据部分出现帧定界符或转义字符,就在帧定界符或转义字符之前插入一个转义字符。接收方收到比特流时,则可以正确提取数据帧。
2)比特填充(面向比特的物理链路,零比特填充法):发送方扫描数据帧数据部分,对数据部分中每5个连续的比特1后面插入1个比特0,确保帧定界符在数据帧中的唯一性。接收方收到比特流后提取数据帧,将数据帧数据部分中每5个连续比特1后的1个比特0删除即可。 - 转义字符:特殊的控制字符,占1字节,十进制值为27;
3. 差错检测
- 比特差错:数据帧通过物理层转换为电信号在传输过程中,可能收到干扰,原始比特0变为比特1,反之亦然,发生误码,称为比特差错;
- 误码率BER(Bit Error Rate):一段时间内,传输错误的比特数占所传输比特总数的比率;
- 差错检验码:检测数据在传输过程中是否发生了比特差错;
- 帧检验序列FCS(Frame Check Sequence):接收方数据链路层用于检测发送方发送的数据帧在传输过程中是否出现误码;
3.1 奇偶校验
- 奇偶校验:在待发送数据后添加1位奇偶校验位,使得此时数据部分中比特1的个数为奇数(或偶数),则为奇校验(偶校验);
- 奇偶校验只能检错,不能纠错;
- 奇偶校验:
1)如果奇数个比特位发生误码,则可以成功检错;
2)如果偶数个比特位发生误码,则会发生漏检,无法检错; - 奇偶校验出现漏检的概率很大,因此一般不使用!
3.2 循环冗余校验CRC(Cyclic Redundancy Check)
- CRC只能检错,不能纠错;
- 检错能力较强的检错方法,漏检率极低;
- CRC易于用硬件实现,因此广泛用于数据链路层;
- CRC计算时,商部分只是用于标记,防止对错位;真正计算时,使用**“异或”**操作进行;
- 发送方使用CRC计算时,需检查除法所得余数,余数长度需要和多项式最高次一致,如果不一致需要在余数前填充足够的比特0;
- 接收方使用CRC计算时,余数为0则表示未发生误码,反之则表示发生误码;
- CRC校验过程:
- 常用多项式:
- 示例:
4. 可靠传输
- 可靠传输指发送方发送什么,接收方就接收什么;
- 对于不可靠传输服务,接收方将误码数据丢弃即可;
- 一般有线链路误码率较低,为降低开销,不要求数据链路层向上层提供可靠传输服务,即使出现误码,交由上层处理即可;
- 无线链路易受干扰,误码率较高,因此要求数据链路层向上层提供可靠传输服务;
- 传输差错分为误码、分组丢失、分组失序、分组重复,一般分组丢失、分组失序、分组重复不会发生在数据链路层,而发生在上层;
- 可靠传输实现比较复杂,开销较大,是否使用可靠传输取决于应用需求;
- 可靠传输实现机制:1)停止-等待协议;2)后退N帧协议;3)选择重传协议;
4.1 停止-等待协议SW(Stop-and-Wait)
- 使用确认机制和重传机制实现可靠传输协议,这样的协议称为自动请求重传协议ARQ(Automatic Repeat reQuest );
- 滑动窗口机制,发送方窗口大小WT=1,接收方窗口大小WR=1;
4.1.1 基本工作过程
-
基本工作过程:使用(确认机制、重传机制):
1)发送方依次发送分组,只有在收到已发送分组的确认分组ACK才可以继续发送后续分组;
2)接收方进行差错检测发现分组误码,则给发送方返回否认分组NAK,发送方收到NAK后重新发送该数据分组;
-
分组丢失问题:使用超时重传机制解决;
1)发送方发送完分组之后不能立即删除分组缓存,只有收到该分组对应的确认分组ACK后
才可以删除;
-
分组重复问题:通过对数据分组(或确认分组)编号机制解决
1)确认分组ACK丢失,导致发送方重复发送分组,接收方收到重复分组;
2)接收方收到重复分组后丢弃该数据分组,并向发送方发送对应的确认分组;
1)确认分组ACK迟到,导致发送方重复发送分组,接收方收到重复分组则丢弃该数据分组,并向发送方发送对应的确认分组;
2)发送方收到重复的确认分组,则丢弃后面收到的重复确认;
4.1.2 注意事项
4.1.3 信道利用率
- 信道利用率太低,发送方大多时间处于空闲状态!
4.2 后退N帧协议GBN(Go-Back-N)
- 采用流水线传输提高信道利用率;
- 利用发送窗口限制发送方可连续发送数据分组的个数;
- 接受方只能按序接收数据分组;
- GBN是一种连续ARQ协议,也是一种滑动窗口协议;
- 通信链路质量不好时,GBN的信道利用率也很低!并不高于SW协议;
4.2.1 基本工作过程
- 滑动窗口机制,发送方窗口大小WT>1,接收方窗口大小WR=1;
- 发送窗口大小有上限,即WT<=2n-1,n为发送方对分组编号使用的比特位数;
- 基本工作过程:
- 1)发送方可依次连续发送发送窗口内未发送的数据分组;
- 2)接收方每按序收到一个数据分组后,就返回对应的确认分组,同时接收窗口向前移动一位;
- 3)发送方收到对应分组的确认分组后,发送窗口向前移动,并删除对应分组缓存;
4.2.2 累积确认机制
- 接收方不用针对每一个按序到达的数据分组返回确认分组,而是累积接收多个按序到达的数据分组,对按序到达的最后一个分组发送确认;
- ACKn表示序号n及以前的所有分组已经正确接收;
- 优点:
1)即使某些确认分组丢失,也不会造成分组重传;
2)降低接收方的开销,减少网络资源占用; - 缺点:
1)不能及时向发送方反馈接收方已经正确接收的数据分组相关信息;
4.2.3 对于特殊情况的处理
4.2.3.1 分组误码
- 发送方依次连续发送窗口内的数据分组,但按序到达的分组可能出现误码,接收方会丢弃误码分组;
- 后续到达的按序分组受到影响,无法与接收窗口内序号匹配,则丢弃这些分组,并逐个返回按序接收的最后一个分组的确认分组;
- 发送方收到多个重复确认分组后,将窗口内的分组全部重发;
- 快重传机制:
- 超时重传机制:
4.2.3.2 分组重复
- 发送窗口WT不能超过其上限,否则接受方可能会无法区分新、旧分组,造成严重的分组重复问题;
4.2.4 注意事项
4.3 选择重传协议SR(Select Repeat)
- GBN协议下,接收方只能按序接收分组,分组误码可能导致发送方发生不必要的重传;
- SR协议设法只重传误码分组,因此接收窗口WR>1,以便接收方可以先收下失序到达但无误码并序号在接收窗口内的分组,等窗口内所有序号对应分组到达,再统一交付上层;
- SR协议要求只重传误码分组,因此接收方必须对每个分组进行确认,而不能采取累计确认机制!
4.3.1 基本工作过程
- 基本工作过程与GBN类似,通过滑动窗口实现,区别在于SR协议接收方窗口大小WR>1:
1)发送方将发送窗口中的数据分组依次连续发送;
2)接收方接收分组序号在接收窗口内并且无误码的分组,且对每一个分组进行确认(在此期间按序到达多少分组,接收窗口即可向前移动多少步);
3)发送方收到分组的对应确认分组后进行记录(在此期间按序到达多少分组,发送窗口即可向前移动多少步),如果发送窗口内有的分组未收到确认分组则会触发超时重传(只重传该分组);
4.3.2 发送/接收窗口大小限制
- 发送方窗口大小WT>1,接收方窗口大小WR>1;
- SR协议中,一般取WR=WT;
- 发送窗口WT不能超过其上限,否则接受方可能会无法区分新、旧分组,造成严重的分组重复问题;
4.3.3 注意事项
5. 点对点协议PPP
- PPP:Point-to-Point Protocol;
- 目前使用最广泛的点对点数据链路层协议;
- 向上层不提供可靠传输服务!!
5.1 PPP协议组成
5.2 PPP帧格式
5.3 PPP协议实现透明传输
- 字节填充或比特填充;
5.3.1 字节填充/字符填充
- 在特殊字符前插入转义字符;
5.3.2 比特填充
5.4 PPP协议实现差错检测
- 接收方发现分组误码丢弃即可;
5.5 PPP协议工作状态
- 拨号接入为例:
6. 媒体接入控制
- 如下使用共享信道的局域网,如果同一时刻有多个站点发送数据,则多个信号会发生碰撞,站点均发送数据失败;
- 媒体接入控制MAC(Media Access Control)即是在共享信道下,协调多个发送和接入站点对一个共享传输媒体的占用;
- 媒体接入控制方式:
- 有线领域,使用点对点链路和链路层交换机的交换式局域网已经完全取代了共享式局域网;
6.1 静态划分信道
- 频分多址、时分多址、码分多址;
- 信道复用:通过一条物理信道同时传输多路用户的信号;
- 频分复用FDM:
1)将传输线路的频带资源划分为多个子频带,子频带之间必须设置隔离频带;
2)多个用户同时占用不同的频带资源进行并行通信;
- 时分复用TDM:
1)将传输线路的带宽资源按时隙轮流分配给不同用户;
2)多个用户在不同时间占用同样的频带宽度进行通信;
- 波分复用WDM:
1)实质是光的频分复用;
- 码分复用CDM:
6.2 动态接入控制
6.2.1 随机接入
6.2.1.1 载波监听多址接入/碰撞检测CSMA/CD
- 用于总线局域网;
- 帧间最小间隔:总线空闲96比特时间;
- 帧间最小间隔的作用:
1)使得接收方可以检测出一个帧的结束;
2)使得其他所有站点有机会平等竞争信道并发送帧; - 多址接入:多个主机连接在一根总线上,各主机随机发送帧;
- 基本流程:
1)主机发送帧之间先检测总线空闲96比特时间,如果总线空闲则发送数据帧;
2)发送数据帧的同时需要进行碰撞检测,如果检测到信号碰撞则立即停止发送,退避一段时间后再次发送;
- 争用期或碰撞窗口:以太网端到端往返时延2τ;
共享式以太网不能连接太多主机,且总线长度不能太长!! - 最小帧长:以太网规定最小帧长为64字节;
- 最大帧长:规定数据载荷部分的大小,即最大传送单元MTU;
- 退避时间计算-截断二进制指数退避算法:
- 信道利用率:
- 帧发送流程:
- 帧接收流程:
6.2.1.2 载波监听多址接入/碰撞避免CSMA/CA
- 用于无线局域网;
- 无线局域网向上层提供可靠传输;
- 无线局域网不能进行碰撞检测:
- 隐蔽站:
- 无线局域网使用CSMA/CA,在载波监听多址接入基础上引入碰撞避免功能,减少发生碰撞的机会;
- 帧间间隔IFS:所有站点必须持续检测到信道空闲一段时间后才可发送帧
- 基本工作原理:
1)源站检测到信道空闲则等待一个帧间间隔,发送帧;
2)目的站接收帧,并等待一个帧间间隔,发送确认帧;
- 退避算法:
- 信道预约:
- 虚拟载波监听:
7. MAC地址
7.1 概述
- MAC地址是以太网的MAC子层所使用的地址;
- 数据帧必须携带目的主机MAC地址和源主机MAC地址;
- MAC地址是对网络上接口的唯一标识!
- MAC地址又称为硬件地址或物理地址;
7.2 MAC地址格式
- MAC地址大小为6字节,共48位;
- 可通过https://standards-oui.ieee.org/oui/oui.txt查看某机构分配的组织唯一标识符OUI;
7.3 MAC地址分类
- 共分为:全球单播、全球多播、本地单播、本地多播四类MAC地址;
- 本地多播地址中,其他46位均为比特1时,即MAC地址为FF:FF:FF:FF:FF:FF时为广播地址;
- 为主机配置多播组列表时,不能使用公有的标准多播地址;
7.4 MAC地址发送顺序
- 从第一个字节开始发送,每个字节内部先从低位开始;
8. IP地址
详见https://blog.csdn.net/qq_43665602/article/details/131032337;
- IP地址可以通过网络号识别不同的网络,通过主机号区分网络内的不同主机;
- 不同网络的IP地址网络号不能相同,网络内不同主机的主机号不能相同;
- MAC地址无法区分不同的网络;
- 帧首部中填有源主机和目的主机的MAC地址,网络层首部中填有源主机和目的主机的IP地址;
- 数据包转发过程中:
1)网络层首部中填写有源IP地址和目的IP地址,在转发过程中,源IP地址和目的IP地址保持不变;
2)数据链路层首部中填写有源MAC地址和目的MAC地址,在转发过程中,在不同链路或网络中,源MAC地址和目的MAC地址会有相应改变;
9. ARP协议
- 网络层协议;
- 地址解析协议:Address Resolution Protocol,用于获取已知IP地址对应主机的MAC地址;
- 获取IP地址对应主机或接口的MAC地址;
- ARP请求报文封装在MAC帧中发送;
- 每台主机都有一个ARP高速缓存表,其中存放网络中IP地址对应主机的MAC地址信息;
- ARP缓存表中的记录有不同类型:动态、静态;
9.1 基本工作流程:
- 1)链路层对IP数据报添加首部时,需写入下一跳主机对应MAC地址,即目的MAC地址。此时先查询本地ARP高速缓存,查询是否有满足条件的IP地址-MAC地址对应关系,如果有则将其作为目的MAC地址,如果没有则进行下一步;
- 2)源主机广播发送ARP请求报文,报文内容包括自身IP地址和MAC地址,以及目的主机IP地址,请求获取目的主机的MAC地址。
- 3)目的主机收到ARP请求后,记录源主机的IP地址-MAC地址映射关系,并向源主机发送单播响应报文,告知自己的MAC地址;
- 4)源主机收到目的主机响应后,记录对应关系。然后进行数据发送即可!
10. 集线器和交换机对比
10.1 集线器
- 集线器是物理层设备,不能隔离冲突域,构建的网络是逻辑总线型;
- 集线器一般具有少量的容错能力和网络管理能力;
10.2 交换机
- 交换机是链路层设备,可以隔离冲突域,不能隔离广播域;
参考:《计算机网络微课堂》