文章目录
- 前言
- 一、数据链路层的功能
- 1.1、数据链路层的研究思想
- 1.2、数据链路层基本概念
- 1.3、数据链路层功能概述(5个功能)
- 二 、组帧
- 2.1、封装成帧以及发送帧的过程(包含名词解释)
- 2.2、实现透明传输及四种组帧方法
- 2.2.1、什么是透明传输?
- 2.2.2、方法一:字符计数法
- 2.2.3、方法二:字符填充法
- 2.2.4、方法三:零比特填充法
- 2.2.5、方法四:违规编码法
- 2.2.6、四种方法的小结
- 三、差错控制
- 3.1、差错从何而来?
- 3.2、数据链路层的差错控制(介绍检测编码以及纠错编码)
- 3.3、编码 VS 编码(物理层与数据链路层的编码对比)
- 3.4、检错编码(两种方式)
- 方式一:奇偶校验码
- 方式二:CRC循环冗余码
- 简易版的CRC循环冗余码示例(十进制)
- 实际CRC循环冗余码应用(二进制)
- 规范流程
- 实战例题
- CRC的注意点(疑问点:是否没有差错的接收就是可靠传输)
- 3.5、纠错编码
- 3.5.1、海明码
- 3.5.2、认识海明距离
- 3.5.3、海明码的工作流程(包含详细的流程,结合示例)
- 步骤一:确定校验码位数r
- 步骤二:确定校验码和数据的位置
- 步骤3:求出校验码的值
- 步骤4:接收端进行检错与纠错
- 思考与一些疑问点与思考
- 脑图时刻
- 四、流量控制和可靠传输机制
- 4.1、流量控制、可靠传输机制与滑动窗口机制
- 4.1.1、理解数据链路层的流量控制(对比传输层流量控制)
- 4.1.2、流量控制的方法(停止-等待协议、滑动窗口协议)
- 停止-等待协议
- 滑动窗口协议
- 对比三种等待协议的窗口大小
- 4.1.3、对可靠传输、滑动窗口、流量控制进行区分:
- 4.1.4、对于停止-等待协议、滑动窗口协议究竟是哪一层的?
- 脑图时刻
- 4.2、停止-等待协议
- 4.2.1、为什么有停止-等待协议以及研究前提
- 4.2.2、停止-等待协议的无差错情况&有差错情况
- 无差错情况:
- 有差错情况
- 第一种情况:数据帧丢失或检测到帧出错
- 第二情况:ACK丢失
- 第三种情况:ACK迟到
- 4.2.3、停止-等待协议性能分析(优缺点)
- 4.2.4、理解停止-等待协议中的信道利用率
- 4.2.5、信道利用率的实际例题
- 脑图时刻
- 4.3、后退N帧协议(GBN协议)
- 4.3.1、停-等协议的弊端(认识流水线技术)
- 4.3.2、后退N帧协议中的滑动窗口
- 4.3.3、GBN发送方必须响应的三件事
- 4.3.4、GBN协议接收方要做的事情
- 4.3.5、运行中的GBN(运行过程)
- 4.3.6、提问:滑动窗口长度是否是可以无限的?
- 4.3.7、GBN协议重点总结
- 4.3.7、习题练习
- 习题1
- 习题2
- 4.3.8、GBN协议性能分析
- 脑图时刻
- 4.4、选择重传协议(SR协议)
- 4.4.1、GBN协议的弊端
- 4.4.2、选择重传协议中的滑动窗口(SR协议)
- 发送方滑动窗口的各个状态
- 接收方滑动窗口的各个状态
- 4.4.3、SR发送方必须响应的三件事
- 4.4.4、SR接收方要做的事情
- 4.4.5、运行当中的SR过程(涉及到超时情况)
- 4.4.6、滑动窗口长度计算(包含场景情况)
- 4.4.7、SR协议重点总结
- 4.4.8、习题练习
- 脑图时刻
- 4.5、介质访问控制(MAC)
- 4.5.1、传输数据使用的两种链路(点对点、广播式)
- 4.5.2、认识介质访问控制
- 4.5.3、信道划分介质访问控制(静态划分信道)
- 4.5.3.1、认识多路复用技术
- 方式一:频分多路复用FDM
- 方式二:时分复用TDM
- 普通时分复用TDM
- 统计时分复用STDM(优化,动态分配时隙)
- 方式三:波分多路复用WDM
- 方式四:码分多路复用CDM
- CD与CS如何区分?
- 4.5.4、动态分配信道
- 4.5.4.1、随机访问介质访问控制
- 认识随机访问介质访问控制
- 方式一:ALOHA协议
- 认识ALOHA协议
- ①纯ALOHA协议
- ②时隙ALOHA协议
- ALOHA协议的对比与总结
- 方式二:CSMA协议(增加检测信道)
- 认识CSMA协议
- ①1-坚持CSMA
- ②非坚持CSM
- ③p-坚持CSMA
- 三种CSMA对比总结
- 方式三:CSMA/CD协议(增加发送数据时检测)
- 认识CSMA/CD协议(CS、MA、CD)
- 为什么先听后发还会出现冲突?
- 传播时延对于载波监听的影响?具体通信时间(引出`2T`)
- 如何确认碰撞后的重传时机?
- 练习题(计算碰撞范围)
- 最小帧长的问题
- 脑图时刻
- 方式四:CSMA/CA协议(碰撞避免)
- 认识CSMA/CA与CD的区别
- 问题:为什么有了很全面的CD协议还需要有一个CA协议呢?
- CSMA/CA协议工作原理
- CSMA/CD与CSMA/CA的相同点但与不同点
- 4.5.4.2、轮询访问介质访问控制
- 4.5.4.2.1、三种协议回顾
- 方式一:轮询协议
- 方式二:令牌传递协议
- MAC协议总结
- 五、局域网
- 5.1、局域网基本概念和体系结构
- 5.1.1、认识局域网
- 5.1.2、局域网拓扑结构
- 5.1.3、局域网传输介质
- 5.1.4、局域网介质访问控制方法
- 5.1.5、局域网的分类
- 5.1.6、IEEE802标准
- 5.1.7、MAC子层和LLC子层:
- 脑图时刻
- 5.2、以太网
- 5.2.1、认识以太网
- 5.2.2、以太网的两个标准
- 5.2.3、以太网提供的无连接、不可靠的服务
- 5.2.4、以太网提供的无连接、不可靠的服务
- 5.2.5、10Base-T以太网
- 5.2.6、适配器和MAC地址
- 5.2.7、以太网MAC帧
- 5.2.7.1、认识以太网MAC帧的组成
- 5.2.7.2、疑问:为什么数据链路层加头加尾,为什么没有在MAC帧后面没有一个帧结束定位符呢?
- 5.2.8、高速以太网(3种)
- 脑图时刻
- 5.3、无线局域网
- 5.3.1、认识IEEE802.11
- 5.3.2、802.11的MAC帧头格式(各个字段细节)
- 5.3.3、IEEE802.1标准类型分类(4个)
- 5.3.4、无线局域网的分类
- 5.3.4.1、有固定基础设施的无线局域网(BSS、ESS,服务及标识)
- 5.3.4.2、无固定基础设施无线局域网的自组织网络
- 5.4、VLAN基本概念与基本原理
- 5.4.1、为什么有VLAN存在呢?(局域网局限性的特点)
- 5.4.2、VLAN基本概念
- 5.4.3、VLAN实现大局域网的划分
- 5.4.4、VLAN实现原理
- 5.4.4.1、一个交换机内部的VLAN实现(转发表、VLAN表,案例情景)
- 5.4.4.2、交换机与交换机之间的实现
- 两个交换机内部实现原理
- VLAN实现:IEEE802.1Q帧(交换机与交换机之间传输)
- 5.4.5、实战练习:识别不同VLAN局域网之间是否能够进行通信?
- 5.4.6、选择题练习
- 六、广域网
- 6.1、广域网概念
- 6.2、PPP协议
- 6.2.1、PPP协议的特点
- 6.2.2、PPP协议应满足的要求
- 6.2.3、PPP协议无需满足的要求
- 6.2.4、PPP协议的三个组成部分(实现功能)
- 6.2.5、PPP协议如何工作(PPP协议的状态图)
- 6.2.6、PPP协议帧格式
- 6.3、HDLC协议
- 6.3.1、认识HDLC协议
- 6.3.2、HDLC的站
- 6.3.3、HDLC的帧格式
- 6.3.4、PPP协议&HDLC协议的相同点与不同点
- 脑图时刻
- 七、链路层设备
- 7.1、物理层扩展以太网
- 扩展方式一:光纤
- 扩展方式二:主干集线器
- 7.2、链路层扩展以太网
- 7.2.1、网桥
- 7.2.1.1、认识网桥与原理
- 7.2.1.2、网桥的优点
- 7.2.1.3、第一类网桥:透明网桥(包含自学习过程,三个案例情况)
- 7.2.1.4、第二类网桥:源路由网桥(原理类似第一类)
- 7.2.2、以太网交换机(多接口网桥)
- 7.2.2.1、认识以太网交换机
- 7.2.2.2、以太网交换机的优点
- 7.2.2.3、以太网交换机的两种交换方式(直通式、存储转发式)
- 7.2.2.4、交换机的转发机制(两个示例)
- 7.3、冲突域与广播域
- 7.3.1、认识冲突域与广播域
- 7.3.2、例题:求广播域、冲突域的个数
- 脑图时刻
前言
目前正在备考24考研,现将24计算机王道的408学习整理的知识点进行汇总整理。
博主博客文章目录索引:博客目录索引(持续更新)
本章节导图:
一、数据链路层的功能
1.1、数据链路层的研究思想
过程:主机A向主机B发送数据,发送方会在对应的数据在每一层会加上相应的控制信息进行封装,之后传输出去,经过中间系统时也会经历解封、封装过程,最终传输到主机B通过解封来取得其中的数据。
上图的话可以看到数据是自上而下先封装之后自下而上再解封,当专门只研究数据链路层问题时,我们只关心协议栈的水平方向的各个数据链路层,如下图的箭头所示,这就是这一张研究链路层的一个研究思想。
1.2、数据链路层基本概念
结点
:主机、路由器。
- 相邻结点:使用一条线连接起来的两个节点。
链路
:网络中两个结点之间的物理通道,链路啊的传输介质主要有双绞线、光纤和微波,分为有线链路、无线链路。
数据链路
:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成了数据链路。
- 简述:控制数据传输协议的硬件和软件 + 链路 = 数据链路
帧
:链路层的协议数据单元,封装网络层数据报。
数据链层负责内容:通过一条链路从一个结点向另一个物理链路直接相连的相邻节点传送数据报。
主要职责:将上层网络层交付给他的数据报安全的、无差错的,传给它的相邻节点。
1.3、数据链路层功能概述(5个功能)
功能概述:数据链路层在物理层提高服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机的网络层。
主要作用:加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
描述过程:公司A的Boss将五份文件给了小秘书让她送到公司B,小秘书肯定不会自己去带过去,此时会让傻子运输过去,由于不放心则将五个文件进行了编号让傻子带过去;之后傻子带过去到公司B给到了B公司小秘书,此时它发现其中少了几份文件,让傻子重新发过来,之后等待文件重发完成全部收到了之后,B公司的小秘书交由大Boss。
- 大Boss:网络层;小秘书:数据链路层;傻子:物理层。
- 其中物理层比较傻仅仅只负责传输数据,有时候会容易弄丢数据,那么数据链路层需要提前准备好,对可能发生的错误进行提前预知,之后进行相应的差错控制,相当于给网络层提供了无差错的服务。(也就是说到达网络层的时候,数据肯定是完好无差错的)
为了实现无差错的数据链路,此时就会有一定的功能:
功能1:为网络层提供服务
包含有:无确认无连接服务、有确认无连接服务、有确认面向连接服务。
①无确认无连接服务
:通常用于实现通信或者误码率比较低的一个通信信道,也就是说原主机在发送数据的过程中不需要事先跟目的主机建立一个链路的连接,目的主机收到数据链路层之后也不需要进行确认。
- 缺陷:若是真的丢失数据,数据链路层也不会进行重发,而是直接交给上一层处理,不太负责任。
- 目的:为了实时的通信,速度更快就需要有这种服务。
②有确认无连接服务
:事先不需要建立连接,目的主机在收到数据的时候必须发回一个确认,若是源主机没有收到确认信号,就会将刚没有收到确认的这个帧,重新传输一次,此时就可以提高数据链路层的可靠性。
- 适合场景:适合误码率比较高的通信信道。
③有确认面向连接服务
:首先需要建立连接,之后接收端收到帧之后,就需要返回一个确认帧才能够继续发送下一个。
- 好处:最安全可靠。
注意:有连接一定有确认!若是有连接那么就一定是有确认的,所以说不存在没有确认还面向连接的服务。
功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
功能三:组帧。
功能四:流量控制,接收方用来限制发送方的速度。
功能五:差错控制。
- 差错包含帧错/位错,对于各个错误都有相应的手段来进行控制
二 、组帧
2.1、封装成帧以及发送帧的过程(包含名词解释)
将网络层交付给的IP数据报进行加工处理,也就是在数据报上加头、加尾形成链路层传送的数据传送单元,也就是形成帧。
封装成帧
(组帧,发送端的过程):发送方在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能够根据首部和尾部的标记,从收到的比特流中识别帧的开始和节数。
- 首部、尾部添加一个字段或者说是字节,这个字节就叫做
帧定界符
。
帧定界
:首部和尾部包含许多控制信息,这个是其中的一个。其作用就是确定帧的界限。其他的控制信息还包含有差错控制、流量控制、一些物理地址相关的信息。
发送帧的过程:从帧的开始,也就是帧的首部开始逐个比特发送,直到发送到这个帧尾部为止,接收端接收的时候可以根据帧首部判断此时接收帧了,直到接收到帧尾部的定界符。
帧同步
(接收端的过程):接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
数据链路层的帧长
:帧的数据部分+帧首部+帧尾部。- 注意:为了提高帧的传输效率,都应该使帧的数据部分尽可能的大于首部和尾部,也就是说帧大部分应该是数据部分。此时会给数据部分设置一个极限值,叫做最大传输单元MTU。
最大传输单元MTU
:用来描述帧数据部分的长度,根据不同的协议MTU的长度都不同,在传送帧的时候,数据部分一定要<=MTU最大传送单元。
2.2、实现透明传输及四种组帧方法
2.2.1、什么是透明传输?
指的是实实在在但是你看不见。
透明传输
:是指不管所传输数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层指的是"看不见"有什么妨碍数据传输的东西。
- 对于传输的数据内容不需要知道包含了什么金额,就直接把这些东西送到对岸就可以
当所传输数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,接收方不会将这样的数据误认为是某种控制信息,这样才能够保证数据链路层的传输是透明的。
组帧的四种方法:1、字符计数法。2、字符(节)填充法。3、零比特填充法。4、违规编码法。
2.2.2、方法一:字符计数法
规则:帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数。
举例:读取第一个字节我们即可知道发送的一个帧字节的总长度,例如下面第一个是5,那么表示这一个帧为5个字节,一直到4为止;第3帧中第一个字节是8,那么表明这个帧是包含8个字节,一直到6结束。
缺陷:试想上图中若是在传输过程中受到了干扰,每个帧的第一个字节数字5变为了其他数字,那么是不是就会出现毁灭性的问题,后面的所有帧都无法正常解析接收到,所以在实际应用中这个方法并不是很常用。
2.2.3、方法二:字符填充法
规则:在传送数据的头尾部加入首部、尾部编码,用于表示帧开始与帧结束。
仅仅只是设置首位编码是不够的,我们可能会碰到下面两个场景:
场景一:传输的帧是文本文件组成的(由于文本文件的字符都是从键盘上处输入的都是ASCII码)。那么不管从键盘上输入什么字符都可以放入到帧中传过去(因为没有与SOH、EOT编码相重的情况),即透明传输。
场景二:若是传输的帧是非文本文件组成时(二进制的程序或者图像等),那么此时就由十分大的情况出现与SOH、EOT相同的二进制编码,此时若是没有增加额外规则,可能接收端在读取时可能会提前结束,此时我们就需要采用字符填充方法来实现透明传输。
上面说的重复情况如下图所示:
解决方案:在于实际数据部分中的SOH、EOF编码重复的前面加上一个字符填充,这样就表示并不是开头或者结尾仅仅只是一个转义字符。
解决示例:如下原始数据中可以看到首部、尾部里由很多EOT、SOH、ESC相同的编码,此时我们在每个重复的为止前面添加一个字符填充,那么之后接收端在实际读取的时候当碰到字节填充时就会知道后面的这一个字符不是首部开始或者首部结束,会将它当作一个数据内容字符来读取。
2.2.4、方法三:零比特填充法
规则:在数据部分的首尾部分加上统一的编码0111110,也就是1个0跟着6个1再跟1个0。
疑问:若是中间帧中数据也出现01111110这种编码呢,如何解决?
解决方案:发送端在发送数据之前在数据部分中若是出现连续5个1时,就直接在后面添加一个0,完成填充;接收端在读取帧中的数据的时候若是碰到有连续五个0时,首先就先将后面的1删除,之后同样也是循环往复。
特点:保证了透明传输,在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
2.2.5、方法四:违规编码法
在物理层比特编码的时候实现透明传输的方法。
规则:在曼彻斯特编码中只有两种规则来表示0、1,分别时高-低或者低-高(具体根据题目要求),不会出现高-高、低-低的情况,那么我们就可以使用高-高、低-低来作为界帧的起始和终止。
应用:ieee802.1就采用了这种编码方式。
2.2.6、四种方法的小结
小结:
1、对于字节计数法中Count字段的脆弱性(一旦第一个值有差错,那么就会影响后面所有的读取)。
2、字符填充实现上比较复杂和而不具备兼容性。
3、目前比较普遍使用的帧同步法为:比特填充、违规编码法。
三、差错控制
3.1、差错从何而来?
概括来说,传输中的差错都是由于噪声引起的。
全局性
:由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
- 解决方法:提高信噪比来减少或避免干扰(对传感器下手)。
- 提高了信噪比之后,误码率就会下降,差错也就减少。其中误码率指的就是发生差错的比特/总比特。
局部性
:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。
- 解决方案:通过利用编码计数来解决。
- 冲击指的是数据在传输的过程中突然被打了一拳,这就是收到了冲击噪声的影响。
差错分为两种:位错、帧错。
位错
:指的是比特出错,1变成0、0变成1。帧错
:指的是几个比特的组合,也就是以帧为单位发生了错误,可以采用对帧编号确认重传等机制来解决帧错的问题。
主要包含有:丢失、重复、失序三种情况
链路层为网络层提供服务:
- 对于通信质量好,有线传输链路的选择:无确认无连接服务。
- 对于通信质量差的,无线传输链路的选择:有确认无连接服务、有确认面向连接服务。
我们可对于不同的链路可以采用不同的可靠传输机制。
3.2、数据链路层的差错控制(介绍检测编码以及纠错编码)
由于数据链路层是点到点的,那么每一个节点和他的下一个相邻的节点实际构成了发送方和接收方的一个关系,一旦关系成立,那么接收方就应该对于发送方发来的数据进行一个差错的检测,甚至是纠正。
若是要检测错误:采用检错编码;若是要纠正错误,就采用纠错编码。
检错编码采用编码有:奇偶校验码
、循环冗余码
(目前经常使用这种检测方式)。
纠错编码采用的编码有:海明码
。
3.3、编码 VS 编码(物理层与数据链路层的编码对比)
编码 VS 编码(物理层与数据链路层的编码对比):数据链路层和物理层的数据编码与调制不同。
- 物理层编码是针对的单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。
- 数据链路层的编码是针对的一组比特,通过冗余码的计数来实现一组二进制比特在传输过程中是否出现了错误。
什么是冗余编码呢?
- 在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。
- 当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。
3.4、检错编码(两种方式)
方式一:奇偶校验码
组合:是由n-1位信息元以及1位校验元组成,其中n-1位信息员是实际要发的数据,1位校验元添加到n-1位之前,我们可以自行去进行添加,通过1的个数来指明是奇数还是偶数。
奇偶校验码的局限性:若是有一位发生了改变,那么我们是能够检测出来的,但是若是两位发生了改变如1变为0、0变为1,那么依旧无法检测出来。
例题:如果有一个字符S的ASCII编码从低到高依次为1100101,采用奇校验,在下述收到的传输字符中,哪种错误不能检测?
解析:给出的是1100101,那么题目说采用奇校验,那么由于给出的字符只有偶数个1,那么此时我们添加上一位校验元1,此时就是6位,接着看选项,可以看到A、B、C的1个数都是偶数个,只有D中1的个数为奇数位,此时对于A-C很明显是一定能够检测出来有问题,对于D则无法检测出来,因为可能是其中的两个比特发生改变,也有可能是没有出错。
奇偶校验码特点:只能够检查出奇数个比特错误,检错能力为50%。
方式二:CRC循环冗余码
简易版的CRC循环冗余码示例(十进制)
下面的例子与实际的CRC循环冗余码差别不大,一个是用十进制数,而CRC则是对二进制来进行除法。
发送端:首先给出我们要传输的数据5以及多项式2,接着我们进行除法运算得到的余数即为冗余码1,接着我们将发送数据和冗余码相加即可得到最终发出的数据5 + 1 = 6。
接收端:来进行检测是否传输出错,可以使用得到的数据6来处于多项式,若是余数为0,此时就表示无错。
实际CRC循环冗余码应用(二进制)
规范流程
步骤1、准备待传有效数据。
首先将要发送的数据切割成一段又一段的比特组合:
步骤2、每个组都加上得到的冗余码构成帧再发送
- 实际题目会给出一个生成多项式r+1位。
有时候不会直接给出类似于11011这样子的生成多项式,也有可能会是1x24+ 1x23 + 0x22 + 1x21 + 1x20,也就是组成了11011。
- 对于一个数的阶数,就看对应2的最高位是多少,例如11011,最大的多项式为24,那么对应的阶数就是4。
我们首先再要传的数据后面添加上r位的0,如下:
最终FCS帧检验序列计算方式为如下式子,最终得到一个余数是r位的FCS也就是帧检测码:
步骤3:接收方检验
我们拿着最终接收得到的数据来除以生成多项式,最终根据余数是否为0来判断是否要丢弃:
特点:FCS的生成以及接收端CRC检验都是由硬件实现,处理十分迅速,因此不会延误数据的传输。
实战例题
题目:
解析:给出了发送的数据以及生成多项式,我们就可以来计算得到余数帧检测序列。
步骤1:准备待传有效数据。
要发送的数据为1101011011,生成多项式为10011,接着我们来求生成多项式的阶数。
10011表示成多项式为:x4 + x1 + x0,此时可以确定阶为4。
步骤2:每个组都加上得到的冗余码构成帧再发送
计算冗余码:
- 加0:假设生成多项式G(x)的阶为r,则加r个0。
- 模2除法:数据加0后除以多项式,余数为冗余码/FCS/CRC检验码的比特序列。(过程原本减数,这里为异或 同0异1)
我们首先在要发送的数据后加上4位0,即为:11010110110000。
接下来我们进行除法运算,注意过程中应该是同0异1:
最终就求得到余数FCS(冗余码或者FCS帧检验序列):
得到余数后,我们将之前添加的所有0换为余数后进行传输,此时传输的值为:11010110111110。
最终要发送的数据则是:实际的数据+帧检测序列
步骤3:接收方检验
将收到的每一位帧来除以同样的除数,接着检查得到的余数R是否为0。
- 余数为0,判定这个帧没有差错,接收。
- 余数为不为0,判定这个帧有差错(无法确定到位),丢弃。
CRC的注意点(疑问点:是否没有差错的接收就是可靠传输)
1、一定要区分开CRC与FCS的区别:CRC指的是一种检测编码的一种方法,而FCS指的是帧检测序列。
2、默认只要接收端接收了就说明帧没有问题。这里是接近1的概率认为没有差错。
- 极端情况下,即使最后的余数可能为0,但是还是可能发生差错。
- 在数据链路层仅仅使用循环冗余校验CRC差错检测奇数,只能做到对帧的无差错接收,即"凡是接收端数据链路层接受的帧,我们都可以以非常接近于1的概率认为这些帧在传输过程中没有产生差错"。接收端丢弃的帧虽然曾说到了,但是最终还是因为有差错被丢弃。
- “凡是接收端数据链路层接受的帧均无差错”(默认是这么认为的)。
3、疑问:没有差错的接收是不是就是可靠传输?
- "可靠传输"指的是数据链路层发送端发送什么,接收端就收到什么。
- 对于CRC检验,只能够实现无比特差错的传输,但这还不是可靠传输。
- 原因描述:只要接收了这个帧,就没有比特差错,但是这并不能叫做可靠传输,因为我们有一些帧丢弃了它(让其重传),没有这些帧进行处理,那发送端发送的全部数据接收端并没有全部接收,所以这还达不到可靠传输。
3.5、纠错编码
3.5.1、海明码
对于之前的奇偶校验码仅仅只能够检测出错误,对于海明码则可以发现错误、找到位置、纠正错误。
工作流程如下:
- 第二步中是要将这个校验码插入到数据位数当中,这一点与前面两种检测编码不一样,对于奇偶校验码和CRC循环冗余码都是在最低为附加上一位或者是几位的效验码,但是在海明码这里需要根据一定的规则,在数据位当中安插上这个校验码。
3.5.2、认识海明距离
海明距离
:两个合法编码(码字)的对应比特取值不同的比特数称这两个码字的海明距离。
- 或者说:一个有效编码中,任意两个合法编码(码字)的海明距离的最小值称为该编码集的海明距离(码距)。
举例:例如1000、1111的海明距离就是三位,若是01、00那么就是1位。
**若是求一个编码系统当中的码距呢?**也就是取任意两个编码之间的最小距离(不同的位数)。
场景1:当我们编码系统中码距为1时,是无法检测出1位错的。
试想,传输过程中000出现了错误变为了001,那么我们是无法判断它是否错误的,因为在正确的编码传输中包含有001。
场景2:若是编码系统中的码距为2,那么可以检测出1位错误,但是不能够被纠正。
试想:若是0000错了一位变为了0001,此时我们就能够发现它有错误,原因是正确的编码中并没有码距为1的与其相同的编码,所以能够检测出来。
那是否能够纠正呢?依旧是不行的,我们举个例子,就以0000来传输错误一位来看,可能出现的错误情况有:
1000
0100
0010
0001
当我们传输过来的是0010时,我们能够发现它是错误的,因为在正确编码中并没有这个,此时我们对其进行纠错,来修改任意一位可以是如下:
1010 命中
0110 命中
0000 命中
0011 命中
可以发现纠正任意一位能够匹配到所有正确的,那么不就直接证明了无法纠正!
场景3:若是码距为3呢?
0000
0111
若是传输0000过程中修改了1个数可能是0010,那么我们对其进行纠错,尝试修改这个错误的一位:
1010
0110
0000 命中
0011
可以看到只命中了1个,那么可以得出距若是为3,那么是可以纠正1位错误,可以检测出来1、2个错误的。
最终结论:若是海明码需要检测d位错,那么码距就是d+1,若是要纠正d位错呢,就需要是2d+1。
3.5.3、海明码的工作流程(包含详细的流程,结合示例)
可学习这个:海明码原理详细讲解(别再死记硬背了)
步骤一:确定校验码位数r
数据/信息有m位,冗余码/校验码有r位。
此时可以通过一个公式来表示m、r之间的关系(海明不等式
):2r >=m+r+1。
- 一个校验码可以用来筛选二进制中的一位数,所以需要2r来表示可筛选的范围,实际也就是最终的范围。
- 同时校验码与位数最终是放在一起来进行传输的,所以m+r。
- 在之前用来进行检测时,若是想要检测出d位错,那么就需要d+1位。
示例:此时要发送的数据D = 1100。
此时m是4位,那么代入公式2r >=m+r+1,得到r最小为3位,此时r = 3。
最终海明码一共有 4 + 3 = 7位
其中原数据4位,校验码3位。
步骤二:确定校验码和数据的位置
校验码有3位,我们从右到左来依次表示1、2、3、4、5、6、7这样的7位数。
对于3位校验码依次放的位置是:20、21、22,我们这里分别标记位标识为x1、x2、x4。
接着我们将给到的原始数据1100,依次从前往后放入到表中:
步骤3:求出校验码的值
这步骤中关键思想是进行分组,可以看到序号上方使用了二进制来进行表示每个序号值,这个之后需要来进行分组划分用途:
对于x1、x2、x4分别表示的是001、010、100,实际可以看到表示三位数的一位,接着我们需要将整个表中分别去匹配**1
、*1*
、1**
,整个*可以表示0或者1,只要能够匹配到即可。
接着我们对这一组采用偶校验进行编码,得到x1、x2、x4的取值:
4号 x4 0 1 1 => x4=0
2号 x2 0 1 1 => x2=0
1号 x1 0 0 1 => x1=1
得到了x1、x2、x4的值之后,我们将其值填入到表中:
此时得到的海明码实际就可以进行传输了。
步骤4:接收端进行检错与纠错
此时我们这里直接将海明码中的序号5进行修改,来看是否可以去纠错找到错误的位数,并且进行改正过来:
此时接收端收到的值(错误的值)为1110001,这里我们依旧采用偶校验来进行校验:
- 打x的就表示1的个数为奇数个,很明显对应的校验码检测到指定这一位数有错误!
确定错误位置有两种方法:
方法1:找到不满足奇/偶校验的分组取交集,并与符合校验的分组取差集。
通过画圈的方式来筛选指定位,可以看到1号、4号有错,那么可以通过画圈来定位到5、7中有一个是错误的。
此时我们再使用2号校验码(对应分组的位都是正确的)最终筛选出来5是错的,那么我们将5位置的1修改为0就可以完成纠错了!
方法2:分组采用指定奇/偶校验(规定来)得到各个x1、x2、x4位数最终进行组合起来即可定位
由于x4的分组是1**
,x2的分组是*1*
,x1的分组时**1
,所以对应的合并位置也是如此!
最终筛选出来是第5位发生了错误。
思考与一些疑问点与思考
疑问1:对于上面的海明码能够检测出几位,若是多位有错误怎么办?
结论:针对于标准的海明码只能够检测出1位错误的。
- 标准的海明码(如Hamming(7,4)码)在每4个数据位中增加3个校验位,总共7位。这种海明码的设计可以检测并纠正单个位的错误。如果传输过程中出现了两个位的错误,那么纠错能力可能无法覆盖这种情况。
- 对于多位错误的情况,可能需要使用其他更复杂的纠错码方案。纠错码的选择应该根据具体的需求和相关的传输错误模式来进行。
疑问2:上面仅仅是举例了数据位发生了错误,若是检测位发生了错误,是否也能够检测到?
结论:同样也是可以检测到的,对于x1、x2、x4,他们的作用仅仅是分别表示**1
、*1*
、1**
来进行划分分组的,对于本身的值实际并不会影响检错和纠错,最终依旧是能够进行检测并纠错的!
脑图时刻
四、流量控制和可靠传输机制
4.1、流量控制、可靠传输机制与滑动窗口机制
4.1.1、理解数据链路层的流量控制(对比传输层流量控制)
为什么要进行流量控制?
- 较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
- 若是当前接收方已经接收不了更多的请求了,此时发送方依旧还是以之前的速度发出,那么此时就会导致接收方溢出,这总溢出会导致发送方法发送来的数据接收不到,既浪费了空间,也浪费了资源,所以说流量控制是必须的。
数据链路层的流量控制与传输层的流量控制区别:
- 数据链路层的流量控制是对点对的,而传输层的流量控制是端到端的。
- 数据链路层的流量控制手段方式:接收方收不下就不回复确认,若是接收端能够收下那么会回复一个确认帧。
- 传输层流量控制手段方式:接收端给发送端一个窗口公示。
4.1.2、流量控制的方法(停止-等待协议、滑动窗口协议)
包含两个:停止-等待协议
、滑动窗口协议
。
- 停止-等待协议实际也可以算成是一种特殊的滑动窗口协议,这种协议窗口是1,发送和接收窗口都是1。
- 滑动窗口协议分为两个方法:
后退N帧协议(GBN)
、选择重传协议(SR)
。
停止-等待协议
停止-等待协议
:实际是比较低效的,因为每发送一个帧都需要等待接收方发回确认帧之后才会发下一个帧
过程:发送端每发送一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。
滑动窗口协议
滑动窗口协议
:相对来说比较高效
窗口窗口协议中滑动的过程:
下图中上面数据是发送端,下面数据是接收端,其中每一个小格就是标志着一个帧,分别是从0号帧、1号帧排序,在下图中发送窗口位置了6个大小,接收端维持了一个,此时发送窗口中的帧都是可以连续发送出去的(无需等待相对应序号的帧收到确认帧后才发),而接收窗口只能够接收相对应的序号帧。
发送窗口
:指的是发送方维持一段连续的允许发送的帧的序号。(也可以理解为发送端目前正在发送的数据)
当接收窗口收到0号帧时,此时接收窗口会往前就会移动一格,表明当前接收方可以接收第2个帧了:
与此同时接收方会返回一个0号确认帧,当发送方收到之后,同样来进行滑动窗口一格,此时在窗口中的5号帧也是可以发送出去了:
额外说明:实际上停止-等待协议也是滑动窗口协议,只不过发送端、接收端的窗口各自也仅仅只有一个。
对比三种等待协议的窗口大小
对比三种等待协议的窗口大小:
- 停止-等待协议:发送窗口大小=1,接收窗口大小=1。
- 后退N帧协议(GBN):发送窗口大小>1,接收窗口大小=1。
- 选择重传协议(SR):发送窗口大小>1,接收窗口大小>1。
注意点:在链路层的滑动窗口协议中,整个窗口(发送窗口、接收窗口)的大小 在传输过程中是固定的。
4.1.3、对可靠传输、滑动窗口、流量控制进行区分:
可靠传输
:发送端发啥,接收端收啥。
- 解决问题:这种传输方式是可靠的,若是发生帧的丢失,帧的失去与重复,那么接收端都要进行整个控制使得我们接收端失去、重复的帧回到正常状态,这也就是可靠传输要解决的问题。
流量控制
:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。
- 解决方案:
滑动窗口
。- 解决问题1:流量控制(收不下就不给确认,想发也发不了)。【通过滑动窗口,我们可以每次固定一个窗口的大小,若是接收到一个确认帧窗口才会进行滑动一格,整个过程实际上就是对流量进行控制。因为若是发送端一直没有收到确认帧,它的发送窗口就一直圈在那几个帧上面,变相的控制了发送端的一个发送速率,一旦接收方收不下数据不回复确认帧,那么发送端想发送数据也发送不了,因为窗口已经固定在那里了】
- 解决问题2:可靠传输(发送方自动重传)。【发送方若是发送了一个帧之后等待一段时间还没有收到确认帧,此时会进行自动重传】
4.1.4、对于停止-等待协议、滑动窗口协议究竟是哪一层的?
左边两本书将该协议作为是传输层的,而王道书中则是将该协议作为在数据链路层:
在计算机网络发展前期,通信链路质量不是很好,此时链路层就需要担负起可靠传输的职责,因此链路层就会使用停止—等待协议、后退n帧协议、选择重传协议等。
随着技术发展,通信链路的质量越来越好,此时出现差错的可能并不会像之前那么大,此时链路层它就可以暂时抛弃掉可靠传输的这样一个职责,把这个责任交给传输层来实现,而链路层只需要负责一个差错控制即可,这样能够使得我们的数据在链路上传递速度更快,所用的时间,延迟也更小。
总结:我们无需纠结这三个协议是在哪一层,在哪一层最后影响的也只是传输数据的一个对象,比如说这三个协议是传输层的,那么对象就是分组,在链路层传输的时候就是帧。本质都是我们要传输的数据。
脑图时刻
4.2、停止-等待协议
4.2.1、为什么有停止-等待协议以及研究前提
1、为什么要有停止-等待协议?
除了比特出差错,底层信道还会出现丢包问题。
- 丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失。
为了解决丢包问题以及实现流量控制,就需要使用停止-等待协议。
2、 研究停-等协议的前提?
虽然现在常用全双工通信方式,但是为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收收据(接收方)。
由于是在讨论可靠传输的原理,所以并不需要考虑是在哪一个层次上传送的。
"停止-等待"就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。
4.2.2、停止-等待协议的无差错情况&有差错情况
无差错情况:
下图中描述无差错情况下发送端每次发送一个帧之后会进行等待,知道接收方接收到帧之后返回了一个确认帧时,发送方才会发送下一个帧:
- 可以看到有多个零帧,这两个帧并不一样。
注意点:每发送1个数据帧发送端就停止并等待,因此用1bit编号就够。
这种无差错的情况,十分理想,但是实际任务中经常会出现一些差错,也就是丢包问题,在链路层中就是丢失了一些数据帧。
有差错情况
第一种情况:数据帧丢失或检测到帧出错
出现情况场景复现:第一个帧发送方发送到接口端没有问题,此时接收端返回了ACK 0表示0帧的确认帧,此时发送端收到确认帧之后发送下一个帧,此时在传输过程丢失了帧,那么接收端无法收到帧那么也就无法回复确认帧,此时发送端由于收不到确认帧也会不断的在进行等待,这类问题如何进行解决呢?
解决方案:发送端采用超时计时器,发送端发送一个帧的时候超时器就开始计时,若是一个超时时间结束了还没有接收到确认帧就会进行重发。
超时计时器
:每次发送一个帧就启动一个计时器。超时计时器设置的重传时间应当比帧传输的平均RTT更长一些。
- 其中RTT指的是往返传输时延。
注意点:
- 发送一个帧后,发送端必须要保留它的副本。(防止在传输过程中出现帧丢失情况来进行重发。只有在收到对应帧的确认帧之后才能够丢弃,开始下一轮传输)
- 数据帧与确认帧必须编号。(若是接收端连续收到了相同发送序号的数据帧,表明接收方收到了重复的帧,利用这个编号可以解决帧的丢失、重复等问题;还有就是若是接收到了帧,但是检错出问题后,那么此时就会丢弃该帧,不做处理并且也不会返回一个确认帧,此时发送端只能够等待一个重传时间之后来进行重发)
第二情况:ACK丢失
情况描述:接收端接收到发送端发送的帧后,此时返回了一个确认帧,此时若是确认帧在过程中丢失了怎么办?
解决方案:发送端在一个超时时间范围中若是没有收到确认帧,那么此时就会超时重传刚才的帧,接着接收端由于之前已经接收过了,此时会丢弃第二次传来的重复的帧,再重传确认1号帧,也就是说再次进行对一号帧的一个确认,那么发送方就收到1号帧了。
第三种情况:ACK迟到
场景复现:发送方首先发送0号帧,接收端接收到0号帧后返回0号的确认帧(No1),不过因为网络阻塞的原因迟迟没有到达,此时接收端由于超时计时器到时间了就会进行重传0号帧。
接着接收端收到了0号帧,由于上一次已经接收过了,这一次就会丢弃掉该0号帧,重新返回一个0号确认帧(No2),这一次网络并没有阻塞发送端很快收到了这一个0号确认帧,此时开始发送1号帧,再发送完的后,此时收到了之前第一次接收端回复的0号帧(No1)。
对于发送端的处理方式为:不做处理,只是将它简单丢弃。
疑问点:若是No1的0号确认帧再第二次发送的0号确认帧之前到了呢?
解答:那么发送端会直接再接收端0号的确认帧后开始发送1号帧,至于第二次发送的0号确认帧发送端与上面的做法一致,同样也是会进行丢弃。
4.2.3、停止-等待协议性能分析(优缺点)
优点:简单。
缺点:信道利用率太低!
4.2.4、理解停止-等待协议中的信道利用率
接下来来看一下图示理解一下信道利用率:
信道利用率
:指的是发送方在一个发送周期内有效的发送数据,所需要的时间占整个发送周期的比例。
公式如下,可以看到这个发送时延实际在图中信道利用率是比较低的:
实际总结一下就是:发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比例。
简化一下上面公式(结合实际例题给出的数据),实际两者的本质计算都是相同的:
此外还有个与信道利用率相关的计算公式,也就是信道利用率:信道吞吐率 = 信道利用率 * 发送方的发送速率
。
4.2.5、信道利用率的实际例题
题目:
解析:传输率给了4kb/s,那么C = 4kb/s。单项传播时延也给了30ms,那么来回就是30*2 = 60ms,此时我们来设置数据帧长度为L。
就可以列出式子如下:
- 其中2 x 30ms x 4kb/s如何计算?4kb/s = 4000bit/s,又30ms为30/1000 s,对应4000bit/s来换算30ms x 4kb/s = 120bit
接着就是L / (L+240) = 0.8,最终就可以计算出来L = 960bit。
脑图时刻
4.3、后退N帧协议(GBN协议)
4.3.1、停-等协议的弊端(认识流水线技术)
首先看一下停-等协议,可以看到每一次传输帧只有当之前传输的帧收到确认帧之后才能够进行传输,可以看到大量的时间是花费在了等待中:
怎么样才能够让信道利用率更高一些呢?
方案:流水线技术。
可以在发送完一个数据帧之后,再连续发送几个数据帧,如下图是每次连续发送三个帧,此时可以看到信道利用率变得更高了:
对于流水线技术并不是考点,了解即可。
**称为流水线的原因?**每一个数据帧都会接着上一个数据帧往下发送,这种连续发送就像流水线工作一样,此时就叫做流水线技术。
使用流水线的同时带来了一些影响,此时需要做一些改进工作:
1、必须增加序号范围。(每个传输传送当中的数据帧,必须有一个唯一的序号,如上面的每次传输三组帧,它们的序号应该是各不相同,这样接收方才能够返回它们每个人唯一对应的一个帧,若是丢失也好找到底是哪一个帧出现了问题)
2、发送方需要缓存多个分组。(在传输过程中,非常容易出现帧丢失的情况,例如发送的0号帧、1号帧、2号帧,若是连续传输的3个帧丢失了1号、2号,只有0号帧成功发送,那么实际若是没有等待到就需要重传1号、2号帧,那么对于这两个帧应该在之前发送前提前缓存,那么我们就需要比停-等协议多两个缓存数据帧的位置)
在流水线下,也有可能会出现确认帧丢失、迟到等情况,那么为了解决这些差错,此时就有了后退N帧协议
以及选择重传协议
。
4.3.2、后退N帧协议中的滑动窗口
发送方维护一个>1的窗口,接收方则是维护一个=1的窗口,接收方每接收到一个帧之后就会返回一个确认帧,并且此时窗口会移动一格,同时发送方若是接收到了确认帧之后也会移动格子。
- 通过发送窗口,可以来确定帧的四种状态:①发完被确认的。②已经发送但等待确认的。③还能发送的。④还不能发的。
额外特点:为了使得效率更高,接收方不用对于每一个帧都返回一个确认帧,可以进行累计确认,若是发送方将1、2、3号帧全部发送出来,接收方无需逐一确认,而是直接对三号帧确认即可,回复一个ack3,此时发送方接收到确认帧之后就知道三个帧都已经接收了,此时就应该要发送4号帧。
4.3.3、GBN发送方必须响应的三件事
1、上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,那么产生一个帧并将其发送,如果窗口已满,发送方只需要将数据返回给上层,暗示上层窗口已满,上层等一会再发送。
- 实际实现中,发送方是可以将上层的数据接收下来,不过是放在缓存中,等它空闲了或者整个窗口有空的时候可以发送数据的时候再将缓存中的数据帧拿出来,完成一个发送。
2、收到一个ack
GBN协议中,对n号帧的确认可以采用累计确认的方式,标明接收方已经收到了n号帧和它之前的全部帧。
- 例如收到了ack4,那么此时接收端默认4号及之前的帧已经全部收到,之后发送端开始发送5号帧及之后的帧。
3、超时事件
协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。与停-等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,那么发送方会重传所有已发送但未被确认的帧。
- 对于接受端,是按照顺序来进行接受的,并不是说发送端连续发送1、2、3、4号帧时,若是4号帧先到达,接收端就会直接接收,它会首先等待1号帧的到达,若是其他帧优先到达那么此时会进行丢弃该帧,知道等待到1号帧为止。
- **若是这个1号帧在传输过程中丢失了,那么接收端也不接受其他的帧,那么此时怎么办?**在接收端中有一个超时定时器,若是1号帧的确认帧长时间没有接收到,那么此时会进行超时重传,将当前帧以及后面的帧重新传输出去。
4.3.4、GBN协议接收方要做的事情
1、若是正确收到n号帧,并且按照序,那么接收方为n帧发送一个ACK,并将帧中的数据部分交付给上层。
2、若是想要等待的帧一直没有收到,那么若是提前到来的其他帧都会丢弃掉,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个:expectedseqnum
(下一个按序接收的帧序号,也就是一直等待的那个帧)。
4.3.5、运行中的GBN(运行过程)
下面使GBN的运行过程及示例:
首先发送端连续发出了0帧、1帧、2帧、3帧,其中0帧、1帧成功被接收了并返回了相应的确认帧,其中2号帧在传输过程中丢失了,那么当3号帧到达接收端的时候,接收端由于目前的expectedseqnum是2号帧,此时就会丢弃掉3号帧。
由于0帧、1帧的确认帧都被发送端接收了,此时发送端的窗口移动了两格,此时会连续发出4号帧、5号帧,而同样由于接收端目前的expectedseqnum依旧是2号帧,那么此时同样会丢弃掉4号帧、5号帧。
此时发送2帧的超时计时器到时间了还没有收到2帧的确认帧,此时会进行超时重发,并且2帧之后的3帧、4帧、5帧也是会连续的再次发出,之后依次就是等待接收端的接收回复确认帧,循环往复。
4.3.6、提问:滑动窗口长度是否是可以无限的?
- 可学习博客:为什么回退N步(GBN)协议和选择重传(SR)协议的发送窗口有限制
若是采用n个比特对帧编号,那么发送窗口的尺寸WT应满足:1<=WT<=2n -1。若是超过这个范围,那么就会使接收方无法区别是新帧还是旧帧。
我们来举个例子,这里我直接拿一篇博客里的示例图,十分清晰 为什么回退N步(GBN)协议和选择重传(SR)协议的发送窗口有限制:
采用的2个比特对帧编号,那么22 - 1 = 3,窗口最多只能是3,那么为什么不能超过呢?
- 我们看下面这个例子,当窗口为4时,我们发送端直接发送了0123号帧,此时接收方所有的帧都接收到,都返回了相应的确认帧,此时出现了极端情况,四个确认帧在传输过程中都丢失了,由于发送端没有收到确认帧,此时在等待超时计时器结束的时候会进行超时重传,此时同样会再次发送0号帧!!!
- 注意了目前接收方中实际是已经接收到了之前的一组帧并且已经确认帧返回了,这里传过来的0号帧对于接收方来说只可能会当作是新的值,那么就会出现传输有误的问题!(接收方以为确认帧是能够正确的被发送方接收到的)
4.3.7、GBN协议重点总结
1、接收端可以累计确认,偶尔可以捎带确认。
捎带确认
指的是当接收端要传输一些返回数据给发送端时,可以把相应的确认帧带上传输回去。
2、接收方只按顺序接收帧,不按序无情丢弃。
3、确认序列号最大的、按序到达的帧。
4、发送窗口最大为2n - 1,接收窗口大小为1。
4.3.7、习题练习
习题1
题目:
解析:C
使用GBN协议,接收端是进行按序接收的,题目中收到的是0、2、3号帧,少了1号帧就是在进行干扰(绝对是在接收端发送过程中丢失了,或者延时到达),因为接收端不可能会跳着接收确认的,此时接收端实际已经接收了0、1、2、3号帧,此时发送方需要重发的帧为4、5、6、7号帧,那么帧数就是4。
习题2
题目:
解析:C
抓住关键几个:第一个帧,最后一个帧以及第一个帧的确认帧。
首先我们来计算一下第一个帧从发送+传输收到第一个帧的确认帧时间:
- 一个帧的发送时间:(1000 x 8)/ 100Mb/s = 0.08ms
- 往返时间:2x50 = 100ms
- 一个帧的发送时间+往返时间 = 100.08ms
那么对于接收到第一个帧的确认帧也就是100.08ms里可以最大传输多少数据呢?
我们来计算一下整个窗口尺寸所有数据帧发出的时间:(1000 x 1000 x 8) / 100Mb/s = 80ms,此时我们可以这么理解当我们将整个窗口中的数据帧全部发出去以后,此时还没有接收到第一个帧的确认帧,此时还需要等待20ms,之后就是循环往复,此时我们就可以来进行计算最大数的平均数据传输率了。
发送帧到接收第一个帧的时间为100.08ms,发出的数据帧大小为1000x1000x8 = 8 x 106,我们来使用总大小/时间 = 最大平均数据传输率。
即(8 x 106 ) / 100.08ms 约等于 80Mb/s。
4.3.8、GBN协议性能分析
好处:因能连续发送数据帧而提高了信道利用率。
缺陷:在重传时必须把原来的已经正确传送的数据帧重传,使传输效率降低。
- 为了解决整个问题,就有了一个新协议,叫做选择重传协议,会对该缺点进行一个完善。
脑图时刻
4.4、选择重传协议(SR协议)
4.4.1、GBN协议的弊端
在后退N帧协议GBN中,有一个比较好的功能就是接收端可以进行累积确定(例如发送端发出1、2、3帧,那么接收端不需要每一个帧都进行回复,而是直接回复一个3帧即可即可完全1、2、3帧的确定)。
不过此时也带来了批量重传的问题:若是发送端对于某个确认帧迟迟没有收到,此时会将该帧及窗口内的其他帧全部批量重传,这就造成了损失比较大,因为后面的部分帧可能直接已经发送过一次了那么旧浪费了。
解决方案:
1、设置单个确认:逐一对帧进行确认,这样出错一个帧,丢失一个帧就直接把那个出错的帧重传就可以了。
2、同时加大接收窗口,设置接收缓存,缓存乱序到达的帧:这里的指的是之前若是连续发送0、1、2、3帧,那么接收端必须先接收0号帧,其他帧先到达会丢弃,此时在这里若是有其他帧先到达,那么我们先将其放到缓冲区中,等待窗口最左边的帧到达之后统一再交由网络层(接收端)。
4.4.2、选择重传协议中的滑动窗口(SR协议)
发送方滑动窗口的各个状态
对于发送方的滑动窗口相关的不同帧分为以下几个状态:
①发完被确认的。
②已经发送但等待确认的。
③还能发送的:对于这个状态是若是再给个数据,就可以将它塞到五号里面,标上5号帧发送出去。
④还不能发的:还不在滑动窗口范围中的。
- 对于滑动窗口中发送端能够接收确认帧并不是像GBN中一样顺序确认的(由于接收端可以乱序进行提前缓存原因),那么可以看到上图中已经发送但等待确认的是某个已经被确认的左右两边。
接收方滑动窗口的各个状态
对于接收方的滑动窗口相关的不同帧分为以下几个状态:
①希望收到但没收到的。
②等待接收的。
③收到且确认的(缓存):可以看到接收方在选择重传协议中可以乱序提前缓存某个数据帧。
4.4.3、SR发送方必须响应的三件事
1、上层的调用
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
- 实际实现中,发送方是可以将上层的数据接收下来,不过是放在缓存中,等它空闲了或者整个窗口有空的时候可以发送数据的时候再将缓存中的数据帧拿出来,完成一个发送。
2、收到了一个ACK
如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。
- 如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处,整体移动。
- 若是窗口移动了此时在窗口内会有新的未发送帧,此时就发送这些帧。
3、超时事件
每一个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
4.4.4、SR接收方要做的事情
对于窗口内的帧来者不拒,不是顺序的也可以进行接收。
具体接收的细节:SR接收方会确认一个正常接收的帧而不管其是否按序(前提是该帧在窗口中)。失序的帧会直接缓存在窗口中,并返回给发送端一个该帧的确认帧(收到哪个帧就直接返回确认帧),直到所有帧(即序号更小的帧)都被收到为止,这时才可以将一批帧交付给上层,然后向前移动滑动窗口。
若是收到了窗口序号外(小于窗口下届)的帧,就返回一个ACK。其他情况,就忽略该帧。
4.4.5、运行当中的SR过程(涉及到超时情况)
假设发送窗口和接收窗口尺寸都为4。
①发送端依次从最开始发送0、1、2、3帧,其中发送2号帧的时候丢失了,接收端此时接收到了0、1、3帧,并依次进行了确认帧返回。
②发送端首先收到0号帧的确认帧,此时移动一格窗口,并开始发送4号帧。
③发送端再次收到1号帧的确认帧,此时再次移动一格窗口,并开始发送5号帧。
④注意此时由于之前2号帧在发送过程中丢失了,那么接收端没有收到2号帧自然也不会发送2号确认帧给到发送端。此时由于2号帧的计时器已经超时,所以发送端会进行超时重传2号帧(单独这一个帧)。
⑤发送端收到3号帧的确认帧,但是由于2号帧的确认帧还没有收到,此时窗口不会进行移动,并且无帧可发(只有等到2号帧发送了之后才能够继续移动窗口)
4.4.6、滑动窗口长度计算(包含场景情况)
提出疑问:滑动窗口长度可以无限吗?
结论:发送窗口最好等于接收窗口,因为大了会溢出,小了没意义。
计算窗口的公式:WTmax = WRmax = 2(n-1)。
- 这里Tmax指的是发送端的窗口,Rmax指的是接收端的窗口,n指的是表示序号的比特数(若是序号为0、1、2、3,那么就是2位比特能够表示的数)
两个场景:场景1是接收端无法识别接收错误,场景2则是传输正确的
场景1:有一个2比特表示序号的一堆帧,当前的窗口为3,当前场景中会出现错误的将重传的帧作为新的帧接收到了窗口中(错误接收示例)
过程描述:
- 发送端依次发送0、1、2帧,与此同时接收端都能够正确接收到,都返回了相应的帧,但是这三个帧全部丢失了!但是这个不影响接收端的窗口移动三个,可以看到此时最新的接收端窗口中还包含了0、1序号帧,是不是等会会出问题?
- 发送端由于没有收到任何一个确认帧,此时发送端会超时重发0号帧,注意了!接受端此时再次收到了序号0的帧,不过作为接收端由于之前已经接收了0序号,那么对于这一次传过来的帧会错误的把它当作新的帧给保存到当前的窗口缓冲区中。(实际这个帧是重传的帧!!!)
问题描述:错误的将重传的帧作为新的帧接收到了窗口中。
场景2:有一个2比特表示序号的一堆帧,当前的窗口为3,当前的场景中是接收端能够正确的将新的序号为0的帧接收到(正确接收示例)
过程描述:
- 发送端依次发送0、1、2帧,与此同时接收端都能够正确接收到,都返回了相应的帧。
- 发送端接收到了0号帧,此时窗口移动一格,窗口中出现了新的3号帧,此时会将该3号帧发送出去,红色箭头表示在发送过程中丢失了该帧。
- 发送端此时又接收到了1号确认帧,窗口再次移动,此时窗口中又出现了新的0号帧,同样发送端会发送出去0号帧,接收端此时是能够正常的将这个新的0号帧接收到新的窗口对应序列里。
本次过程传输帧是正常的。
4.4.7、SR协议重点总结
1、对数据帧逐一确认,收一个确认一个。(局限再接收端的窗口中)
2、只重传出错帧。(不再像GBN协议一样需要批量重传)
3、接收方有缓存。(若是接收端中窗口里某个失序的帧来了之后,接收端也会容纳它,将它先缓存起来,等到构成了一个正确的帧之后,再将这些连续的帧交付给网络层,同时窗口前移)
4、WTmax = WRmax = 2(n-1)。(最大的接收窗口)
4.4.8、习题练习
题目:
解析:A
本题中数据链路层采用的是选择重传(SR)协议,发送方已经发送了0-3帧,那么就是0、1、2、3号帧,其中1号帧已经确认(此时由于并不是0号帧确认,所以不会移动窗口),那还有3个帧需要确认也就是0、2、3。
0、2号帧依次超时指的是发送方的对于0帧、2帧的超时器都已经超时了,此时就需要重发,而由于3号帧的状态我们本题中并不清楚,也有可能成功发送,就本体而言确定要重传的帧只有0、2号帧,那么就只有两个。
脑图时刻
4.5、介质访问控制(MAC)
4.5.1、传输数据使用的两种链路(点对点、广播式)
点对点链路:两个相邻节点通过一个链路相连,没有第三者。
应用:PPP协议,常用于广域网。
举例说明:如下图电话通话,若是两个人连接通信说明,那么这这样点对点链路时没有第三者介入的
广播式链路:所有主机共享通信介质。
应用:早期的总线以太网、无线局域网、常用于局域网。
- 无线局域网就是我们使用是使用手机移动设备
举例:在一个大屋子里,人们说话都是通过空气这个介质传播的。
典型拓扑结构:总线型、星型(逻辑总线型)
总线型如下图所示:
对于星型为什么说是逻辑总线型呢?
- 同样在星型结构中,若是下面主机A给C发送了一条消息,那么其他主机也都会收到,而其他主机判定是不是自己的消息时会进行比对。
4.5.2、认识介质访问控制
介质访问控制的内容:采用一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。
介质访问控制分为:静态划分信道、动态分配信道。
静态划分信道
:我们这个信道还没有开始通信之前,先把这个信道划分以下,或者说给所有人规定一下如何通信。动态划分信道
:在通信的过程中遇到冲突,遇到冲突时及时的将它控制,解决即可。
- 静态划分信道中的英文单词:FDM:Frequency、TDM:Time、WDM:wave、CDM:Code。
4.5.3、信道划分介质访问控制(静态划分信道)
4.5.3.1、认识多路复用技术
信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域、频域资源合理地分配给网络上的设备。
我们来讲上面主机的各个通路来进行优化下,采用多路复用技术。
多路复用技术
:把多个信号组合在一起物理信道上进行传输,使得多个和计算机或者终端设备共享信道资源,提高信道利用率。
发送端我们的多台主机会各自发送数据到一个复用器中,紧接着复用器会将这些数据合并到一起在一条共享信道上发送出去,到达接收端后,此时会经过分用器,接着将数据进行拆分分别传送到其他各个主机上。
多路复用技术的特点:把一条广播信道,逻辑上分成几条用于两个节点之间通信的互不干扰的子信道,实际就是把广播信道转变为点对点信道。
实际在广播信道当中进行数据传输的时候,亮亮也不会干扰,因为我们会对它们进行一个访问的控制,使它们之间不会出现互相干扰的情况。
静态划分信道的几种方式:
方式一:频分多路复用FDM
下面是频分复用的坐标图,有关于频率和时间的:
每一个频段都会分给一个用户,在任何时间内,每一个用户都占用着一个频段,用户在分配到一定的频带后,在通信过程当中自始至终都占用这个频带。
- 频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资源。
- 这里的带宽与发送速率、传输速率是不一样的,这里面带宽指的是通信过程当中的频率带宽,以Hz为单位的。
传输过程:每一个用户占一个频段,那么就会借着这个频段将自己的数据发送出去,这样就会使所有的用户它们在传输数据的过程中不打架。
举例如下图中每个频率都是不一样的,所以能够在一条共享信道中进行传输:
评价频分多路复用FDM:充分利用传输介质带宽,系统效率较高;由于技术比较成熟,实现也比较容易。
方式二:时分复用TDM
普通时分复用TDM
与FDM区别:每一个主机并不是任意一个时间都占用的这样一个信道,可以看到是交替使用的这个信道,但是频率是没有区分的,所有的频率带宽都是一样的。
时分复用技术
:将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道。
- 一个时分复用TDM帧的时隙就是下图中一个帧里面的A、B、C、D
- 可以看到上面图中A、B、C、D每一个主机都是轮流周期性的占用一个信道。
TDM帧与数据链路层的中的帧并不是相同的,TDM帧是在物理层传送的比特流所划分的帧,标志一个周期。
频分复用与时分复用之间的区别:
- 频分复用:并行。(每一个主机占用一个频段在同一时间发送)
- 时分复用:并发。(将时间划分为一段段等长的时分复用帧)
实际计算题:若是整个线路的传输速率是8000bit/s,那么按照上面四台主机,则各自只能够轮流发送2000bit,当四台主机每个人发了2000比特之后,此时四个就是8000比特,那么就能够凑成对应的一个TDM帧。
统计时分复用STDM(优化,动态分配时隙)
由于时分多路复用TDM其中每一个主机A都需要等待三个时间片(TDM帧中的时隙)才能够再次使用,所以它等待的时间非常久,此时就造成了我们信道利用率比较低。
改进的时分复用:统计时分复用STDM
。
特点:能够明显的提高信道的利用率。
由于每个主机发送的时间、频率各不相同,并且部分时间主机并不会发送数据会间歇来进行发送,对于这种情况比较常用的就是统计时分,此时就会使用到一个集中器:
- 集中器作用:可以将图中四个低速用户连接起来,然后把它们数据集中起来,之后再通过告诉线路发到目标计算机去。
详细过程:每一个STDM帧的时隙数小于连接在集中器上的用户数。各用户有了数据就随时发往集中器的输入缓存,然后集中器按照顺序依次扫描输入缓存,把缓存中的输入数据放入到STDM帧中,一个STDM帧满了就发出。
说明:可以看到此时用户并不是轮流进行交替的,而是统一将各个用户主机发出的数据集中到一起以后再组成的STDM帧。并且与之前的TDM不同的是此时一个帧并不是有四个时隙,是有两个时隙,这里时隙的数据量是可以进行规定设置的。
- 同样这个帧并不是链路层的帧,整个帧是物理层传送的比特流所划分的帧。
注意:STDM帧不是固定分配时隙,而是按需动态分配时隙。
实际计算题:若是整个线路的传输速率是8000bit/s,那么按照上面规则的STDM统计时分多路,那么此时四台主机每个人各自最高都是能够达到8000比特,因为最终是通过一个集中器来组成一个STDM帧的。
方式三:波分多路复用WDM
波分多路复用:波分多路复用就是光的频分多路复用,在一根光纤中传输多种不同的波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
- 与频分复用技术非常相似。
由于光的各个频带不同,此时我们就可以将光的各种频带放到一块啊,扭到一个线路上来完成传输,整个传输过程高频带和低频带是不会互相干扰的,所以说这种信道复用的技术叫做波分多路复用技术。
方式四:码分多路复用CDM
类似于波分多路复用,在公用信道上,先把所有的整个数据扭在一起,然后到C端整个接收端整个合并的数据进行分离。
难点:怎么在这个C收到的数据当中分理出a和b以及所有其他站点发送过来的数据?
CDM中最常用的一个方式就i是码分多址(CDMA),它是码分复用的一种方式,同时CDMA也是一个现在通用于无线局域网还有蜂窝网络的一个协议。
具体操作过程:将一个比特分为多个码片/芯片(chip),每一个站点被指定一个唯一的m位的芯片序列,发送1时发送芯片序列(通常把0写成-1)。
- 其中1比特的每个微时序,0就是-1,1就是+1。
在C端应该要拿到一个合并的数据,其需要在一个混杂的数据当中分离出不同站点,所以就需要先做一个操作,也就是说对于AB或其他站点的芯片序列进行一个设置。
设置过程如下:
1、多个站点同时发送数据的时候,要求各个站点芯片序列相互正交,规格化内积为0。只有为0的时候表示正交此时才可以发送出去。
若是发送比特零,那么我们就把其中的数据0换成1、1换成0,最终在向量还是1为+1,0为-1形式,此时就可以进行发送到公共信道。
2、此时两个向量到了公共信道,进行线性相加。
3、此时到了C之后,如何进行分离两个端呢?
- 合并的数据和源站规格化内积。
- 其中B得到的结果为-1,那么表示发送过来的数据为0。
CD与CS如何区分?
只要是动态分配信道,里面都是使用了CS包含了CS,但是CD就不是CS,CD是静态划分信道。
巧记:可以将CS跟动态枪战游戏联想一下,那么CS就是动态分配的。
4.5.4、动态分配信道
4.5.4.1、随机访问介质访问控制
认识随机访问介质访问控制
介质访问控制是在广播信道当中所应用的一种访问控制,其是在广播信道中所应用的一种访问控制,在广播信道当中,若是各个节点之间要进行通信的化,那么只能同一时间只有一个人在发送信息,但是如果有两个节点在同时发送信息,那么就会导致信道上发生冲突,那么此次通信就是失败的。
针对于这种现象,我们需要对访问它们共享的介质进行访问控制,主要分为静态划分与动态划分,这一章节就是围绕动态划分的,这种分配方式并不是在用户通信时候固定分配给用户的,在这种动态分配信道中用户可以占用的带宽就更大一些。
随机访问介质访问控制特点:所有用户可随机发送信息,发送信息时占用全部带宽。
缺陷:由于这种随机性,就会导致一个不协调,因为若是所有用户可以随机发送信息,那么若是几个用户不相互协调一下,就直接发送消息,此时就会导致出现冲突问题。此时就需要我们使用这些协议来解决这种不协调产生的冲突问题。
方式一:ALOHA协议
认识ALOHA协议
分为:纯ALOHA协议、时隙ALOHA协议。
ALOHA协议起源:一个学者去到夏威夷时,研究各个岛屿的通信问题,之后想出了一套办法解决了通信问题,由于当地居民交流都会打招呼都会说ALOHA,那么久将其命名为ALOHA协议。
①纯ALOHA协议
纯ALOHA协议思想:不监听信道,不按时间槽发送,随机重发,想发就发。
下图时一个纯ALOHA协议实现的过程:
1、首先站1花费T0时间发送数据帧,由于在这个时间内没有其他站发送数据,此时发送成功。
2、站2同样也花费T0时间发送数据帧,但是由于后半段在发送过程中站N-1也发送出数据,此时发生了冲突(注意这个冲突发送端并不会立刻发现)。
- T0指的是一个数据帧,也就是它的发送时间,实际也包含了传输时间,传播时间,也就是一个帧从刚开始发送到发送成功为止。
**对于两个站点对于是否发生冲突并不清楚,那么什么时候能够发现检测这个冲突呢?**需要等待这个站点把它的数据帧发送完毕之后,这个接收方就会收到一个发生了冲突的错误数据帧,因此接收方会返回一个NAK否定确认帧或者干脆不返回一个确认帧。
- 对于不返回时,发送方会等待经过了一个超时时间后,也就能够发现了,此时就会重发。
冲突如何解决?
- 超时后等一随机时间后再重传。
②时隙ALOHA协议
由于纯ALOHA协议发送数据太随意了,数据帧发送的成功率十分低,如何形容数据帧发送的发送成功率?
- 使用吞吐量。
时隙ALOHA协议思想
:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入到网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。
- 概括来说:控制想发就发的随意性。
过程:可以看到不同的站在帧到达的时候并没有直接发送出去,而是等待了一个<T0时间后等待时间片再发送出去,之后若是在一个时隙内两个或两个以上帧同时到达时,那么在下一个时隙就会产生碰撞,碰撞后的策略与纯ALOHA的情况时相似的。
ALOHA协议的对比与总结
1、纯ALOHA比时隙ALOHA吞吐量更低,效率更低。
- 纯ALOHA由于随机任意发,这种发送就会导致碰撞概率很大,自然就效率更低,吞吐量更低。
2、纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能发。
方式二:CSMA协议(增加检测信道)
认识CSMA协议
先听后发,但是对于后来发送的过程中有没有发生冲突不能够保证。
CS
:载波侦听/监听,每一个站在发送数据之前要检测以下总线上是否有其他计算机在发送数据。
- 若是几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明了产生了碰撞,即发生了冲突。
MA
:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
协议思想:发送帧之前,会先监听信道。
监听结果包含两种,根据监听结果相应的动作:
- 信道空闲:此时会发送完整帧。
- 信道忙:推迟发送。
对于上面不同状态进行操作,如推迟多久立即发送这样一个完整帧,有三种不同的协议:
坚持CSMA
。非坚持CSMA
。p-坚持CSMA
。
①1-坚持CSMA
1-坚持CSMA
:坚持指的是对于监听信道忙之后的坚持。
思想:
1、如果一个主机要发送信息,那么它先监听信道。
2、空闲则直接传输,不必等待。
3、忙则一直监听,直到空闲马上传输。(坚持体现在这里,若是信道忙会一直监听)
4、如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程。
优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。
- 媒体利用率指的是我们对于这样一个信道的利用程度,若是信道空闲,我就能够发送数据,此时对于信道的利用程度就很高。
缺点:假如有两个或者两个以上的站点有数据要发送,冲突就不可避免。
②非坚持CSM
非坚持CSMA
:非坚持指的是对于监听信道忙之后就不继续监听。
非坚持CSMA思想:
1、如果有一个主机要发送消息,那么它先监听信道。
2、空闲则直接传输,不必等待。
3、忙则等待一个随机时间后再监听。(非坚持提现再这里,若是信道忙会等待一个随机时间后监听)
优点:采用随机的重发延迟时间可以减少冲突的可能性。
缺点:可能存在大家都在延迟等待时间,使得媒体仍然可能处于空闲状态,媒体使用率降低。
③p-坚持CSMA
p-坚持CSMA
:指的是对监听信道空闲的处理。(与之前不同的是,之前是监听到信道忙处理)
不同于之前的两种CSMA协议,它是应用于持续信道的。
- 若是P=1,那么于1坚持协议相同。
- 若是P=0,那么就是非坚持协议。
思想:
1、发送之前,首先监听信道。
2、若是空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输。
3、若是信道为忙,则持续监听到信道空闲再以p概率发送。
4、若是冲突则等到下一个时间槽开始再监听并重复以上步骤。
优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案。
- 非坚持算法:若是信道空闲的时候会直接发送,忙的时候会等待一个随机时间在监听。【空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输。】
- 1-坚持算法:若是信道忙,那么就会一直监听,直到信道空闲,就会直接将数据发送出去。【若是信道为忙,则持续监听到信道空闲再以p概率发送】
注意:在此之前的三种算法,并没有一个检测冲突的一个过程,此时并不知道在发送数据的时候信道上是否是冲突的,还是可以继续把自己想要发送的数据发送出去,此时就会导致发送的数据是一种浪费。
- 有没有什么方法可以减少资源浪费?CSMA/CD。
三种CSMA对比总结
使用一个现实生活例子举例,依次对应坚持CSMA、非坚持CSMA以及p-坚持CSMA:
方式三:CSMA/CD协议(增加发送数据时检测)
认识CSMA/CD协议(CS、MA、CD)
载波监听多点接入/碰撞检测CSMA/CD(carrier sense multiple access with collision detection)
CS
:载波监听/监听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。
- 注意:在这里与之前有一点不一样,在这里发送数据时也会检测是否有计算机在发送数据。
- **发送数据时怎么监听?**实际就是检测这个信道上电压的一个摆动幅值,若是这个幅值十分大,那么就知道整个路上有这个信道很多来在发送数据,此时发送肯定会出现冲突。
- **如何发现当前信道是空闲的还是在忙碌?**在自己站点为止检测是否有信号进入,若是有,那么就说明有人在发送,此时发送就会产生冲突。
MA
:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
- 应用:总线型网络。
CD
:碰撞检测(冲突检测),“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时,其他站是否也在发送数据。
- 适配器只要想成是自己的原站点即可。
- 应用:半双工网络。确定好了谁发送谁接收,在发送数据的时候只能够有一个方向在发送数据。
为什么先听后发还会出现冲突?
电磁波在总线上是以有限速率传播的,若是有一个电磁波的形式电磁波非常快,尽管时108,但是若是总线很长的话,还是需要经过一段的时间的,所以整个电磁波的传播时间对于载波监听是有影响的,如果说整个电磁波还没有到我这里,那么我在这肯定是检测不到信号的。
传播时延对于载波监听的影响?具体通信时间(引出2T
)
若是此时A给B发送数据,不过由于传输时延的影响,此时B检测到当前信号是空闲,此时也会开始发送数据:
- 其中单程端到端传播时延(单位读tao)指的是:信号或者电磁波从a端到b端的传播时延。
由于主机A与主机B都发送数据,那么此时就会发生冲突碰撞:
A与B之间通信的具体时间细节:
首先A主机发出数据,当数据到达下面的位置:
此时B主机也进行了检测,判断到当前的信道是空闲的(由于传输时延暂时并没有到达B主机,所以检测出空闲),此时也开始发送数据,那么势必就会出现碰撞情况,此时两个信号就会叠加在一起进而继续向目标主机传送:
下面我们将发生碰撞的冲突数据使用黑色线来表示如下图,此时B首先检测出发生碰撞,停发,接着主机A过了一段时间也检测发现到发生了碰撞,同样进行停发:
- 为什么错误的数据到达接收端会检测出来发生碰撞呢?
- 对于数据帧会有一个差错控制,根据收到的数据帧来检测是否出现错误,那么这里就可以检测到。对于自然信号叠加一定会发生出问题。那么校验方法能够检测出这个帧是出错的,就能够判断发生了碰撞及冲突。
此时我们来仔细看下各个时间段如检测出来碰撞的时间(主机B的):
- 当B检测到发生碰撞时,时间就是单程端到端的传播时延:
τ
。 - 对于B发送信号 ~ B检测到发生碰撞的这段时间,我们设为:
δ
,那么主机B就是在τ - δ
的时间发出信号的。 - 真正发生碰撞的时间为:
τ - δ/2
,为什么δ/2
就可以呢?我们可以看到对于主机B发出的那条线与主机A发出信号发生碰撞到达的B这两条线是对称的,所以我们也可以直接设置为δ/2
。
接着我们来看下主机A中检测到发生碰撞的时间:
- 主机B发出信号的时间为:
τ - δ
,单程端到端传播时延为τ
。两者合并起来就是A检测到碰撞的时间:2τ - δ
。
思考最迟多久才能够直到自己发送的数据还没有和别人碰撞?
- 对于A检测到发生碰撞是
2τ - δ
,当δ
趋近于0的时候,那么最迟的时间就是2τ
。 - 若是问多久能够知道自己发送的数据有没有发生碰撞,此时就可以给出范围:(0,
2τ
)
对于这个最迟时间2τ
有多个名词可以表示:总线的端到端往返传播时延
、争用期/冲突窗口/碰撞窗口
。
启示:只要经过2τ
时间还没有检测到碰撞,就能肯定这次发送不会发生碰撞。
如何确认碰撞后的重传时机?
提出一个假设:是否能够在检测到冲突后直接重发呢?
此时下面有一个比较特殊的情况,对于主机a和b两个现在要发送数据,此时两个人刚好都是同时发送数据,因为都是同时检测到信道上是空闲的,又当两个信号在传输过程中碰撞的时间点为0.5τ
,那么经过0.5τ
后对于的主机a与主机b又同时都检测到冲突,那么重新再次发送信号,那么就会出现下面这种恶性循环的结果:
那么怎么解决呢?
- 采用截断二进制指数规避算法。
算法实现过程:
1、确定基本退避(推迟)时间为争用期2τ
。
2、定义参数k,它等于重传次数,k是不超过10的,即k = min{重传次数,10};
- 当重传次数不超过10时,k等于重传次数。
- 当重传次数超过10时,k就不再增大而一直等于10。
3、从离散的整数集合**[0, 1, … ,2k-1]**中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间,即2rτ
。
- 每次范围都是和重传次数k相关,随着k越大,范围也会越大。
4、当重传达16次仍然不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错。
下面是一个实际k从1开始的案例,模拟多次检测到冲突情况:
结论:若连续多次发生冲突,就表明可能有较多的站参与征用信达送,使用此算法可使重传需要推迟的平均时间随重传次数的增大而增大,因而可以减小发生碰撞的概率 ,有利于整个系统的稳定。
练习题(计算碰撞范围)
题目:
解析:1023。
题目中有一个坑点,就是在11次碰撞之后,k=11,根据之前的算法规则,k在超过10次时,k不再增大,只会等于10,接着我们使用k=10来进行代入计算,离散的整数集合为:[0, 1, 2, …, 211-1] ,此时最后的结果为1023。
最小帧长的问题
为什么要引入最小帧长这个概念?
- 在CSMA/CD中对于在传输中也可以进行检测出冲突,若是有冲突可以直接停止传输。
- 案例:A站发了一个很短的帧,但发生了碰撞,不过在帧发送完毕时才检测到发生碰撞,此时没法停止发送,因为已经发完了。
为了能够使CSMA/CS可以及时的叫停与控制好局面,此时就需要定义一个最小帧长,也就是最短的帧长。
目的:希望在这个检测到碰撞的时候,我们帧还没有发送结束。
在此之前对于能够检测到冲突异常的时间为2τ
,那么我们这个帧的传输时延就应该至少为2τ
。
结论:帧的传输时延至少要两倍于信号在总线中的传播时延。
即得到公式:最小帧长 = 总线传播时延 x 数据传输速率 x 2
。(也就是2τ
x 数据传输速率)
以太网规定:最短帧长为64B,若是长度小于64B的都是由于冲突而异常终止的无效帧。
- 为了达到这个最短帧长,对于一个比较短的帧,会对其进行一个填充知道64B位置,才能够将它放到链路上面进行一个传输。
脑图时刻
方式四:CSMA/CA协议(碰撞避免)
认识CSMA/CA与CD的区别
CA协议数据CD一样都是下属于CSMA协议的。
相同点:会先监听信道,再发送数据。
不同点:CD是对于碰撞的检测,CA则是对于碰撞的避免。
问题:为什么有了很全面的CD协议还需要有一个CA协议呢?
回答:主要原因是所应用的场景不一样,CA是使用于无线局域网当中的也就是无线网络,而CD协议它只能够应用于总线式以太网,它应用的是一个有线网络的情况。对于不同的两种网络,不同的传输介质,就应该使用不同的协议来进行通信上的规定,此时就有了CSMA/CA协议。
使用CSMA/CD协议应用于无线局域网中会出现的两大问题:
- 问题1:无法做到360°,全面检测碰撞。
- 之所以在无线局域网中使用CA,而不是使用CD是因为如果我们在这个无线网络当中使用CD是很困难的,CD是对于碰撞的一个检测,而无线局域网的范围、空间是非常大的,要检测冲突的方向是十分多的,也就是360°都需要进行检测冲突,那么这种在硬件上是非常难实现的,所以使用CD是没有办法检测到无线局域网当中来自四面八方的碰撞。
- 问题2:隐蔽站。
- 当A和C都检测不到信号,认为信道空闲时,同时向终端B发送数据帧,就会导致冲突。在这里假如a要给b发送数据c,相对于a来说C就是一个隐蔽站,隐蔽就在于C不知道a与b发送数据,所以会导致之后出现冲突问题。
- 希望解决隐蔽站的问题:希望让C知道a和b要发送数据了,就不要去干扰a和b,也就是让接收端它附近的一些节点都清楚目前a要和b进行通信,其他按节点不要进行干扰了。
CSMA/CA协议工作原理
CSMA/CA协议工作原理:
1、发送数据钱,先检测信道是否空闲。
2、空闲则发出RTS(request to send),RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待。
- 对于RTS是可发可不发的,但是为了解决隐蔽站的问题,就会考虑要发送一个RTS。
3、接收端收到RTS后,将响应CTS(clear to send)。
- 当接收端返回一个响应CTS后,那么相当于两个站点之间简历了连接,若是之后又有其他的站点发来RTS连接,这里接收端都是会进行拒收的,那么其他的站点一直收不到CTS,此时就会一直没法发送数据,此时就解决了隐蔽站的问题。
4、发送端收到CTS后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)。
5、接收端收到数·据帧后,将用CRC来检验数据是否正确,正确则响应ACK帧。
6、发送方收到ACK后就可以进入下一个数据帧的发送,若是没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)
总结三个机制手段实现碰撞避免:
1、预约信道。(通过预约信道,可以告知其他站点自己要传送多久数据,大概率避免一些冲突)
2、ACK帧。(在发送一个数据帧之后,接收端一定要返回一个确认,只有收到确认发送端才能够再发送一个新数据,如果不能返回确认,那么发送端就会重发)
3、RTS/CTS帧(可选)。(在进行数据传输之后,首先让发送方与接收方进行握手,发送方会给接收方发送一个RTS,当接收端收到并返回CTS帧时就表示建立号好连接,此时其他主机无法连接上来)
CSMA/CD与CSMA/CA的相同点但与不同点
相同点:
CSMA/CD与CSMA/CA机制都是从属于CSMA的思路,核心都是先听再说。也就是说两个在接入信道之前都需要进行监听,只有当发现信道空闲后,才能够进行接入。
不同点:
1、传输介质不同:CSMA/CD用于总线式以太网【有线】,而CSMA/CA用于无线局域网【无线】/
2、载波检测方式不同:因传输介质不同,CSMA/CD与CSMA/CA的检测方式也会不同。
- CSMA/CD是通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压会随着发生变化。
- CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式。
3、CSMA/CD检测冲突,CSMA/CA避免冲突,二者出现冲突后都会进行有上限的重传。
4.5.4.2、轮询访问介质访问控制
4.5.4.2.1、三种协议回顾
信道划分介质访问呢控制(MAC multiple Access Control)协议
:
- 基于多路复用技术划分资源。
- 网络负载重:共享信道效率高且公平。
- 会将资源进行划分,若是所有的主机都在忙碌使用,说明共享信道已经被充分利用了,效率很高,其公平就在于当时分配资源的时候是平均分配的。
- 网络负载轻:共享信道效率低。
- 工作当中处于忙碌状态的主机或者说是节点,就很少因此有一大堆节点都是处于空闲的状态,那么信道的大部分资源就被浪费了,此时空共享信道的效率就更低一些。
随机MAC协议
:
- 用户可以根据自己的意愿来随机发送信息,发送可独占信道带宽。
- 网络负载重:产生冲突开销。
- 在随机访问麦克协议当中,基本都是一个广播式的链路,广播式的消息,在广播式信道重若是网络负载重,那么说明网络重有很多主机都在发送消息,那么很多主机都同时发送消息就会产生冲突,会让我们发送的消息失效,这就是产生的冲突开销。
- 网络负载轻:共享信道效率高,单个结点可利用信道全部带宽。
- 单个结点可以利用信道的全部带宽,由于网络负载轻的时候可能只有一太主机在发送数据,就不会产生冲突,这个信道也完全占用了带宽来发送自己的消息。
轮询访问MAC协议/轮流访问MAC协议
:将上面两个协议优点融合在一起。
- 既要不产生冲突,又要发送时占全部带宽。
问:哪个协议会发生冲突?只有随机访问MAC协议会发生冲突。
对于轮询访问MAC协议主要包含两个协议:轮询协议、令牌传递协议。
方式一:轮询协议
核心思想:主结点轮流"邀请"从属结点发送数据。
过程描述:主机A会依次询问B、C、D、E主机,首先会问B是否需要发送数据(发送一个很短的数据帧,用于询问作用),若是需要则此时进行连接进行数据传输;传完之后主机A又会去询问C是否要进行连接,若是不要则继续询问D,当询问E主机也结束时,此时会再次重来询问主机B。
特点:结合了前面两种协议的优点,首先就是不会产生冲突问题,接着就是每一次只允许一台主机发送数据,那么那一台主机就能够占用全部带宽。
问题:
1、轮询开销:若是被询问的主机数量什么庞大,此时一个个通过轮询询问所带来的开销也是十分大的。
2、等待延迟:对于靠后的主机被询问的时间会又一段等待延迟。
3、单点故障:若是上图的主机A宕机了,那么其他的从属结点都活不了,没有人问它们,它们数据都发不出去。
- 解决方案:可以多建立一些备用的主节点来随时替换掉坏掉的主节点。
方式二:令牌传递协议
拓扑结构:逻辑上是环形的,实际物理实现是星型的。
控制信道的使用:确保同一时刻只有一个结点独占信道。
- TCU:就是在传递数据真实的一个传递的接口,一个用于转发的接口,可以传递所有经过的帧,而且为接入站发送和接收数据提供一个接口,主要就是一个转发的作用。
令牌环传递过程
令牌环传递过程:若是此时没有主机要发送数据,此时令牌会在各个主机之间进行一个传递,知道传递到有一个主机要发送数据
此时主机D要发送数据了,那么其就会持有这一个令牌,做一下两个步骤:
- 将令牌的一个标志位进行修改。(实际就是将令牌从闲的状态修改为一个忙碌的状态)
- 在令牌的控制帧后面加上数据帧,接着就会将这个数据帧发送给目标主机。
主机D是要发送给主机A的,此时数据帧发送过程中就会经过主机C、主机B,当来到主机D的时候,此时主机D会复制这样一份数据,然后再发给主机A。
此时主机A会检查一下这个数据帧是否出错,若是出错就需要进行重传,若是没有出错,此时就会将这个数据帧回收,然后不再对这个帧进行转发,接着将令牌的忙状态修改为闲状态后将令牌传递出去,之后的过程都是重复的,经过哪个主机时若是这个主机要想要使用该令牌,此时就会也会执行上面主机D的两个步骤再次发送出去。
令牌环传输协议的优点及对此疑问
令牌传递协议结合信道划分MAC协议的优点,不会发生碰撞不会发生冲突,主要因为是每一次只有一个主机掌握令牌,只有掌握令牌的才能够发送数据,其他人都不能够发送数据,此时就不会产生碰撞。
疑问:若是主机有很多数据,那么会一直占用着这个令牌不断地发送数据吗?
- 并不会,会有一个限定地时间,若是超过这个时间,其他数据就需要等待一波,只有等到转到源主机的时候,再把其他主机地数据发送出去,每一个结点都可以在一定地时间内获得令牌持有时间,从而获得发送数据的权力,并不是无限制的持有令牌的。
令牌协议产生的问题:
1、令牌开销。(部分书说有时候令牌没了就需要再产生出一个令牌;还有书说再源站点传送完数据之后会产生一个心得令牌,这也是属于令牌的一个开销)
2、等待开销:若是主机d在发送数据,此时主机a也要发,那么此时就需要等待令牌环的限定时间结束之后才能到自己,这也是有一个延迟时间。
3、单点故障:若是其中有一台主机宕机了,那么整个链路就断了。
- 解决方案:需要使用一些替代机解决即可。
应用场景:采用令牌传送方式的网络常用于负载较重、通信量较大的网络中。
MAC协议总结
五、局域网
5.1、局域网基本概念和体系结构
5.1.1、认识局域网
局域网(Local Area Network)
:简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。
下面是局域网的几个特点:
- 覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。
- 使用专门铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高(10Mb/s ~ 10Gb/s)。
- 通信延迟时间短,误码率低,可靠性较高。
- 各站为平等关系,共享传输信道。
- 多采用分布式控制和广播式通信,能够进行广播和组播。(广播与组播:局域网使用的时广播信道,都会采用广播式通信来共享这个信道。)
决定局域网的主要要素为:网络拓扑
、传输介质
与介质访问控制方法
。以上特性是由这三个要素来决定的。
5.1.2、局域网拓扑结构
星型拓扑:中心节点是控制中心,任意两个节点间的通信最多只需要两步。
- 优点:传输速度快,网络构型简单,建网容易、便于控制和管理。
- 缺点:网络可靠性低,网络共享能力差,有单点故障问题。(这里共享能力差是针对总线型拓扑,因为总线型拓扑是共享一条主干线)
- 若是星型拓扑结构中的集线器出现故障,那么所有的主机都无法进行通信。
总线型拓扑:网络可靠性高、网络节点间响应速度快、共享资源能力强、设备投入量少、成本低、安装使用方便,当某个工作站节点出现故障时,对整个网络系统影响小。
环形拓扑:系统中通信设备和线路比较节省。
- 缺点:有单点故障问题 ;由于环路时封闭的,所以不便于扩充,系统响应延时长,信息传输效率相对较低。
树型拓扑:易于扩展,易于隔离故障,也容易有单点故障。
评价:总线型拓扑是比较好的,是现在局域网当中常用的一种拓扑结构,以太网就是一种逻辑上的总线型拓扑结构。
5.1.3、局域网传输介质
5.1.4、局域网介质访问控制方法
局域网介质访问控制方法:
1、CSMA/CD:常用于总线局域网,也用于树型网络。
- 先听后说,边听边说。
2、令牌总线:常用于总线局域网,也用于树型网络。
为什么叫做令牌总线?
- 结合了令牌和总线的特点。将总线型或树型网络中的各个工作站按照一定顺序如接口地址大小排列形成一个逻辑环,只有令牌持有者才能控制总线,才有发送信息的权力。
3、令牌环:用于环形局域网,如令牌环网。物理结构是星型结构。
5.1.5、局域网的分类
- 令牌环网说"明日黄花",原因是由于令牌环网中若是一个节点发生故障,那么这个环就无法进行通信了。
- FDDI所使用的传输介质是光纤。
- ATM网中53字节的单元长度是可变的。
- 无线局域网中通信的介质是空气或者说是电磁波。
- 无线局域网与wifi的区别:WIFI是无线局域网的一种应用,无线局域网可以覆盖的范围比WIFI更广,可能是几千米。
5.1.6、IEEE802标准
基本介绍如下:
IEEE802标准现有标准如下,主要需要重点记住的就是下面红色线的:
- 以太网所符合的标准就是IEEE802.3。
- IEEE802.5就是令牌环网。
- IEEE802.8就是FDDI协议,常使用的传输介质是光纤。
- 巧计:光纤贵表示很有钱,有钱就是发,8,那么就是IEEE802.8。
- IEEE802.11:无线局域网。
IEEE802与以太网是紧密结合在一起的。
5.1.7、MAC子层和LLC子层:
IEEE802标准所描述的局域网参考模型值对应OSI参考模型的数据链路层与物理层。
实际IEEE802是将数据链路层划分为逻辑链路层LLC
和介质访问控制MAC子层
。
LLC子层
:负责识别网络层协议,对它们进行封装,LLC报头告诉数据链路层一旦帧被接收到时,应当对数据包做什么处理。
- 为网络层提供了服务:无确认无连接、面向连接、带确认无连接、高速传送。
MAC子层
:主要功能包含数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制。
- MAC子层的存在屏蔽了不同物理链路种类的差异性。
小总结:LLC子层与网络层挨着就是会为网络层提供服务。MAC子层与物理层挨着,那么就是与物理层相关的。
- 与传输媒体、物理层传输媒体有关的内容都会放在这个MAC子层中。
脑图时刻
5.2、以太网
5.2.1、认识以太网
以太网(Ethernet)
指的是由Xerox公司创建并由Xeror、Intel和DEC公司联合开发的基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准。
- 基带总线局域网规范:基带就是一个规范,总线指的是逻辑上是总线型的拓扑结构,局域网规范可以是一种局域网技术。
以太网使用CSMA/CD(载波监听多路访问及冲突检测)
技术。
- 若是看到采用CSMA/CD,那么我们就知道这是以太网网络。
以太网在局域网各种技术中占有统治性低位:
1、造价低廉(以太网卡不到100块)。
2、是应用最广泛的局域网技术。
3、比令牌环网、ATM便宜,简单。
- 便宜与简单主要体现在组网建网扩网还有修改一些故障,修改一些节点故障的时候会更加简单,更加便宜。
4、满足网络速率要求:10Mb/s ~ 10Gb/s。
- 传统以太网10M比特每秒,百兆以太网,千兆以太网,再到高速以太网10Mb/s。
5.2.2、以太网的两个标准
以太网的两个标准:
DIX Ethernet V2
:第一个局域网产品(以太网)规约。IEEE802.3
:IEEE 802委员会802.3工作组制定的第一个IEEE的以太网标准。
两个标准的区别就是在帧格式中的两个字节有一点不同,对于满足DIX Ethernet V2
或者IEEE802.3
规则的都可以叫做以太网。
又可将以太网叫做是802.3局域网。
5.2.3、以太网提供的无连接、不可靠的服务
以太网提供的无连接、不可靠的服务:
无连接
:发送方与接收方无"握手过程"。
无可靠
:不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,差错正由高层负责。
- 高层负责主要指的是传输层或者说运输层。
总结:以太网就是尽最大努力交付。以太网只实现无差错接收,不实现可靠传输。
- 以太网若是接收到数据时会进行一些差错检测,若是检测到出错就直接丢弃或者拒收,这并不是可靠传输。
可靠传输
指的是只要你发来的帧,我都要接收,如果这个帧丢失了,或者说帧重复了、失序了,那么这些可靠传输问题是由传输层来实现的。
5.2.4、以太网提供的无连接、不可靠的服务
以太网传输介质与拓扑结构的发展:
传输介质发展:传统以太网使用的是粗同轴电缆,后面采用的是一种便宜的细的同轴电缆,再到后面则是使用造假很低廉的双绞线以及集线器这样子组合的应用。
物理拓扑结构发展: 传统以太网和目前以太网在逻辑结构上都是总线型的结构,之后出现了集线器能够更加方便扩网与检查故障,此时物理上面会进行一个改良,由原来的总线型变成了星型。
- 使用集线器的以太网在逻辑上仍然是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议。
以太网拓扑:逻辑上总线型,物理上星型。
5.2.5、10Base-T以太网
10Base-T
:是传送基带信号的双绞线以太网,T表示的是采用双绞线,现在10Base-T采用的是无屏蔽双绞线(UTP),传输速率为10Mb/s。
- Base指 的是传送的基带信号,也就是数字信号。
- T则是twisted双绞线。
- 10表示的传输速率,为10Mb/s。
特点如下:
1、物理上采用星型拓扑,逻辑上总线型,每段双绞线最长为100m。
2、采用曼彻斯特编码。
- 一个比特对应两个码源,或者说在一个比特时间范围中,有两次信号的变化。
3、采用CSMA/CD介质访问控制。(会发生一些冲突和碰撞)
5.2.6、适配器和MAC地址
适配器:计算机与外界有线局域网的连接。
下面是网络接口板:
网络接口板NIC(network interface card)
:以前是需要单独装上显卡的,现在会直接集成在主板上,适配器上装有处理器和存储器(包括RAM和ROM)。
- ROM中有计算机硬件地址MAC地址。这个MAC地址是世界上唯一的一个标识码,
在局域网中,硬件地址又称为物理地址或者MAC地址。【实际上就是标识符】
MAC地址
:每个适配器有一个全球唯一的48位二进制地址,前24位代表厂家(IEEE规定),后24位厂家自己指定。
- 一个MAC地址常用6个二进制数表示,如02-60-8c-e4-b1-21。
5.2.7、以太网MAC帧
5.2.7.1、认识以太网MAC帧的组成
此时有一个网络层的IP数据报,到了链路层时,就需要对数据包进行一个封装。
最常用的MAC帧是以太网V2(DIX Ethernet V2
)的格式(第一个标准下的格式):
IP层—>数据链路层阶段
:可以看到在IP层传来的IP数据报到了MAC层是就属于数据,此时在数据首部加上了目的地址、源地址、类型以及尾部加了一个FCS。【首尾都加上控制字段】物理层阶段
:为了发送方与接收方都能够保持发送接收的同步,此时就需要把这个MAC帧之前加上一个前导码,这个前导码有8B,前面7B也就是前同步码,都是10、10、10组成,最后两位是11,表示发送方高速接收方现在可以开始准备接收我的MAC帧的一部分了。
接下来看一下以太网MAC帧的组成部分:
源地址
:发送方的地址。目的地址
:指的是目标地址。包含有三种情况:①单播地址,指的是一个专有的MAC地址,如发送给固定的一个主机,这个主机的MAC地址。②广播地址,也就是全1的,那么会发送给所有的主机,所有的主机若是看到这一个地址,此时就会全部收下来。③多播地址。类型
:用于指明上面的网络层使用的什么协议,以便能够将收到的MAC帧的数据上交给上一层的这个协议。数据
:这个长度是可变的,下限是46字节,上限是1500字节。- 1500B:就是事先规定好的1500B,也就是链路层的最大数据传送单元MTU。
- 46B:就是在学习CSMA/CD协议时有提到过的最小帧长为64B,为什么这里是46呢?实际还是64B,18B就是目的地址、源地址、类型、FCS占用的字节数总和,64-18 = 46B。所以说这里的数据范围为46-1500。
FCS
:指的是CRC循环冗余检验的四字节的帧检验序列FCS。
5.2.7.2、疑问:为什么数据链路层加头加尾,为什么没有在MAC帧后面没有一个帧结束定位符呢?
疑问:为什么数据链路层加头加尾,为什么没有在MAC帧后面没有一个帧结束定位符呢?
- 如下图圈出来的就是帧开始定界符,后面?就是疑问为为什么这里没有一个帧结束定位符?
原因:以太网使用的是曼彻斯特编码,其特点就是在每一个比特内都会有两个码元,在发送数据的时候是可以感受到这种电压的变化。
电压变化如下:
但是若是不发送数据,电压就是没有变化了的。当发送方把最后一个以太网帧发送完毕之后就不会再发送其他的码元了,因此这个发送方网络适配器的接口上电压也不会再发生变化。正是因为这个没有发生变化的电压,此时可以很清楚的确定以太网帧结束的一个为止,再这个结束为止往前四个字节就可以确定我们的数据结束位置。
- 并且每一个发送帧之间,都有一个最小间隔,我们每一个帧并不是紧挨着发送的,发完一个帧,就会停一会,接着再去发送一个新的帧,此时就会有空白的时间,此时检测不到电压变化就说明此时发送方是进行停止发送了,这样在这个停止发送之前的四个字节就可以确定数据帧的结尾。
以太网V2(DIX Ethernet V2
)与IEEE802.3的区别:
1、第三个字段是长度/类型。
2、当长度/类型字段值小于0x0600时,数据字段必须装入LLC子层。
5.2.8、高速以太网(3种)
速率>=100Mb/s的以太网称为高速以太网。
1、100BASE-T以太网
介绍:在双绞线上传送100Mb/s基带信号的星型拓扑以太网,仍然使用IEEE802.3的CSMA/CD协议
。
功能:支持全双工和半双工,在全双工方式下工作而无冲突。
- 全双工在这里中心节点就变成了交换机,这种全双工指的是每一台主机都可以发送的同时接收。其可以进行隔离冲突域,每一台交换机的端口就是一个冲突域,此时这一个主机在一个冲突与当中就不会发生冲突了。在全双工的情况下是不用使用CSMA/CD协议的。
2、吉比特以太网
介绍:在光纤或双绞线上传送1Gb/s信号。
功能:支持全双工和半双工,可在全双工方式下工作而无冲突。
3、10吉比特
介绍:10吉比特以太网在光纤上传送10Gb/s信号。
功能:只支持全双工,无争用问题。
传输介质:光纤。
脑图时刻
5.3、无线局域网
5.3.1、认识IEEE802.11
IEEE802.11
是无线局域网通用的标准,它是由IEEE所定义的无线网络通信的标准。
满足IEEE802.11b、IEEE802.11g就属于WIFI。
5.3.2、802.11的MAC帧头格式(各个字段细节)
802.11的MAC帧头格式:
MAC帧头格式如下图所示,其中四个地址字段如下所示分别有注释:
举个例子:若是A主机与B主机进行通信,那么之间的流程是什么?
A主机(这里当作手机),此时距离A最近的是AP1,接着距离B最近的是AP2。
- AP指的是无线接入点,基站。
当A主机想要给B通过流量发送信息时,此时A首先会发送给AP1,接着AP1发送到AP2基站,接着再由AP2基站再发给B手机,此时B就能够收到消息了。
我们就上面这个主机A给主机B发送消息的过程,我们来看下实际对应的MAC帧中字段都是什么:
- 接收端、发送端指明的是指定基站的MAC地址。
- 目的地址、源地址指明的是主机A、主机B的MAC地址。
额外补充:当我们进入到一个新的地方时,我们实际会连接到当地最近的基站,此时我们的手机号就会在该基站中进行注册然后更新响应的数据库,例如当我们到了北京时,短消息就会收到一个北京欢迎你,也就是在这个新基站中新注册然后发给你的。
5.3.3、IEEE802.1标准类型分类(4个)
IEEE802.1标准中将帧的类型分为以下四个类:
上面所写的帧地址实际是下面中的WDS,对于所有的字段都有。
- 对于值为0的字段,那么就表示不会使用到该字段。
To AP
指的是发往AP的帧,此时Address1接收端就是AP的MAC地址,使用BSSID来表示。From AP
指的是来自AP基站发来的帧:Address2发送端就是AP的MAC地址,使用BSSID来表示。
实际考试:若是主机要给基站发送一个帧,那么我们就想To AP相应的三个地址分别是什么。
5.3.4、无线局域网的分类
1、有固定基础设施的无线局域网。
2、无固定基础设施无线局域网的自组织网络。
5.3.4.1、有固定基础设施的无线局域网(BSS、ESS,服务及标识)
有固定基础设施的无线局域网:
基本服务集BSS
:指的是AP(基站)所覆盖的这一个范围并且包括主机就构成了一个基本服务集BSS。
注意:若是主机与AP中间隔了一堵墙,那么信号就会被削弱,无线AP对于信号的转发过程十分容易受到阻碍。
扩展服务集ESS
:几个服务集结合到一起之后(如有线、无线)就形成了扩展的服务集。
不仅仅有一个基本服务器,此时还有第二个基本服务器,此时是否可以通信?
- 可以,此时就需要借助一个分配系统,这个分配系统就是相当于把我们这个无线和有线结合在一起,加入说A要给B进行通信,那么中间的距离非常非常远(跨省),此时主机A就会先将数据发送到基站AP1,接着这个基站就会接入到这样的有线的线缆上面去,接入到信缆上,此时就到了一个分配系统完成一个有线的通信。
- 实现了有线+无线的结合。
漫游
:指的是一个基站范围内的主机可以和另一个基站范围内的主机进行通信。
举生活中的一个小例子:我们电脑上打开wifi或者手机打开wifi可以看到的就是叫做服务及标识符
。
服务及标识符
:分别对应就是一个基站,每一个对应的都是一个无线的接入点。
5.3.4.2、无固定基础设施无线局域网的自组织网络
无固定基础设施无线局域网的自组织网络:
- 无固定基础设施:指的是没有任何的转发器、集线器、路由器、基站都没有,只有一些主机自己组成一个网络,每一个主机自己本身可以充当主机以及路由器的功能,即可以发送数据,也可以帮忙转发数据,各个节点之间的低位都是相互平等的。
5.4、VLAN基本概念与基本原理
5.4.1、为什么有VLAN存在呢?(局域网局限性的特点)
为什么有VLAN存在呢?
- 传统局域网有一定的局域性。
局限性的特点如下:
1、缺乏流量隔离:即使把组流量局域化到一个单一交换机中,广播流量仍然会跨越整个机构网络(ARP、RIP、DHCP协议)。
- 因为在一个广播域中,若是一个主机发送一个广播帧,那么广播域里面所有的主机都会收到这个广播帧,那么在这种协议的应用下,就会遇到一个泛洪的现象!
2、管理用户不便:如果一个主机在不同组间移动,必须改变物理布线,连接到新的交换机上。
- 若是原本一个组中想要移动另外一个工作组,那么一定要改变物理的布线,可以使用物理或者软件上改,希望的是改动越少越好。
3、路由器成本较高:局域网内能够使用很多路由器,花销较大。
- 如果有很多的这个广播帧在链路上传播,就希望进行隔离,能够诞生一些广播域,而广播域隔离就是需要有路由器来进行支持,若是一个很大的局域网中,有非常多的组,那么希望能够将它们隔离开来,此时就需要使用多个路由器来进行解决。
5.4.2、VLAN基本概念
虚拟局域网VLAN(Virtual Local Area Network)
是一种将局域网内的设备划分成与物理位置无关的逻辑组技术,这些逻辑组有某些共同的需求,每个VLAN都是一个单独的广播域/不同的子网。
对交换机进行了VLAN划分之后,它连接的几个主机就可以处在不同的VLAN当中了,每一个VLAN又是一个广播域。
举例:在下面组成的两个广播域VLAN1、VLAN2中,若是A主机发送一个广播帧此时就只有A能够收到。VLAN2中的C、D主机不会受到。
效果:原本物理上看起来四个主机都在一个广播域,经过VLAN的划分,此时这一个局域网中就可以划分出这样两个广播域。
5.4.3、VLAN实现大局域网的划分
实际我们不仅仅能够在一个交换机所连接的这些主机上进行划分,也可以在一个这样的大的局域网当中进行划分,如下图我们将黑色主机划分为VLAN2,将橙色的主机划分为VLAN1:
效果:此时就可以使用这样形式来完全打破物理上的一些限制和概念,在逻辑上构成一些广播域。
5.4.4、VLAN实现原理
5.4.4.1、一个交换机内部的VLAN实现(转发表、VLAN表,案例情景)
上图WLAN1中的A能否直接发送给VLAN2中的C?
- 结论:不能,因为是两个不同的子网。
- 原因:目前是简单的对它进行一个虚拟局域网的划分,两个VLAN实质上在逻辑上可以理解为两个子网,不同的子网只有借助路由器或者三层具有路由选择和转发的交换机才可以。
上图中VLAN1中的主机A为什么不能够发送给VLAN2中的主机C?
首先交换机中有一个交换机的转发表,主要是MAC地址与端口的映射,:
接着由于使用了VLAN虚拟局域网,此时就会附加一个VLAN表,其中是VLAN局域网与端口的映射:
情景1:VLAN1中的主机A发送给VLAN1中的主机B。
根据VLAN表确定自己主机A的端口属于哪个VLAN,由于是属于VLAN1,那么此时就只会给VLAN1广播域中的主机发送,所以就只能够给主机B发,而不能够给VLAN2中的主机发。
情景2:VLAN1中的主机A发送给VLAN2中的主机C。(发送失败)
由于使用了VLAN进行划分子网,此时VLAN1与VLAN2是处于两个网段,实际主机A在发送的时候会首先去查对应的VLAN表,自己是属于VLAN1的,接着查看了主机C的则是VLAN2,由于只能够广播自己所处的网段,所以无法发送。
对于上面VLAN表是基于VLAN ID与端口的表此时则称为是基于接口的VLAN技术
:
基于MAC地址的交换机的VLAN表
:在这个表中将原本的端口替换为相应主机的MAC地址
实际比较常用的是基于端口的VLAN技术。
5.4.4.2、交换机与交换机之间的实现
两个交换机内部实现原理
重点:对于一个主机和另外一个虚拟局域网(例如VLAN1与VLAN2是两个不同的网段)的主机,它们只有在三层交换机或者路由器的条件下才能够进行通信。
可以看到通过使用VLAN来将两组交换机进行连接,此时分为VLAN1与VLAN2两组:
举例:主机A发送给主机E。
1、此时主机A会线准备好一个帧,这个帧就是在链路层中的普通以太网帧,此时到了交换机时,就会知道这个a主机的帧是从VLAN1当中过来的,因此就会在这个帧上附加一个字段(标签),tag = 1表示的是从主机1号端口发过来的,是属于VLAN1的 。
2、此时就会经过链路发送给交换机2。
- 为什么在链路当中没有将标签去掉,是因为在这个窗口中,叫做一个trunk(称之为主干线的端口,在交换机与交换机之间连接的端口),对于这一个trunk是不需要去掉这个tag标签的。
3、当发送到交换机2时,会收到这个数据帧,其是属于交换机2的VLAN1中的,那么就会查找VLAN表来确定VLAN1中的主机,那么结合一些其他的MAC地址字段来决定发送给E还是F。
核心:发送过程中需要贴标签才能够表示这个主机属于哪个网络,当发送到目的地之后也就知道应该发给哪个虚拟局域网了。
VLAN实现:IEEE802.1Q帧(交换机与交换机之间传输)
贴标签的过程就是对数据帧进行一个改变,让其插入一个四字节的VLAN,如下图所示:
四个字节解读:
- ①VLAN标记的前两个字节表明是IEEE802.1Q帧。
- ②接下来4位没有用。
- ③后面的12位则是VLAN标识符VID(用来唯一表示该以太网帧是属于哪个VLAN),若是VLAN1那么就是数字1。
- VID的取值范围为0-4095,但是0和4095都不用来表示VLAN,因此用于表示VLAN的有效VID取值范围是1-4094。
注意:IEEE802.1Q帧是由交换机来处理的,而不是由用户主机来处理的。(主机与交换机之间只交换普通的以太网帧)。
5.4.5、实战练习:识别不同VLAN局域网之间是否能够进行通信?
问题1:A和E能否实现访问?
解答:根据图示我们能够看到交换机与交换机是进行连接的,下面是主机A发送到主机E之间的过程。
首先主机A创建出一个普通的以太网帧,当发送到交换机时,此时交换机会打上一个tag标记,标记为1(VLAN1的意思),接着经过交换机1的trunk口发送到交换机2。
此时交换机2根据tag标记中对应的VLAN1接着对应VLAN表来找相应的主机,确实有E,此时发送成功!
问题2:A和D、H能否实现访问?
解答:
(1)A和D不能够实现访问,主要原因为:虽然是连接着一个交换机,但是此时是通过VLAN分为了两个无线局域网,由于两个VLAN之间并没有交换机以及路由器,所以在VLAN表中发现在VLAN1里并没有主机D所以无法实现访问。
(2)A和H不能够实现访问,主要原因为:同样会经过问题1的流程,此时以太网帧带着标记来到了交换机2,此时交换机2读出了这个是VLAN1发来的以太网帧,此时在交换机2中的VLAN表里的VLAN1里并没有找到H,此时不能够实现访问。
核心要点:对于不同网段之间是否有路由器以及三层交换机,若是没有,无法跨不同网段访问。
5.4.6、选择题练习
题目:
解析:是通过软件的形式来实现逻辑工作组的划分与管理,也就是创建的是VLAN表。
六、广域网
6.1、广域网概念
广域网(WAN,Wide Area Network)
:通常能够跨越很大的物理范围,所覆盖的范围从几十公里到几千公里,它能够连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。
技术使用:广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网。它将分布在不同地区的局域网或计算机系统互联起来,达到资源共享的目的。
实际应用:使用的Internet就是广域网,是世界上范围内最大的广域网。
广域网中有很多的节点,叫做节点交换机
(如下图),这个交换机是链路层的设备,是交换机但是和路由器的功能很像,都是用来转发分组的。
交换机与路由器区别:前者是在单个网络中的转发分组,路由器则是在多个网络之间转发分组。
在广域网中有交换机、路由器、集线器,下面是与局域网所处的层、技术、强调的点区别:
- 与局域网所处层的区别:广域网所覆盖的这个网络习题结构层次从物理层,链路层一直到网络层,而局域网只覆盖物理层与数据链路层。
- 技术区别:局域网是采用多点接入技术,一个逻辑上总线型的多点接入技术;广域网则是点对点,一个发送端、一个接收端通过一条链路相连的这样一种相互连接的全双工或半双工通信模式。
- 强调的点不同:局域网强调的是数据传输;广域网强调的则是资源共享。
广域网最常用的协议:PPP协议、HDLC协议。
6.2、PPP协议
6.2.1、PPP协议的特点
点对点协议PPP(Point-to-Point Protocol)
:是目前使用最广泛的数据链路层协议,用户使用拨号电话接入因特网时一般都使用PPP协议。
限制:只支持全双工链路。
6.2.2、PPP协议应满足的要求
PPP协议应满足的要求:
1、简单:对于链路层的帧,无需纠错、无需序号、无需流量控制。
- 因特网体系结构最复杂的部分放到TCP中,IP协议也比较复杂,会比TCP简单,此时IP协议提供的是一个不可靠的数据报服务,数据链路层没有必要在IP蹭之前完成可靠传输,无需实现一个可靠传输。
2、封装成帧:在帧头帧尾加上帧的定界符。
3、透明传输:与帧定界符一样比特组合的数据应该如何处理;异步线路用字节填充,同步线路用比特填充。
- 透明传输指的是:无论在数据部分传输怎么样的一个比特流,都能够完整的传输过去,即使这个数据部分有帧的定界符,也当看不见。
- 异步线路用字节填充指的是:在传输当中逐个字节或者逐个字符来发送的。同步也是如此。
4、多种网络层协议:封装的IP数据报可以采用多种协议。
- 链路层也会对网络层的数据报来进行封装,此时封装的PPP协议,不要求你在这网络层使用了什么协议,比较有包容性,封装IP数据报可以采用多种协议IP协议、IPX协议都可以。
5、多种类型链路:串行/并行,同步/异步,电/光…
6、差错检测:若是检测到错误直接丢弃,因为PPP协议并不需要实现可靠的传输。
- 采用的是CRC循环冗余,通过在ppp协议的帧当中添加一个FCS的字段,实现了一个差错的检测。
7、检测连接状态:链路是否正常工作。
8、最大传输单元:数据部分最大长度MTU,最大不超过1500字节。
9、网络层地址协商:知道通信双方的网络层地址。
10、数据压缩:在发送数据的时候对数据进行压缩。
6.2.3、PPP协议无需满足的要求
PPP协议无需满足的要求:
1、无需进行纠错。
2、无需进行流量控制。
3、无需编号。
4、不支持多点线路,只需要定义或者只满足点对点之间的一个连接过程就可以了。
6.2.4、PPP协议的三个组成部分(实现功能)
PPP协议的三个组成部分(实现功能):
1、一个将IP数据报封装到串行链路(同步串行/异步串行)的方法。
2、链路控制协议LCP
:建立并维护数据链路连接,主要是进行身份验证。
- 例如拨号上网,这个连接体现的就是一个链路的连接,也就是LCP协议没有满足好。
3、网络控制协议NCP
:PPP可以支持多种网络层协议,每个不同的网络层协议都要一个相应的NCP来配置,为网络层协议建立和配置逻辑连接。
注意:基于LCP协议的,因为之后建立好连接之后才能够实现上网的功能,此时需要将网络层的数据报来进行一个处理,封装给链路层的过程。
LCP协议
就像是在建立一种物理连接,NCP协议
就像是建立一层逻辑连接。
6.2.5、PPP协议如何工作(PPP协议的状态图)
首先【设备之间无链路】,此时还没有连上网,首先点开宽带输入账号密码(举一个例子),此时就建立好了一个物理连接【物理链路】,此时LCP链路出场,会把这个物理链路构造成一个LCP链路【LCP链路】,接着经过NPC的配置协商,形成了一个NCP链路,此时才能够正式的访问网络。
6.2.6、PPP协议帧格式
以字节为单位,
帧定界符
:首尾都有标志字段。
插入转义字符
:若是在数据部分过程中遇到了与帧定界符一样的标志字段,我们就需要再对应的字段之前加上这个这个转义字符。
A、C控制字段
:设计之初并没有赋予什么意义,主要是想便于后续的完善A应该是地址,C就是控制,不过到目前为止这两个字段还没有完善,也就是并没有使用到。
协议
:用来标识右边的信息部分是什么类型。
FCS
:实现差错检测,两个字节的帧检验序列。
6.3、HDLC协议
6.3.1、认识HDLC协议
HDLC协议并不属TCP/IP协议族所制定的,而是属于OSI所制定的协议。
高级数据链路层控制(High-Level Data Link Control或简称HDLC)
:是一个同步网上传输数据、面相比特的数据链路层协议,它是由国际标准化组织(ISO)根据IBM公司的SDLC(SynchronousData Control)协议扩展开发而成的。
实现方式:数据报文可透明传输,用于实现透明传输的"0比特插入法"易于硬件实现。
- 透明传输的方法:0比特插入法。
- PPP协议中包含同步传输、异步传输,其中同步传输在PPP协议中也是采用的和HDLC一样的0比特插入法,遇到5个0就插入1,在接收端只需要将连续5个0后面的1删掉即可。
- HDLC协议与PPP协议区别:PPP协议与其不同的一点是在时间透明传输上,还有就是字节填充,若是数据中碰到有与帧定界符的字符,此时就会在数据内容部分插入一个转义字符。
通信方式:全双工通信。
优点:所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重复,传输可靠性高。:
6.3.2、HDLC的站
1、主站:主要功能是发送命令(包括数据信息)帧、接收响应帧,并负责对整个链路的控制系统的初启、流程的控制、差错控制、差错检测或恢复等。
2、从站:主要功能是接收由主站发来的命令帧,向主站发送响应帧,并且配合主站参与差错恢复等链路控制。
3、复合站:主要功能是既能发送,又能接收命令帧和响应帧,并且负责整个链路的控制。
根据站来对应的三种数据操作方式:
1、正常响应方式
:从站要发送消息,需要经过主站的同意,主站命令它可以发送数据了,从站才可以发送数据。
2、异步平衡方式
:每一个复合站都可以对别的站进行数据传输。
3、异步响应方式
:从站不需要经过主站的同意,就可以进行一个数据的传输。
6.3.3、HDLC的帧格式
与PPP协议的帧格式类似,如下图:
标志字段
:都是在首尾加了一个标识符字段,标志字段二进制都是一样的,01111110。零比特传输
:指的是在透明传输区间若是有相同的比特流形式时,按照5110规则来进行零比特传输,如果连续的五个连续1比特检测到,那么发送端会自动在第五个连续1比特之后插入一个零比特(0比特),以示区分与控制字符相同的字节模式。地址位A
:①若是使用的是正常响应方式、异步响应方式,填充的是从站地址。②若是采用异步平衡方式,填充的就是应答站的,对方的地址。控制字段C
:绝对了HDLC的类型,与PPP帧的协议字段是非常类似,这个控制字段主要看前两位,规则如下(掌握程度就是要知道这三个帧,合起来巧记就是无监信):- 若是第1位为0(信息帧(I)),用来传输数据信息,或者使用捎带技术对数据进行确认。
- 若是前两位是10(监督帧(S)),用来流量控制和差错控制,执行对信息帧的确认、请求重发和请求暂停发送等功能。
- 若是前两位是11(无编号帧(U)),用于提供对链路的建立、拆除等多种控制功能。
6.3.4、PPP协议&HDLC协议的相同点与不同点
相同点:
1、HDLC、PPP只支持全双工链路。
2、都可以实现透明传输。
- PPP协议可实现
零比特填充
、字节填充
的这种比特填充方法。 - HDLC协议只是能实现一个零比特的填充法。(遇到5个1尾部填充0)
3、都可以实现差错检测,但不纠正差错。
- 主要是靠借位的FCS帧检验字段来完成的。
不同点如下:
不同点细节说明:
- PPP协议是面向字节的那么就是整数个字节(8个比特的整数倍);HDLC协议每个帧格式都是以每一个比特为单位的,发送的时候会是一连串的比特位,这个可以是任意位的。
- 2B协议字段:PPP的就是协议字段,HDLC中的控制字段与这个协议字段类似,都是规定信息部分、帧是一个什么样类型。
- 是否有无序号和确认机制:PPP是没有的;HDLC中是有的(此时就可以说HDLC是一种比较可靠的,而PPP协议是不可靠的)
- **为什么PPP协议是不可靠的?**原因是比较浪费,因为实际生活应用当中,主要靠TCP协议来实现一个差错控制、流量控制等功能,对于网络层和数据链路层基本能实现的是不可靠的,尽最大努力交付的一个传输,原因就是人们对于网路的速率要求十分高,若是还要在物理层或者数据链路层完成差错检测和纠正,会耗费很大的时间。所以大部分的可靠传输都交给了传输层。
- 是否可靠:根据有无序号和确认机制,PPP是不可靠的,而HDLC是可靠的。(不过现实中还是使用的是PPP,原因就是可靠传输交由传输层实现,物理层数据链路层不实现,尽可能尽最大力完成传输)
脑图时刻
七、链路层设备
7.1、物理层扩展以太网
扩展原因:一开始,多台主机连接在集线器上,但是其主机与集线器之间的距离不能超过100米,一旦超过100米,失帧就十分严重,为了能够使距离比较远的主机进行通信,就需要在物理层次上对以太网进行扩展。:
扩展方式一:光纤
方式一:采用光纤的方式来扩宽或者扩展开以太网的范围,使得两台主机进行通信距离可以变得更远。
下图中在主机与集线器之间使用了光纤,与此同时我们也可以在集线器上来增加连接一些光纤用于扩大网络范围的作用。
对于光纤之间进行光电转换则使用的是光纤调制、解调器。
扩展方式二:主干集线器
方式二: 利用集线器将许多集线器组合起来
通过集线器来将来将连接多台主机的集线器组合起来,每个集线器所构成的一个区域叫做是冲突域。
- 冲突域指的是在这个物理层设备,所连的主机之内,若是进行通信,同一时间是只能有一台主机在发送信息的,如果有两台主机发送信息,那么就会发生冲突或者碰撞。
如下图,我们首先使用一台集线器来构建出一个冲突域,接着将多个集线器再连接到一个主干集线器上,此时就可以使第一个冲突域的计算机可以和其他两个冲突域的计算机进行连接,这种方式也就是扩展以太网的方式:
采用这样的方式有两个好处:
- 好处1:可以实现跨冲突域跨域的通信,那么一台主机就可以和很远的主机进行通信。
- 好处2:扩大了以太网覆盖的地理范围,原来可能是一个冲突域中只有四台主机,此时现在一个冲突域中有12台主机。
缺点:通信效率变低了,原来的一个冲突域内,有四台主机可能发生的冲突概率比较小,而此时在主干集线器中那么多主机共享一个通信信道,那么此时发生冲突的概率会更加高,效率更低。
有什么方式可以来减少冲突并且可以扩大以太网的范围?
- 有,在链路层对以太网进行一个扩展,此时就使用两个设备,一个是网桥,另一个是交换机。
7.2、链路层扩展以太网
7.2.1、网桥
7.2.1.1、认识网桥与原理
网桥可以算是交换机的前身,在实际应用当中通常采用的是交换机,而不是网桥。
网桥
:根据MAC帧的目的地址对帧进行转发和过滤,当网桥收到一个帧时,并不向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定该帧转发到哪一个接口,或者是直接将它丢弃(即过滤)。
原理:对于集线器若是发送一台主机发送数据,此时会从所有的端口转发出去,而在网桥中则是会考虑是否需要从这个口进行转发,应该从哪里转发,若是不能转发就进行丢弃。
网桥的端口通常是两个,也有四个或者三个的情况,一般来说都是比较少的。网桥的两端就是一个网段,在一个网段中若是使用一个集线器那么也是属于在一个网段中的。
网段
:一般指一个计算机网络中使用同一物理层设备(传输介质、中继器、集线器)能够直接通讯的那一部分。
7.2.1.2、网桥的优点
网桥的优点:
优点1、过滤通信量,增大吞吐量。
- 这个网桥它是现在工作在数据链路层的一个设备,可以将各个冲突域分割开,会有过滤通信量以及分隔冲突域的功能,可以看到不同网段上的通信,不会进行彼此之间的干扰的,例如A与B通信的时候,C和D是也是可以进行通信的,E与F也是。
- 若是一个物理层设备连接着多个冲突域,如集线器,那么此时一个冲突域中的主机在通信时,其他冲突域中的主机无法进行通信。
使用不同物理设备的带宽也不同:
- 在使用网桥时,若是每一个网段的带宽是10Mb/s,那么此时三个网段合起来最大的吞吐量就是30Mb/s。
- 在使用集线器的时候,若是每个网段的带宽是10Mb/s,那么由于是使用物理层设备连接的,那么次整个碰撞域的最大吞吐量就是10Mb/s。
优点2:扩大了物理传输范围。
- 举例:例如上图中最左边的冲突域里的A可以和十分遥远的E进行通信。
优点3:提高了可靠性。
- 若是某个冲突域中的主机所连的线缆发生了故障,那么对于其他的两个冲突域主机是没有影响的。
优点4:可互连不同物理层、不同MAC子层以及不同速率的以太网。
7.2.1.3、第一类网桥:透明网桥(包含自学习过程,三个案例情况)
透明网桥
:"透明"指的是以太网上的站点并不知道所发送的帧经过哪几个网桥,是一种即插即用的设备,这种设备插上就可以进行工作。
- 如何工作?是采用一种自学习的算法。
网桥转发表:转发表并不是一直不变的,它会在几分钟可能进行更新一次,这种更新就会将之前所有的记录全部删除,之后通过自我学习来完善新的一个转发表。
自学习的过程:
首先当我们连接网桥到网线当中时,每个网桥的转发表都是为空的,左右两边分别是1、2端口:
情况1:主机A向主机B发送信号
当主机A在网段上给B发送信号,此时左右两边主机G、B都会收到信号,此时实际B就已经收到了。
此时这个数据还会传到网桥的左接口1,此时网桥会根据当前的帧来查找哪个端口来进行转发,由于转发表中并没有主机A的地址,此时就会在转发表中增加一条A的记录,由于转发表里并没有目的主机B的信息,此时就会从2端口转发出去。
从2端口转发出去后,对应C、D网段的主机也会收到消息,由于并不是B,此时会都会丢弃,直到走到了另一个网桥1端口位置,同样该网桥也发现并没有A的地址,此时同样会存储这样的一条A地址记录到转发表中,由于转发中并没有B主机,此时就会从端口2转发出去,直到转发到新的网段中也没有B的主机。
情况2:主机F向主机C发送数据
主机F在当前网段中向主机C发送数据帧,此时由于该网段并没有主机C所有没有任何主机接收,此时数据帧来到了网桥的2端口,网桥首先查看转发中是否有F主机,由于没有此时添加了一条F记录,由于并没有C主机,所以该数据帧从端口1转发了出去。
此时C主机在端口1转发出来的网段中成功接收。
与此同时由于在一个网段,此时会将这个数据帧传送到左边网桥1的2端口中,同样由于网桥1中的转发表里并没有F的地址记录,此时会将F地址记录保存到转发表当中,由于并没有找到F地址的记录此时还是会将数据帧从网桥1中的1端口转发出去。
情况3:B要给A发送数据帧
主机B直接在网段上向主机A发送数据帧,此时由于A在网段上会直接接收到该数据帧。
与此同时这个数据帧会来到网桥1的1端口,首先查看在转发表中是否有B主机的记录,没有此时则直接记录到转发表中,由于网桥的转发表里有对应A的地址记录,此时网桥知道了A主机在就是在网桥的坐标,那么会丢弃掉这个数据帧。
7.2.1.4、第二类网桥:源路由网桥(原理类似第一类)
源路由网桥
:在发送帧时,把详细的最佳路由信息(路由最少/时间最短)放在帧的首部中。
方法:源站以广播方式向预通信的目的站发送一个发现帧。
示例:如下图中迷宫类似于我们的实际复杂的网络,有一个入口、出口。源路由网桥的工作原理就是源站以广播的方式放到链路上来进行一个传播,这个链路十分复杂,可能会有多条路径走到终点,下面就有两种方案。
实际现实中有很多方案可以让我们的发现帧从源站到目的站,此时目的站会返回一个响应帧或者发现帧来进行原理返回,此时通过返回来的响应帧或者发送帧就会告诉起点,此时有多少种路由选择的方案。
在这些路由选择的方案中会有一个路由最少或者时间最少的,主要取决于我们想要的,确定了一条最优的路径之后会作为最佳路由信息来放到帧的首部,之后所要发送只要目的站与该站相同的,那么都会采用这种方案发送。
7.2.2、以太网交换机(多接口网桥)
7.2.2.1、认识以太网交换机
由于原本的网桥只有两个端口,若是要扩展这个以太网就需要很多网桥,那么就会造成很浪费,随着技术发展,网桥的接口变得越来越多,还可以连一些集线器HUB以及一些主机。
此时这样的一个多端口的网桥就变为了现在以太网交换机。通常都会有十几个端口,每个端口都可以连接集线器。
- 若是网络十分复杂交换机上连接的主机太多,那么实际上就需要考虑可以先让主机连接集线器,接着使用交换机来将集线器连接起来。
- 若是主机比较少,也可以直接连接到交换机上。
7.2.2.2、以太网交换机的优点
以太网交换机的优点:独占传输媒体带宽
优点好在哪里呢?
- 原先我们使用集线器这个物理层设备来连接多台主机的时候构建出的冲突域,实际每台主机是平分集线器的带宽的,例如集线器为10Mb/s,那么有四台主机,此时每台主机就都有2.5Mb/s的带宽。
- 若是使用了以太网交换机来连接多个主机或者多个集线器,那么若是以太网交换机带宽为10Mb/s,那么此时每个集线器(主机)独占10Mb/s的带宽。
7.2.2.3、以太网交换机的两种交换方式(直通式、存储转发式)
包含两种:直通式交换机、存储转发式交换机以及两者混合使用交换机。
①直通式交换机:查完目的地址(6B)之后就立即转发。
- 优点:延迟小。
- 缺点:可靠性低,无法支持具有不同速率的端口交换(若是两边速率差别很多就会出现问题)。
②存储转发式交换机:将帧放入到高速缓冲,并检查是否正确,正确则转发,错误则丢弃。
- 优点:可靠性高,可以支持具有不同速率的端口交换。
- 缺点:延迟大。
在实际应用当中,应用的则是存储转发式交换机。
7.2.2.4、交换机的转发机制(两个示例)
实际与网桥的自学习能力几乎一致。
下面是一个交换机的示例图,一个交换机可能连着多台主机,一个交换机中维护者一张转发表:
示例1:主机A发送给主机B数据帧。
主机A发送一个数据真到交换机中,交换机首先看是否在路由表中有发送方主机A的记录,若是没有此时就会增加上这一条A地址的记录及接口1,接着在路由表中并没有查询到主机B,此时交换机中的所有端口都会转发出去这个数据帧。
由于3、4端口连接的C、D主机并不是目的主机,所以最终会在端口2中的B主机中收到数据帧消息。
示例2:主机B发送给主机A
主机B发送一个数据帧给到交换机,此时交换机首先判断路由表中是否有主机B的记录没有就进行记录,接着在路由表中查询是否有A主机的地址对应的端口方向,查询到有,此时交换机会直接转发该数据从端口1中出去,此时3、4端口就不会进行转发。
说明:每一个表项都设置着一个生命周期,每当超过这个生命周期时,这个表项就会被交换机删除。:
- 删除主要目的:有时候会有一些新的主机会连接到交换机上,所以需要转发表永远保持一个最新的状态。
7.3、冲突域与广播域
7.3.1、认识冲突域与广播域
冲突域
:在同一个冲突域中每一个节点都能够收到所有被发送的帧。同一时间内只有一台设备发送信息。
广播域
:网路中能够接收到任一设备发出的广播帧的所有设备的集合。如果一个站点发出了一个广播信号,那么所有能够接收到这个信号的设备范围称为一个广播域。
对于不同层的设备对于冲突域与广播域的是否隔离如下图所示:
- 链路层设备中如交换机每一个端口就是一个冲突域。
7.3.2、例题:求广播域、冲突域的个数
根据图片来识别广播域、冲突域的个数:
如何看广播域的个数?
- 若是有路由器,那么就可以将广播域隔离;若是没有路由器,那么就只有一个广播域。
如何看冲突域的个数?
- 一个集线器可以构成一个冲突域,这里对应连着交换机的端口。
- 快速看:看物理链路层的设备有几个端口就有几个冲突域,此时图中有四个。
答案:4个冲突域、1个广播域。
脑图时刻
整理者:长路 时间:2023.7.30-8.3