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