第三章 数据链路层
3.1 数据链路层的功能
数据链路层三大基本问题
帧定界、帧同步(组帧)
- 例如,HDLC-- F(01111110)标识帧的开始和结束
透明传输
- 透明传输的意思是采取措施解决数据中恰好出现与帧定界符相同的比特组合的问题,使得每一个比特传输的数据能够按照原样没有差错的通过数据链路层
差错控制
- 差错表现为:帧的丢失、重复、失序问题
- 通过自动重传请求ARQ来重传出错的帧和海明码解决帧的丢失问题
- 定时器超时重发(解决丢失)
- 帧编号机制(解决重复)
- 用循环冗余校验CRC发现位错(失序问题)
链路管理(CSMA/CD协议)
- 数据链路层连接的建立、维持和释放过程,主要面向连接
- 多个站点共享统一物理信道的情况如何要求通信站点间分配和管理信道也是数据链路层
流量控制(滑动窗口)
- 发送方发送能力大于接收方的情况下,需要限制发送方发送速率 接收的帧被后面发来的帧所淹没,造成帧丢失而出错。
- 即限制发送方的数据流量
- 需要一个反馈机制 让发送方知道接收方能否接收到自己的下一帧
- OSI 数据链路层具有流量控制
- 而TCP/IP中 流量控制在传输层,所以谢希仁把他放到了传输层展开讲解
为网络层提供服务
无确认的无连接服务,信道已知可靠但实时性要求高,以太网
有确认的无连接服务,适用于误码率较高,无线通信
有确认的面向连接服务, 可靠性和实时性要求高的场合
ps:面向连接一定有确认
3.2 组帧
字符记数法
- 帧头部用一个记数字段来表明 帧内的字符数(本身占用一个记数)
- 缺陷:如果记数字段错误,那么就失去了帧边界划分的依据,收发双方将失去同步
字符填充的首尾定界符法
- 使用控制字符SOH表示开始 EOT表示结束
- 数据部分重复的使用ESC转义
- ESC如果出现了,前面再加一个ESC
零比特填充的首尾标记法(常用)
- 允许帧内任意个数的比特,使用01111110 标志开始和结束
- 遇到5个连续的1 就在后面插入一个0
- 接收方做一个逆操作,即收到5个连续的1 删去后面的0
- 易于用硬件实现,性能优于字符填充法
违规编码法(常用)
-
物理层比特编码常用,比如曼码,只有高低,低高,没有用到高高 低低电平
这两个就可以作为帧的开始和终止的标记,IEEE802就采用了这种标准。
3.3 差错控制
1.检错编码(后续自动重传请求ARQ)
奇偶校验码
n-1 信息元 + 1 校验元
奇校验码:包含校验元 1的个数是奇数
偶校验码:包含校验元 1的个数是偶数接收方的根据1的奇偶情况发生改变从而检验出错误。
循环冗余码CRC
多项式G(x)的生成:110110 – x5+x4+x^2+x
位数= 最高阶+1给定m帧的报文 生成一个r bit的帧检验序列FCS
FCS位数是最高阶数r操作:
- 加0 帧的最低位 + G(x)阶数个 0
- 模2除
- 得到r位FCS冗余码(前面的0不可省略)
- 最后发出的数据共m+r位
注:CRC有纠错功能但数据链路层没用到所以放在检错编码这里
2.纠错编码(后续前向纠错FEC)
海明码
n位数据 k个校验位
要求 n+k<=2^k-1
能检测出1位错误 纠正1个错误
如果要检测两个错误,k还要再加1确定校验位的分布
从右往左 0,2,4位
然后分组,第一个是最后一位有1,第二个是倒数第二个有1,以此类推后面进行异或,得出校验位
全0则无错,有1 是出错位数
*3.4 流量控制与可靠传输机制
1.流量控制、可靠传输与滑动窗口机制
发送窗口 接收窗口:
SW 1 1
GBN >1 1
SR >1 >1发送窗口只有收到确认帧才会往前滑动
接收窗口为1时 可保证帧有序接收
窗口的大小是固定的,区别于传输层的窗口可靠传输:
确认 和 超时重传两个机制发送窗口如果超过了范围,会造成新旧分组无法辨析的问题
计算题一些词的理解 备忘录
(数据)帧长是指发送一次的帧
数据大小是指所有数据加起来的帧长度发送窗口尺寸是指我在收到对方确认前我能发送多少数量的帧
总时间的计算是收到第一个帧的确认的时间
发送时间是所有发送出来的时间收到确认前发送最多比特数 = 总时间 / 单次发送时间
帧序号的比特数最少是要我计算在收到对方的确认前,我能发送多少数量的帧
例如GBK 2^n-1 <= 发送的帧数量最大平均数据传输速率=min(带宽,GBN限制下的速率)
2.停止-等待协议
-
关注两种情况:
- 确认丢失引入超时定时器
- 确认迟到引入ACK编号(出现的少)
-
关注一个利用率的问题
- 通过这个图可以易得RTT对于SW协议的信道利用率关系是非常大的。
3.后退N帧协议(GBN)
-
使用到一种累计确认的方式,即只对最后一个接收到的数据分组发送确认分组,当然也可以对确认报文进行捎带确认
-
接收方接收到未按序到达的数据是丢弃且对最近接收的分组进行确认
-
发送方长度 0~7时 不超过2^3-1=7的理解,如果一次性发8个,即0~7报文
考虑一种情况:接收方已经收到前8个报文 准备接收0号报文 但是我对7号报文的确认丢失了
发送方重传,这就是新旧无法辨析的由来。
4.选择重传协议(SR)
-
不采取累计确认了,需要对每个传输成功的分组逐一确认
-
发送方范围的理解,为什么不能超过一个分组长度的一半,主要原因是确认报文如果丢失了,而接收方已经划过去了,发送方超时发送0号报文,此时就会出现新旧数据无法辨析的问题
-
需要满足 发送窗口+接收窗口<=2^n
-
理解:同样考虑一种情况就是比如同样是n=3,07,规定的发送窗口应是24,如果窗口是5的话,发送0~4,那么接收方全部收到以后的窗口就会移到 5 6 7 0 1,如果确认报文丢失,导致发送方重传,新旧无法辨析由此而来。
*3.5 介质访问控制
1.信道划分
就是逻辑上划分成两个结点通信互不干扰的通道
广播信道转变为点对点信道
时分多路复用
统计时分复用(异步时分多路复用)STDM
按需动态分配时隙,当终端有数据要传送才会用到时间片 这可以增加线路的利用率
频分多路复用、波分多路复用、码分多路复用
2.随机访问
ALOHA
- 纯ALOHA协议
每个站都可以自由地发送数据 不需要任何检测
如果一段时间无确认,就发生了冲突,等待一段时间重发!

