本文基于
:王道计算机考研-计算机网络
其他文章:
超详细的计算机网络基础知识 第一章:概述
超详细的计算机网络基础知识 第二章:物理层
最近准备就业,整理计算机网络的相关笔记,后续会继续更新
相见即是有缘,如果对你有帮助,给博主一个免费的点赞以示鼓励把QAQ
结点
链路
数据链路
帧
所以数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报
数据链路层充当的是一个搬运工的角色
数据链路层在物理层提供服务的基础上向网络层提供服务
,其最基本的服务是将源自网络层
来的数据可靠的传输到相邻结点的目标机网络层
。其主要作用是加强物理层传输原始比特流的功能
,将物理层提供的可能出错的物理连接改造
成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路
功能一、为网络层
提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务(有连接一定有确认)
功能二、链路管理
,即连接的建立
、维持
、释放
(用于面向连接的服务)
功能三、组帧
功能四、流量控制
。
功能五、差错控制
(帧错/位错)
封装成帧
首部
和尾部
,这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束
缺点:
一旦在某个帧内丢失数据或首部发生错误,后面的帧都会收到其影响,比如51234567,如果前面的5变成了4,后面的结束位就会发生错乱,第二个帧本来从5开始,结果变成了从4开始,帧发生错乱可能造成灾难性的后果
这种方法很容易出错,所以我们不常用
缺点:
在传送二进制代码的程序或图像时,有可能出现数据内某比特流数据与标志符重复的情况,使接收端错误的找到帧的边界,对此,我们可以使用字符填充方法实现透明传输
解决方案:进行字符填充
对数据比特流中和标志符重复的数据,在其前面添加ESC转义字符
,告诉接收端略过
这个字节,直到遇到真正的结束标志符
因为曼彻斯特编码的1只可能出现高-低
或低-高
的情况,不可能出现高高或低低,所以我们可以用高高或低低来定界帧的起始和终止
数据链路层的差错控制就是为了及早的发现问题,减少因为数据出错而引起的网络资源的浪费
缺点:
奇数个
比特错误,成功率较低,只有50%
,并且如果某一位的1变成0,而另外一位的0变成1,就检查不出来错误,例如11001010变成了11001001,虽然发生了变化,但是奇偶校验码依然检查不出错误
例题:
采用奇校验则要保证添加校验元之后1的个数为奇数,故答案选D
计算冗余码的过程:
计算过程
1.计算阶数
10011表示成多项式为
X^4 + X^1 + x^0
X^4 + X^1 + 1
阶数=总位数-1=4
2.按照阶数在数据后加0
原数据:
1101 0110 11
变为
1101 0110 11 0000
3.取模
得出FCS帧检验序列为1110,则最终要发送的数据为11010110111110
接收端的检错过程
在数据链路层仅仅使用循环冗余检验CRC差错检验技术,只能做到对帧的无差别接收
,即“凡是接收端数据链路层接受的帧,我们都能以非常接近于1
的概率认为这些帧在传输过程中没有差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。
“凡是接收端数据链路层接受的帧均无差错”
链路层使用CRC检验
,能够实现无比特差错的传输
,但这还不是可靠传输
海明码:发现双比特错,纠正单比特错
1.确定检验码位数r
上一步我们求出校验码为=位数为4
,原数据位数为6
,所以总位数为10
我们把校验码放到数据位中2的几次方的位置
3.求出校验码的值
找出校验码中1所在的位置,例如P1(0001)中1在末尾,就找出原数据中1在末尾的所有数据
有D1,D2,D4,D5
P1与D1,D2,D4,D5进行异或,且结果为0,可以得出P1的值为0,
用此方法可以找出P2,P3,P4的值
计算所有检验码与其他原数据位进行异或运算的值,得出错误位
流量控制就是让接收方
的接收速率
与发送方
的发送速率
相匹配,以防止传输出错
数据链路层的流量控制是点对点
的,而传输层的流量控制是端到端
的
数据链路层的流量控制手段:接收方收不下就不回复确认,不让发送方发送下一个
传输层流量控制手段:接收端给发送端一个窗口公告
名称 | 发送窗口大小 | 接受窗口大小 |
---|---|---|
停止等待协议 | 1 | 1 |
后退N帧协议 | >1 | 1 |
选择重传协议 | >1 | >1 |
可靠传输,滑动窗口和流量控制的区别
可靠传输:发送端发啥,接收端收啥
流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧
滑动窗口解决:
每发送完一个帧就停止发送
,等待对方的确认,在收到确认后再发送下一个帧
缺点:效率非常低,每发送一个帧,就要等待确认
停止等待协议有两种应用情况
ack:确认帧
1.数据帧丢失或检测到帧出错
解决方案:采用计时器,每次发送一个帧就启动一个计时器,超出时间就重新发送
RTT:往返传播时延
因为存在发送时延等其他情况,所以应当比帧传输的平均RTT更长一些
2.ACK丢失
优点:简单
缺点:信道利用率太低,可以看到大部分时间都浪费在了路上,发送的时间很小
停止等待协议的弊端:发送方发送速率过快时,会浪费大量的时间在等待接收方确认帧的回复,效率极低
累计确认:
收到确认帧之后,默认它和它之前
的所有帧都已收到
,没有收到默认帧
,则默认它和它之前的所有帧都已丢失
,重新发送
我们设置发送窗口尺寸为4,可以连续发送4个帧,发送方在发送2帧时丢失,并在超时计时器范围内(2-5)未接收到来自接收方的2帧确认帧,故发送方默认2帧之前的所有帧都被收到,而2帧之后的所有帧都没有被收到,对2帧之后的所有帧进行重传
他只会返回
所有连续的按序接收
的帧序列当中最大序号
的那个,因为2帧的丢失
,所以最大序号变为1,告诉发送方,1号帧和1号帧之前的所有帧都已经接收成功
滑动窗口的长度问题:
滑动窗口的长度是不能
无限大的
> 我们使用1个比特对帧编号,编号为为0,1,使用1个比特对帧编号为0,1,正常情况下W应满足1<=W<2^n-1,为1,如
> 果此时我们将滑动窗口尺寸设为4,将会依次发送0,1,2,3四个帧
>
> 如果发送过程中0,1,2,3的确认帧全部丢失,超时之后发送方会将0,1,2,3再次重传,但是接收方将无法区分新帧和
> 旧帧
优点:和停止等待协议相比,因连续发送数据帧而提高了信道利用率
缺点:一旦有一个帧出错,他会把其他没有出错的帧一并丢弃,造成资源上的浪费
有没有办法只重传
错误的帧,而不把正确的帧一并丢弃
解决办法:设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧
滑动窗口所存在的几种情况
SR与GBN相比,所有失序的帧会被放入到缓存中,一旦意外丢失的帧超时之后重传得到确认,会一次性确定所有放入缓存中的帧
假如5号帧丢失,接收方没有收到应答消息,则接下来的6,7都会被放入缓存中,直到5号帧的应答消息被收到,才会被真正填充到窗口中
图中发送2帧时2帧丢失,接收方将345帧放入缓冲区,当2帧超时重传后,接收方接收到2帧,并将345帧真正交付,窗口向后移动4格
滑动窗口长度
窗口的长度不可以无限
发送窗口大小应该等于接受窗口大小,这样利用率比较高
点对点链路
频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资源
用户的数据会被集中器
接收,在集中器的输入缓存中,集中器扫描缓存时,遵循先来先走
的原则,大大提高了利用率
STDM帧不是固定分配时隙,而是按需动态分配时隙
所有用户都可随机发送信息,发送信息时占全部带宽,比静态化分信道的速度更快
特点是:想发就发,不监听信道,不按时间槽发送,随机重发
随机发送的代价就是会大概率发生冲突
:
如何检测冲突?
如果发生冲突,接收方就会检测出差错,然后不予确认,发送刚在一定时间内收不到就判断发生冲突
超时后等一随机时间再重传
将时间分成若干个相同的时间片,所有用户同步接入网络,如发生冲突就等到下一个时间片再发送
相比于纯ALOHA协议,固定了发送时间
,减小了随机性
,提高了速率
全称载波监听多路访问协议CSMA协议
名称 | 思想 | 优点 | 缺点 |
---|---|---|---|
1-坚持CSMA | 先监听信道,空闲则直接传输,不必等待,忙则一直监听,直到空闲马上传输,如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听 | 只要空闲立即发送,避免媒体利用率的损失 | 假如有两个或两个以上的站点有数据要发送,冲突就不可避免 |
非坚持CSMA | 那么它先监听信道,空闲则直接传输,忙则等待一个随机的时间之后再进行监听 | 采用随机的重发延迟时间可以减少冲突发生的可能性 | 可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低 |
p-坚持CSMA | 先监听信道,空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输,忙则等待一个随机的时间之后再进行监听 | 既能减少冲突,又能减少媒体空闲时间 | 发生冲突后还是要坚持把数据帧发送完,造成了浪费 |
坚持指的是对于监听信道忙之后的坚持
思想:
如果一个主机要发送消息,那么它先监听信道。空闲则直接传输,不必等待,忙则一直监听,直到空闲马上传输,如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程
优点:只要空闲立即发送,避免媒体利用率的损失
缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免
思想:
如果一个主机要发送消息,那么它先监听信道,空闲则直接传输,忙则等待一个随机的时间之后再进行监听
优点:采用随机的重发延迟时间可以减少冲突发生的可能性
缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低
p-坚持CSMA思想:
如果一个主机要发送消息,那么他先监听信道,空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输,忙则等待一个随机的时间之后再进行监听
优点:既能减少冲突,又能减少媒体空闲时间
缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费
A站发了一个很短的帧,但发生了碰撞,不过帧在发送完毕后在检测到发生碰撞,没法停止发送,因为发完了,为了使碰撞的时候我们的帧还没有结束,我们需要定义一个最小帧长
所以帧的传输时延至少要少于两倍于信号在总线中的传播时延。
帧长(bit)/ 数据传输速率
最小帧长=总线传播时延x数据传输速率x2
CD:只能监测碰撞,不能避免碰撞
CA:只能避免碰撞,不能监测碰撞
发送数据之前,先检测信道是否空闲,空闲则发送RTS信号,信道忙则等待,
接收端接收到RTS后,将响应CTS,其他站点没有收到接收点的CTS,将不会发送数据
发送端收到CTS后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)
接收端收到数据帧后,采用CRC来检验数据是否正确,正确则响应ACK帧
发送方收到ACK就可以进行下一个数据帧的发送,若没有则一致重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)
主要包括两大类:1.轮询协议 2.令牌传递协议
轮询协议存在的问题:
令牌传输协议中的令牌:一个特殊格式的MAC控制帧,不含任何信息,控制信道的使用,确保同一时刻只有一个节点独占信道
令牌传输协议工作流程
令牌传递协议的问题与轮询协议的问题一致
以太网MAC帧尾部包括
以太网MAC帧的中间是IP数据报(46字节到1500字节之间)
为什么IP数据报最小是46字节?
因为最小传输字节数为64字节,而目的地址,源地址,类型,FCS加在一起占了18字节,64-18=46,故IP数据报最小为46字节
1 有固定基础设施无线局域网
2.无固定基础设施无线局域网的自组织网络
覆盖的范围从几十公里到几千公里,连接多个城市或国家
只支持全双工链路
HDLC协议和PP协议一样都采用全双工通信
为什么HDLC协议可靠我们不使用呢?
因为HDLC太浪费,而我们对于网络速率要求比较高,而数据链路层本来就是不可靠的传输,差错控制由TCP完成
现在一般使用交换机而不是网桥
网桥不同于集线器,不会全部转发,而是根据mac地址进行过滤之后再进行转发
源路由网桥
随着时代发展,网桥的接口越来越多,网桥便变成了交换机
上一篇相关文章
超详细的计算机网络基础知识总结 第一章-概述
超详细的计算机网络基础知识 第二章:物理层
相见即是有缘,如果对你有帮助,给博主一个免费的点赞以示鼓励把QAQ QAQ