计算机网络(王道)第三章数据链路层 ACK:确认帧
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
导图
/font>
提示:以下是本篇文章正文内容,
一、概述和功能
二、封装成帧与透明传输
封装成帧就是加将数据加头加尾,相当于将数据打包
透明传输就是为了防止特殊的数据无法正常传输的的情况的发生,比如说在封装成帧的过程中出现数据中的某些标记符与开始/结束标记符恰巧重复等等情况
2.1.字符计数法
就是在帧的首部做计数,看看数据是否错误
缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面的帧
比如3 1 1 和 4 2 2 2,如果前面的帧丢失变成 3 1,那么后面的4就会被补到前面变成 3 1 4导致错误
2.2 字符填充法
解决方法:添加转义字符
2.3 零比特填充法
2.4 违规编码法
因为曼彻斯特编码不使用高-高,低-低来表示,所以如果使用高-高,低-低来表示帧起始和终止就不会与数据冲突
三. 流量控制和可靠传输
3.1 流量控制和可靠传输
流量控制是为了让传输过程中的发送速度和接受速度匹配,减少传输出错与资源浪费
可靠传输是发送端发送什么,接收端就要受到什么
3.2 停止等待协议(Stop-and-Wait)
停止等待协议的无差错情况
注释:因为一次就一个,所以用0和1标记ack就行
停止等待协议的有差错情况
停止等待协议的特点
1.简单
2.信道利用率低。大部分时间数据都在路上,发送方很长时间闲置,资源浪费
信道利用率
3.3 后退N帧协议(GBN)
因为停止等待协议太浪费时间了,所以尝试采用GBN,发送连续多个数据帧,以增大信道利用率
注释:
累计确认:就是收到一个确认帧,那么它和它之前的所有帧都默认已收到,反之,如果某个确认帧没收到,那么它和它之后的所有帧都默认丢失(即使收到了也丢掉),进行重传
注释:此图发送2帧时丢失,所以接收方几首收到后面的帧也是直接丢弃并且发送最晚收到的有效帧1的ACK,直至2帧的超时重传机制被触发进行重传并得到ACK之后,接收方才会接受2帧以及后面的帧
发送窗口不能无限大,与使用的编号的比特数有关
很简单,就是1比特编号0和1,同理2比特编号0-3,如果用1比特编号,却要4个窗口长度,那么窗口内数据编号都编不过来,直接乱套了
GBN的优缺点也显而易见,优点是提高了信道利用率,缺点是因为重传机制的原因导致已经收到数据却需要强行丢弃而造成浪费
3.4 选择重传协议(SR)
为了解决GBN的缺点,我们打算尝试只重传错误的帧,这样的话就不用浪费资源吧已经收到的帧再重传一次了。
和GBN相比,两者都有窗口了,和GBN的区别其实就是做了一个数据缓存,已经收到的帧不用扔了,等待之前因意外丢失的帧收到的时候确认即可,但是只能缓存窗口尺寸内的包含的帧(PS,缓存咋可能无限大)
SR运行过程
注释:2帧丢失之后仍然在发送,但是2帧丢失之后只是缓存,并没有移动窗口,直至最后2帧收到后一次性确认2-5帧
同样的,因为编号的问题,发送窗口不能无限大
发送窗口最后和接受窗口大小相同,这样利用率比较高
四. 差错控制
4.1 差错是什么,从哪来的
数据链路层的差错检测的是比特的错误
4.2 为什么要在数据链路层进行差错控制?
因为错误可以尽早发现,不会让一个错误的数据包发送了很长时间到达最终目的地之后才被发现,从而导致网络资源的浪费
4.3 检错编码
4.3.1 奇偶校验码
缺点:只能检测出1,3,5,7…等等奇位数错误,检测成功率位50%
4.3.2 循环冗余码CRC
就是用传输数据除以生成多项式得到冗余码
实际例子
注释:
1.阶数就是最高位是哪位,然后位数-1,如10011就是5-1=4,1011就是4-1=3
2.异或运算就是相同得0,不同得1,比如100和101做异或,结果就是001
3.出书和最后的余数添加到要发送的数据后面,称为帧检验序列FCS
接收方收到数据后进行检测
PS:
4.3.3 海明码
要用到回去重学
五. 介质访问控制
就是让节点之间的通信不会进行相互干扰
5.1 信道划分介质访问控制
虽然使用一条共享信道,但是通过多路复用技术组合进行传输,提高了信道的利用率
5.1.1 频分多路复用FDM
5.1.2 时分多路复用TDM
TDM的缺点就是利用率低,所以又衍生出了STDM
5.1.3 统计时分复用STDM
STDM的原则是先到先走,满了就发,相对于TDM提高了利用率
5.1.4 码分多路复用CDM
CDM只是做一下记录,暂时还用不到,有需要请自行查找资料
5.2 随机访问介质访问控制
所有用户都可以随机发送信息,发送时可以占用全部带宽,理论上个人使用时比静态分配信道的速度更快
5.2.1 ALOHA协议
纯ALOHA协议缺点:太随性,导致效率低
时隙ALOHA协议
相对于纯ALOHA协议就是固定了发送的时间(只能在一个时间片的开始),提高了效率
5.2.2 CSMA协议
5.2.3 CSMA/CD协议
概述
就是因为链路实际有长短,发送数据需要时间,这个时间内可能就被其他节点当成空闲状态导致发生碰撞
知道自己发生碰撞的最长时间是2τ(两倍的传播时延),就是一去一回
图示传播时延对载波监听的影响
5.2.4 CSMA/CA协议
5.2.5 CSMA/CD 与 CSMA/CA的区别
5.3 轮询访问介质访问控制
主要包括两大类,一个是轮询协议,另一个是令牌传递协议
5.3.1 轮询协议
就是选出一个代表,让他控制所有的传输
注释:
轮询开销在随着服务的节点越多,需要用于查询是否发送数据发送的数据帧也就越多,会造成一定开销
等待延迟就是因为这是轮流“邀请”,所以难免某个节点需要发送数据,但是主节点还在较远的需要里有需求的节点那边,导致需求得不到立即响应
单点故障很好理解,就是代表挂了
5.3.2 令牌传递协议
注释:在节点之间没有收发数据的需求时,令牌在节点之间循环。
发送数据的流程
》当一个节点需要时就可以获得这个令牌。然后修改这个令牌的状态(空闲->占用)
》再将令牌与数据帧结合,让其在节点构成的环之间流动
》不是目的地的节点收到令牌也不接受,直接略过,目标节点收到信息并复制一份到本地(传输完成),因为是个闭环,所以发送节点最后得到令牌
》最后,发送令牌的节点对令牌的内容进行检查,如果发现数据出错还要重新发一遍
问题基本和轮询协议相同
六 局域网
6.1 局域网的概念
概括:范围大小,速度快,延迟低,节点平等
6.1.1局域网的网络拓扑结构
常用的是总线型拓扑
6.1.2 局域网的传播介质
6.1.3 局域网介质访问方法
6.2 局域网分类
6.3 IEEE802标准
6.3.1 IEEE802描述的局域网参考模型
6.4 以太网
6.4.1 以太网概念
6.4.2 以太网的发展
6.4.3 适配器和MAC地址
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则是规定的默认最大字节,没有理由
6.4.5 10BASE-T以太网
6.4.6 高速以太网
6.5 无线局域网
7 广域网
7.1 广域网概述
7.2 ppp协议
PPP协议是目前使用最广泛的数据链路层协议,拨号基本都是PPP协议
PPP协议仅支持全双工链路
7.3 HDLC协议
7.3.1 HDLC协议概述
7.3.2 HDLC的三种站
7.3.3 HDLC的帧格式
7.4 PPP协议和HDLC协议对比
为什么HDLC协议更可靠,但是我们使用PPP协议?
因为现在网络要求高,数据链路层本来就是不可靠的尽力传输,差错控制这些复杂的交给了TCP等
8. 链路层设备
8.1 集线器(Hub)
可以扩展以太网,但是集线器会无脑将一个设备的所有消息转发到集线器所连的所有设备,故会将所连接的所有设备变成一个大的冲突域,同时只能有两台设备进行通信,且设备越多,冲突越多。由此诞生了网桥
8.2 网桥(Bridge)
使用网桥时,由于网桥会根据mac地址进行过滤,所以不会形成冲突域
8.2.1 两种网桥
透明网桥
通过自学习来构建转发表。每一个通过网桥的数据包都会被记录下网桥收到数据时数据对应的地址和网桥自己的接口,通过许许多多的数据包的构造的缓存,网桥就可以知道哪个数据包在哪个接口,以后如果要穿数据包就知道要往哪个接口发送数据包了
原路由网桥
在发送时,直接将最佳路径放到帧首部。那么网桥如何获得最佳路径?通过广播方式想目标地址发送广播,此时可能会经过不同路由产生不同的路径,目标地址收到后再将每一条路径都发一个响应帧给网桥,网桥经过对比就知道哪个接口最快了
8.3 交换机
网桥接口越来越多,网桥就变成了交换机