- 时隙ALOHA
为了避免随意性,将时间划分成等长的时隙Slot
帧到达以后,在缓存中等待一个小于时隙T0长度的时间,然后发送。
但是如果两个及以上的帧到达了,下一个时隙必然有碰撞。
碰撞后重传的策略也是等待一个随机时间再传。
CSMA协议
ALOHA本质上还是随心所欲的发送数据
所以引入一个发送前监听信道,检测到空闲才发送的操作
这就是载波监听多路访问CSMA
- 1-坚持CSMA
监听:
- 空闲,立刻发(100%发送)
- 忙,等,直至监听到空闲
- 冲突 随机等待一段时间 再重新开始监听
考虑延迟:当A发送B,数据还没到B时,B检测空闲 立刻发送,碰撞!
考虑同时:B 和C 都在监听,A发送完,B和C立即发送数据,碰撞!
- 非坚持CSMA(忙时等待随机)
监听:
- 空闲,立刻发(100%发送)
- 忙,放弃监听,等待随机时间后再监听(区别1坚持)
- 冲突 随机等待一段时间 再重新开始监听
减少了B C等到空闲,抢着发的情况,但是是以增加延迟为代价的。
- P-坚持CSMA(空闲时以概率p发送 概率1-p推迟到下一个时隙)
监听:
空闲,立刻发
(以概率p发送 以概率1-p推迟到下一个时隙)
区别于1-坚持CSMA忙,等,直至监听到空闲
(时隙信道就是在下一个时隙再听)冲突 随机等待一段时间 再重新开始监听
理解:
- 空闲时 1-坚持和非坚持立刻发,p坚持 p发送 1-p推迟下一个时隙
- 忙时 1-坚持和p坚持持续监听,非坚持型放弃监听,等待随机事件后重新监听
概率发送也同样减少了多个结点在检测到空闲同时发的概率
同时坚持监听还有一个目的是:试图克服由于随机等待造成的时延问题,这是以上两种的折中方案。
CSMA/CD协议
先听后发,边听边发,冲突停发,随机重发
CSMA载波监听多路访问:
发送前监听是为了获得发送权。
碰撞检测CD就是边发送边监听,如果有碰撞,立刻停止!等待一个随机时间后重发。以太网规定争用期为51.2us,即对于10Mb/s的以太网,可以发送512bit,即64B,这也是以太网规定最短帧长的由来
如果小于64B 那么一概认为是由于冲突而异常中止的无效帧
二进制退避算法
首先确定一个基本退避时间2t
定义参数k
k≤10 – k=min{重传次数,10}
k≥10-- k=10
k=16 丢弃并报告上级而后在【0,1,2,…,2^k-1】选一个数r作为r倍的基本退避时间 2rt
平均时间随着重传次数增大而增大,有利于系统的稳定。
加强型的碰撞检测是多了一步发送人为32或48比特干扰信号
帧间最小间隔是9.6us 即还需等待96比特的时间
CSMA/CA协议
CA是碰撞避免
802.11规定 所有的站发送完后必须等待一个帧间间隔IFS
IFS有三种:
SIFS 最短(RTS和CTS中)
PIFS 中等
DIFS 最长(刚开始+忙转为空闲)从忙态转化成空闲态时,不仅要等待一个时间间隔,还要进入一个争用窗口
当且仅当信道空闲且这个帧是第一帧才不进行退避算法第i次退避的时候
在【0,1,2,3…,2^(2+i)-1】中选择一个乘以基本退避时间。时隙编号255(第六次)就不增加了
- 退避时间在其他信道发送时,是会冻结的,后续就不需要再等待一个退避算法了
- 信道预约(处理隐蔽站问题)
虚拟载波监听:站点只需监听RTS CTS中的任意一个,就能知道信道被占用的时间,而不需要真正知道信道上的信号,从而减少隐蔽站带来的碰撞问题
CTS两个目的
给源站发出发送许可
指示其他站在预约期内不要发送
两者比较
-
冲突的处理方式不同。CSMA/CD 可以检测冲突,但无法避免,CSMA/CA发送数据的同时不能检测信道上有无冲突,本结点无冲突不代表接收结点没有冲突,所以只能尽量避免
-
传输介质不同。CSMA/CD用于总线型以太网,CSMA/CA用于无线局域网802.11/a/b/g/n等
-
检测方式不同,CSMA/CD通过电缆的电压检测,而CSMA/CA是通过能量检测、载波检测、能量载波三种检测信道空闲的方式
-
基本思路不同。CSMA/CA基本思想是发送数据时广播告知其他结点让其他结点不要发送数据。而CSMA/CD协议是发送前监听,边发送边监听,一旦出现碰撞立马停止发送
-
退避算法不同,CSMA/CD 首先确定一个基本退避时间2t 定义参数k k≤10 – k=min{重传次数,10} k≥10-- k=10
k=16 丢弃并报告上级,而CSMA/CA 在【0,1,2,3…,2^(2+i)-1】中选择一个乘以基本退避时间。时隙编号255(第六次)就不增加了
3.轮询访问
令牌传递协议
令牌沿着环形在各计算机依次传递
令牌是一个特殊的MAC控制帧 不包含信息
一个站点要发送数据 必须等待令牌 因此不会产生碰撞 所有的计算机访问权是公平的
有检验机制,出错会重传
传输完数据后重新生成令牌
拓扑不一定是环但逻辑上必须是环适合负载高的信道
也是将广播信道在逻辑上变成了一个点对点的信道。
3.6 局域网
1.局域网的基本概念与体系结构
局域网的特点是一个单位所有 地理有限
所有站点共享较高的总带宽
较低时延和误码率
平等关系而非主从关系
能广播 组播拓扑结构 星 环 总线 星总线结合
MAC方法有 CSMA/CD 令牌总线 和令牌环
前两种用于总线 后用于环三种拓扑:
以太网 逻辑总线 物理星形
令牌环 802.5
FDDI 802.8 光纤分布数字接口 逻辑是环 物理是双环结构OSI将数据链路划分为逻辑链路控制子层LLC和介质访问控制子层MAC
组帧 比特差错 透明传输这些都类别于MAC
LLC于传输媒体无关,向网络层提供4种不同连接服务类型(有/无确认,有/无连接)
2.以太网与IEEE802.3
以太网 传输介质和网卡
记住这些,题目默认你已知
星形网中心是集线器,但逻辑上还是总线,同属于一个冲突域
网卡与局域网在串行方式工作,而网卡与计算机在I/O总线并行方式进行,网卡有一个重要功能就是串并转换,且不仅仅有物理连接和电信号的匹配,还可以对帧的拆分 封装 MAC 编码解码 数据缓存等/
网桥 交换机 都有MAC地址 ,而网卡控制主机对介质的访问,也工作在物理层,因为它只关注比特。
MAC帧
前同步码 8字节 前7字节1010101010…
后1字节10101011之所以不要帧结束符 因为各帧之间必须有间隙
但是请注意,数据链路层需要尾部。数据部分的46的计算方式是:首部尾部总长度是18
总最小帧长度是64B,64-18=46FCS不校验前导码,其他都校验 采用32位CRC
而IEE802.3 的标准用长度代替了类型,因为长度最多1500,超过了1500可用于类型标识符
高速以太网
100BASE-T以太网 100Mb/s
支持全双工,半双工,半双工下用CSMA/CD
帧间间隔从9.6us到0.96us
使用802.3格式吉比特以太网
千兆以太网 1Gb/s 全双工版半双工都工作,其他同上10吉比特以太网 唯一不同点,
只有工作在全双工模式下,格式同上。
3.IEEE802.11
无线局域网组成
- 有固定基础设施无线局域网
协议包括802.11 a/b/g/n
802.11采用星形拓扑,中心是接入点AP,MAC层使用CSMA/CA协议
最小构件是基本服务集BSS 包括一个接入点和若干移动站
AP分配32位的服务集标识符SSID和信道
基本服务集可以孤立也可以连接到分配系统然后连接到另一个基本服务集合构成拓展的服务集ESS
ESS可通过Portal门户设备提供接入
- 无固定基础设施移动自组织网络
地位平等,都具有路由器功能
802.11 MAC 帧
3种类型的帧
数据帧、控制帧、管理帧首部30字节
数据部分2312字节
FCS尾部4字节四个地址字段 讨论前三个
(原则是前两个对应 接收 发送 第三个补充)
如果是去往AP的
那么就是 AP地址 源地址 目的地址
如果是来自AP的
那么就是 目的地址 AP地址 源地址
VLAN
标记4字节:
前两个字节置为0x8100表示802.1Q帧
后两个字节控制信息(其中12位VID)两个VLAN虽然跨越了两个交换机但都是一个广播域
交换机有拆标签装标签的过程
收到的帧是标准以太网帧 而不是802.1Q帧
4.令牌环网的基本原理
同轮询,不存在冲突 ,想要发送必须要有令牌
3.7 广域网
1.广域网的基本概念
- 广域网由结点交换机(不是路由器)转发分组
- 结点交换机是一个网络转发分组
- 路由器是多个网络转发分组
- 结点之间都是点对点连接,通常一个节点交换机与多个结点交换机相连
- 局域网协议在数据链路层,广域网协议在网络层(帧中的控制信息决定的)
- 广域网的重要问题是路由选择和分组转发
- 广域网常见的协议是PPP协议和HDLC协议
2.PPP协议
点对点协议(Poinit-to-Point)是串行线路面向字节的协议
- 支持拨号连接(动态分配IP)
三个组成:LCP NCP 封装方法
- LCP (链路控制协议) 建立、测试、管理链路
- NCP (网络控制协议)为网络层协议建立和配置逻辑连接
- IP封装在串行链路的方法(封装成帧)。IP数据报是PPP帧中一部分,受最大传送单元MTU限制
帧格式
- 标志字段F(7E) 做字节填充,转义字节是7D
- PPP面向字节,帧长度是整数个字节
- 协议段 0是IP IPX等网络层协议,1是协商其他协议 如LCP、NCP
- 信息部分大于等于0 小于等于1500字节
- 之所以没有最短帧46是因为PPP是点对点的 不是总线形,不需要CSMA/CD协议
- FCS是帧检验,向上是提供不可靠传输服务的,有错误就丢弃
透明传输
- 面向字节的字节填充法
- 面向比特的比特填充法
PPP状态图
- 两种认证:PAP CHAP
- PAP传输时用明文 两次握手 被叫方请求,主叫方相应
- CHAP传输时用hash值 三次握手 主叫方请求,被叫方回复
特点汇总
- PPP提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行 CRC校验)。
它是不可靠的传输协议,因此也不使用序号和确认机制。- 仅支持点对点的链路通信,不支持多点线路。
- PPP只支持全双工链路,没有半双工,没有CSMA/CD协议
- PPP的两端可以运行不同的网络层协议,但仍然可使用同一个PPP进行通信。
3.HDLC协议
高级数据链路控制HDLC是面向比特的数据链路层协议
基于0比特插入法实现透明传输 采用CRC检验
有3类帧:信息帧(I) 监督帧(S) 无编号帧(U)
标志字段F:01111110(连续5个1就要插入0的由来)
HDLC和PPP对比
3.8 数据链路层设备
1.网桥的概念及其基本原理
- 网桥工作在链路层MAC子层
- 可隔离冲突域,但没有过滤通信量功能
- 网桥必须有路径选择功能
- 网络A和网络B 通过网桥连接,网桥接收A的数据帧,检查帧中地址
- 网桥可以互联不同MAC子层 不同速率的子网
- 如果是B就转发给B
- 如果是A就丢弃,因为源站和目的站在一个网段不需要借助网桥转发
2.局域网交换机及其工作原理。
局域网交换机工作在数据链路层,实质上是多端口的网桥
- 通常工作在全双工模式
- 交换机可以方便地使用VLAN 既隔离冲突域 又隔离广播域
- ps:隔离冲突域的意思是形成了多个冲突域
- 没有隔离广播域的意思是组成了 一个广播域
- 10Mb/s 以太网 N个用户 总容量为N*10M/s这是相比于传统只有10Mb/s的最大优点
- 两种交换模式:直通式交换机(速度快但不智能)、存储转发式交换机(支持速率转换 可靠性好)
- 即插即用设备,通过自学习算法逐步建立连接
- 帧交换表中:目的MAC地址与对应接口号
- 自学习过程(三种情况 盲目转发 明确转发 明确丢弃)
注:每条记录有有效时间,会老化,原因
- 交换机接口改接主机
- 主机更换网卡