计算机网络笔记-第三章 数据链路层
第三章 数据链路层
- 链路层的功能
- 链路层的两种信道
- 局域网,广域网
- 链路层的设备
3.1数据链路层的功能
3.1.1为网络层提供的服务
服务 | 特点 | 应用 |
---|---|---|
无确认无连接服务 | 适用于实时通信或误码率较低的通信信道 | 以太网 |
有确认无连接的服务 | 适用于误码率较高的通信信道 | 无线通信 |
有确认有链接的服务 | 适用于通信要求(可靠性、实时性)较高的通信信道 |
3.1.2链路管理
数据链路层的连接的建立、维持和释放的过程
主要用于面向连接的服务。
3.1.3帧定界、帧同步和透明传输
两台主机之间传输信息时,必须将网络层的分组封装成帧,一阵的格式传递
帧定界: 首尾部中的控制信息可以用来确定帧的界限。
帧同步: 接收方应能接收到的二进制比特流中区分出帧的起始和终止
透明传输: 传送的比特组对于数据链路层来说是透明的,无论什么组合都可以传递
3.1.4流量控制
:限制发送方的数据流量,使其发送速率不超过接收方的接受能力
对于数据链路层来说,控制的是相邻两节点之间数据链路上的流量
对于 运输层 来说, 控制的则是从源端到目的端之间的流量
3.1.5差错控制
3.2.封装成帧(组帧)和透明传输
封装成帧就是加将数据加头加尾,相当于将数据打包
透明传输就是为了防止特殊的数据无法正常传输的的情况的发生,比如说在封装成帧的过程中出现数据中的某些标记符与开始/结束标记符恰巧重复等等情况
3.2.1透明传输的应用
3.2.1.1字符计数法
就是在帧的首部做计数,查看数据是否有误
缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面的帧
比如3 1 1 和 4 2 2 2,如果前面的帧丢失变成 3 1,那么后面的4就会被补到前面变成 3 1 4导致错误
3.2.1.2字符填充法
就是加头加尾分别标记开始结束,和零比特填充法(见下)对比,开始和结束的对应的字符不一样
但有可能出现数据内某段比特流数据正好与标记字段重复,从而导致误判断的情况
解决方法:添加转义字符
3.2.1.3零比特填充法
3.2.1.4违规编码法
因为曼彻斯特编码不使用高-高,低-低来表示,所以如果使用高-高,低-低来表示帧起始和终止就不会与数据冲突
3.3差错控制(检错编码)
3.3.1 差错是什么,从哪来的
数据链路层的差错检测的是比特的错误
3.3.2为什么要在数据链路层进行差错控制?
因为错误可以尽早发现,不会让一个错误的数据包发送了很长时间到达最终目的地之后才被发现,从而导致网络资源的浪费
3.3.3检错编码(奇偶校验码,循环冗余码CRC)
奇偶校验码
缺点:只能检测出1,3,5,7…等等奇位数错误,检测成功率位50%
循环冗余码CRC
就是用传输数据除以生成多项式得到冗余码
实际例子
注释:
1.阶数就是最高位是哪位,然后位数-1,如10011就是5-1=4,1011就是4-1=3
2.异或运算就是相同得0,不同得1,比如100和101做异或,结果就是001
3.出书和最后的余数添加到要发送的数据后面,称为帧检验序列FCS
接收方收到数据后进行检测
注意
3.3.4纠错编码(海明码)
分为四步
第一步 确认校验码位数r
第二步 确定校验码和数据的位置
注释:
1.为什么是10为数据位?因为4位校验码+6位信息位=10位
2.校验码放到2的几次方的位置,其他的地方按顺序放已知的信息位
第三步 求出校验码的值
注释
1.先是通过二进制位确定有几位。本题中因为最大位10的二进制是1010,所以是4为,将其标注
2.然后从p1开始看,看p1的二进制位的数值和所有信息位的对应位置的数值是否相同,然后找出来这些位
这里有点难理解,这里以p1为例辅助理解,这里找出来的就是P1,D1,D2,D4,D5
然后计算异或值,比如说这里D1=1,D2=0,D4=1,D5=0,就是p1要同时和0,1,0,1进行异或之后得到0,为了标识我加粗原始计算数据
举例:0和1异或得1,1和0异或得1,1和1异或得0,那么p1和0异或得0,p1就是0了
3.其他同理,按顺序计算出P2,P3,P4,然后填入表格
第四步 检测并纠错
就是和上面一样,将所有校验位进行运算,得出的结果的值就是错误的位
小结
3.4数据链路层的流量控制和可靠传输
3.4.1 流量控制与可靠传输
流量控制是为了让传输过程中的发送速度和接受速度匹配,减少传输出错与资源浪费
可靠传输是发送端发送什么,接收端就要受到什么
数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下就不回复确认。
传输层流量控制手段:接收端给发送端一个窗口公告。
流量控制的方法
3.4.2停止等待协议
停止等待协议的无差错情况
注释:因为一次就一个,所以用0和1标记ack就行
停止等待协议的有差错情况
停止等待协议的特点
1.简单
2.信道利用率低。大部分时间数据都在路上,发送方很长时间闲置,资源浪费
3.4.3后退N帧协议(GBN)
因为停止等待协议太浪费时间了,所以尝试采用GBN,发送连续多个数据帧,以增大信道利用率
注释:
累计确认:就是收到一个确认帧,那么它和它之前的所有帧都默认已收到,反之,如果某个确认帧没收到,那么它和它之后的所有帧都默认丢失(即使收到了也丢掉),进行重传
下图是一个实例
注释:此图发送2帧时丢失,所以接收方几首收到后面的帧也是直接丢弃并且发送最晚收到的有效帧1的ACK,直至2帧的超时重传机制被触发进行重传并得到ACK之后,接收方才会接受2帧以及后面的帧
发送窗口不能无限大,与使用的编号的比特数有关
很简单,就是1比特编号0和1,同理2比特编号0-3,如果用1比特编号,却要4个窗口长度,那么窗口内数据编号都编不过来,直接乱套了
GBN的优缺点也显而易见,优点是提高了信道利用率,缺点是因为重传机制的原因导致已经收到数据却需要强行丢弃而造成浪费
GBN协议性能分析—
因连续发送数据帧而提高了信道利用率
在重传时必须把原来已经正确传送的数据帧重传,是传送效率降低。
3.4.4选择重传协议(SR)
为了解决GBN的缺点,我们打算尝试只重传错误的帧,这样的话就不用浪费资源吧已经收到的帧再重传一次了。
和GBN相比,两者都有窗口了,和GBN的区别其实就是做了一个数据缓存,已经收到的帧不用扔了,等待之前因意外丢失的帧收到的时候确认即可,但是只能缓存窗口尺寸内的包含的帧(PS,缓存咋可能无限大)
SR运行过程
注释:2帧丢失之后仍然在发送,但是2帧丢失之后只是缓存,并没有移动窗口,直至最后2帧收到后一次性确认2-5帧
同样的,因为编号的问题,发送窗口不能无限大
WTmax=WRmax=2的(n-1)次方
发送窗口最后和接受窗口大小相同,这样利用率比较高
3.5介质访问控制
就是让节点之间的通信不会进行相互干扰
3.5.1信道划分介质访问控制(静态划分)
信道划分
介质访问控制
信道划分介质访问控制:虽然使用一条共享信道,但是通过多路复用技术组合进行传输,提高了信道的利用率
频分多路复用FDM
时分多路复用TDM
改进的时分复用——统计时分复用STDM
波分多路复用WDM(一般不考)
码分多路复用CDM
小结
3.5.2动态划分-随机访问介质访问控制
所有用户都可以随机发送信息,发送时可以占用全部带宽,理论上个人使用时比静态分配信道的速度更快
1.ALOHA协议
纯ALOHA协议缺点:太随性,导致效率低
改进的ALOHA协议——时隙ALOHA协议
相对于纯ALOHA协议就是固定了发送的时间(只能在一个时间片的开始),提高了效率
两者联系与区别
2.CSMA协议
名称 | 描述 | 优点 | 缺点 |
---|---|---|---|
1-坚持CSMA | 发送信息时监听信道,一空闲下来就立即传输,信道忙也一直监听,如果发送时冲突就等待随机时长之后再监听 | 立即发送,利用率高 | 如果多台设备同时监听,那么会发生冲突 |
非坚持CSMA | 发送信息时监听信道,如果空闲就立即传输,信道忙就随机等待一段时间后再监听 | 冲突发生的几率减少 | 因为需要等待,所以利用率不高 |
p-坚持CSMA | 发送信息时监听信道,空闲时以概率p进行传输,概率1-p不传输。信道忙就随机等待一段时间后再监听 | 冲突减少的同时效率也比较高 | 即使发生冲突也要坚持发送数据,资源被浪费 |
1-坚持CSMA
非坚持CSMA
p-坚持CSMA
三种CSMA的区别
3.CSMA/CD协议
就是因为链路实际有长短,发送数据需要时间,这个时间内可能就被其他节点当成空闲状态导致发生碰撞
知道自己发生碰撞的最长时间是2τ(两倍的传播时延),就是一去一回
传播时延可能导致冲突
确定冲突后的重传时机
例题
最小帧长
可以想到最小帧长的问题,因为如果帧太短,帧都发送完了才检测到碰撞导致停止,导致无法停止碰撞
小结
4.CSMA/CA协议
工作原理
对比CSMA/CD
3.5.3动态划分-轮询访问介质访问控制
轮询协议
就是选出一个代表,让他控制所有的传输
注释:
轮询开销在随着服务的节点越多,需要用于查询是否发送数据发送的数据帧也就越多,会造成一定开销
等待延迟就是因为这是轮流“邀请”,所以难免某个节点需要发送数据,但是主节点还在较远的需要里有需求的节点那边,导致需求得不到立即响应
单点故障很好理解,就是代表挂了
令牌传递协议
注释:在节点之间没有收发数据的需求时,令牌在节点之间循环。
发送数据的流程
》当一个节点需要时就可以获得这个令牌。然后修改这个令牌的状态(空闲->占用)
》再将令牌与数据帧结合,让其在节点构成的环之间流动
》不是目的地的节点收到令牌也不接受,直接略过,目标节点收到信息并复制一份到本地(传输完成),因为是个闭环,所以发送节点最后得到令牌
》最后,发送令牌的节点对令牌的内容进行检查,如果发现数据出错还要重新发一遍
问题基本和轮询协议相同
- 令牌持有者、不能一直发送数据,有一定的时间t来限制
3.6局域网
3.6.1局域网的概念
3.6.1.1局域网的网络拓扑结构
常用的是总线型拓扑
3.6.1.2 局域网的传播介质
局域网 | 常用介质 |
---|---|
有线局域网 | 双绞线,同轴电缆,光纤 |
无线局域网 | 电磁波 |
3.6.1.3局域网介质访问方法
3.6.2 局域网的分类
3.6.3 IEEE802标准
3.6.3.1 IEEE802描述的局域网参考模型
局域网小结
3.6.4以太网
3.6.4.1 以太网概念
3.6.4.2 以太网的发展
3.6.4.3 适配器和MAC地址
3.6.4.4 以太网MAC帧
注释:
1.这里的mac层指的是数据链路层
2.之前说过数据链路层将上一层ip数据包加头加尾
头就是目标地址(6字节),源地址(6字节),类型(2字节)
尾就是FCS(帧检验序列),(4字节)
3.前导码不是MAC帧的一部分,目的是使时钟同步
4.为什么数据长度时46~1500?
因为有最小传输字节64字节,mac占用6+6+2+4=18,所以数据最小为64-18=46,1500则是规定的默认最大字节,没有理由
3.6.4.5 10BASE-T以太网
3.6.4.6 高速以太网
以太网小结
3.6.5 无线局域网
3.6.5.1 两种无线局域网
3.7广域网
3.7.1 广域网的概述
概括一下,一个字大
3.7.2 PPP协议(Point-to-Point Protocol)
PPP协议是目前使用最广泛的数据链路层协议,拨号基本都是PPP协议
PPP协议仅支持全双工链路
3.7.2.1 PPP协议需要满足的要求
3.7.2.2 PPP协议不需要满足的要求
3.7.2.3 PPP协议组成成分以及功能
3.7.2.4 PPP协议的帧格式
3.7.3 HDLC协议(High-Level Data Link Control)
3.7.3.1 HDLC协议概述
3.7.3.2 HDLC的三种站
3.7.3.3 HDLC的帧格式
3.7.4 PPP协议和HDLC协议对比
为什么HDLC协议更可靠,但是我们使用PPP协议?
因为现在网络要求高,数据链路层本来就是不可靠的尽力传输,差错控制这些复杂的交给了TCP等
小结
3.8. 链路层设备
3.8.1 集线器(Hub)
可以扩展以太网,但是集线器会无脑将一个设备的所有消息转发到集线器所连的所有设备,故会将所连接的所有设备变成一个大的冲突域,同时只能有两台设备进行通信,且设备越多,冲突越多。由此诞生了网桥
3.8.2 网桥(Bridge)
使用网桥时,由于网桥会根据mac地址进行过滤,所以不会形成冲突域
3.8.2.1 两种网桥
透明网桥
通过自学习来构建转发表。每一个通过网桥的数据包都会被记录下网桥收到数据时数据对应的地址和网桥自己的接口,通过许许多多的数据包的构造的缓存,网桥就可以知道哪个数据包在哪个接口,以后如果要穿数据包就知道要往哪个接口发送数据包了
原路由网桥
在发送时,直接将最佳路径放到帧首部。那么网桥如何获得最佳路径?通过广播方式想目标地址发送广播,此时可能会经过不同路由产生不同的路径,目标地址收到后再将每一条路径都发一个响应帧给网桥,网桥经过对比就知道哪个接口最快了
3.8.3 交换机
网桥接口越来越多,网桥就变成了交换机