26考研 | 王道 | 计算机网络 | 第三章 数据链路层
26考研 | 王道 | 第三章 数据链路层
数据链路层所处的地位
- 数据链路层 使用 物理层 提供的“比特传输”服务
- 数据链路层 为 网络层 提供服务,将网络层的 IP数据报(分组)封装成帧,传输给下一个相邻结点
- 物理链路:传输介质(0层)+ 物理层(1层)实现了相邻结点之间的“物理链路”
- 逻辑链路:数据链路层需要基于“物理链路”,实现相邻结点之间逻辑上无差错的“数据链路(逻辑链路)”
1.数据链路层的功能
流量控制实际上是控制发送方的数据流量,让发送方发的慢一点
为了避免传输过程中的帧丢失,数据链路层采用的方法是计时器超时重发
为终端节点隐蔽物理传输的细节的是物理层而不是数据链路层的事情
数据链路层也会控制对物理传输介质的访问
2.封装成帧(组帧)
1.概念
定义:封装成帧是指在一段数据的前后分别添加首部和尾部来构成帧,帧是数据链路层的数据传送单元。
帧长 = 数据长度 + 首部长度 + 尾部长度 ,其能够实现两个功能:帧定界和透明传输
既要加首部又要加尾部是因为网络中信息是以帧为最小单位进行传输的,所以接收方要正确的接收帧,就必须清楚该帧在一串比特流中从哪里开始到哪里结束(因为接收方收到的是一串比特流,没有首部和尾部是不能正确区分帧的)
帧定界:即确定帧的界限,通过在帧的首部和尾部中包含很多控制信息来让接收方能够确定帧的界限
透明传输: 接收方收到封装好的帧后,要将其“恢复原貌”,即通过去除“帧定界”的附加信息,从帧的内部还原出IP数据报的原始信息,并提交给网络层进行处理,因此网络层之间感受不到数据链路层对IP数据报的处理与逆处理,“组帧”这一操作对于网络层来说是透明的,所以称之为“透明传输”
- 王道书中对于透明传输的理解:数据中若出现与帧定界符相同的比特组合,会被误认传输结束导致传输提前终止。透明传输则很好地解决了这个问题。无论所传数据是什么样的比特组合,透明传输都能保证数据无差错地在数据链路上传输。
**帧同步:**是指接收方如何从连续的二进制比特流中准确识别出帧的起始和结束位置,从而正确解析数据帧的边界,这是实现可靠数据传输的基础。该问题源于物理层传输的比特流缺乏明确的边界标识,且可能受到噪声、时钟偏差等干扰,导致接收端无法区分独立的数据帧
2.四种组帧方法
字符计数法、字节填充法、零比特填充法、违规编码法
由于字符计数法中计数字段的脆弱性和字节填充法试下上的复杂性和不兼容性,目前比较常用的是零比特填充法和违规编码法
字符计数法
原理:
帧首部使用定长计数字段表示帧长,注意:帧长 = 计数字段长度 + 数据部分长度(类似大学宿舍长查寝报人数当然也得把自己算进去…)缺点:
连锁效应,一个计数字段出错,后面全错。所以健壮性不好比如下面的7的111跳变为011,那么就变成了3,只会往后数3个字节。第四个字节会被认为是帧的大小
字节填充法
原理:使用特定字节来定界一帧的开始SOH与结束EOT。(告诉你这一帧啥时候开始啥时候结束)
三种控制字符:SOH、 EOT 、ESC
SOH:开始字符,代表一个帧的开始,16进制为01H
EOT:结束字符,代表一个帧的结束,16进制为04H
ESC:转义字符,在SOH、EOT、甚至ESC前插入转义字符,都会导致变为普通的数据信息。16进制为1BH
即:只要看到转义字符,后面紧跟的只能是数据,无任何特殊含义。
同理,接收方在接收时进行逆处理即可:删去转义字符,将紧跟其后的字符作为普通数据进行接收。
数据中包含开头和结尾控制字符,那就加入转义字符
数据中包含转义控制字符,那就在该字符前再加入一个转义字符
如果有两个相连的ESC都是数据呢?那就在两个ESC前面都分别加入转义字符,看起来就变成四个相连的转义字符了,其实1,3是转义,2,4是数据
逆处理:
接收方扫描到一个转义字符,就知道后面的是数据了,然后把转义字符给去掉把数据留下来
零比特填充法
原理:使用特殊的比特串表示帧的开始和结束
现实中经常用01111110。HDLC协议、PPP协议使用此方法。
为防止数据段中出现01111110被误判,做出如下规定:
发送方对帧的数据部分进行处理,每连续遇到五个1,就在其后填充一个0
接收方对帧之后,扫到第一个01111110,就知道是帧的开始,然后对后面的数据部分进行逆处理,每连续遇到五个1,就删去紧跟其后的一个0直到末尾的0111110,末尾有6个1,所以不会删掉0
这种方法在现代计算机很常用,因为上述的处理过程很容易使用硬件快速高效的完成,有助于提高数据链路层的处理效率。性能优于字节填充法
违规编码法
原理:利用违规编码来确定帧的起始和终止。
在物理层进行比特编码时经常采用。也就是基于物理层要使用曼彻斯特编码
不采用任何填充技术便能实现数据的透明传输,但只适用于冗余编码的特殊编码环境
例:在曼彻斯特编码中规定:上跳0下跳1看中间,中必变,则我们可以利用周期中间不跳变的“违规编码”来表示开始与结束,就是帧开始之前的一个周期肯定不会跳变,因为没有二进制信号,帧结束之后的一个周期肯定也没有跳变,因为也没有二进制信号过来了
这种方法需要物理层的配合,数据链路层会把数据原模原样的交给物理层,物理层会在帧的前后插入一个时钟周期的违规信号
接收方的物理层也可以根据这个违规信号知道帧的开始和结束
这种方法在现代计算机中也很常用
3.差错控制
奇偶校验码只能检测出奇数位错误而无法进行修正,也无法检测出双位错误
CRC检测码可以检测出所有的单比特错误。但是只有在信息位较少的时候有纠错能力
海明码可以检测出2位错误,纠正1位错误
1.奇偶校验码
奇偶校验码只能检测出奇数位错误,无纠错能力
奇偶校验码是奇校验码和偶校验码的统称。在有效信息位添加一位奇偶校验位就组成整个奇偶校验码。
如果整个校验码中“1”的个数为奇数,则为奇校验码;反之则称为偶校验码。
在下面奇校验的_1001101例子中,第一位是,一共有4个1,而我们要让这个整体一共有奇数个1,所以第一位就写1
_1010111有5个1,已经是奇数个了,那就写0就好了
对偶校验也是同理,只是让整体一共有偶数个1
同时接收方也可以通过奇偶校验码检查整个帧是否出错,方法如下:
- 约定使用奇校验:通过检查是否有奇数个1来判断正误;
- 约定使用偶校验:接收方(硬件实现)将所有位全部进行异或,若结果为0说明正确。
- 做题也可以直接数1的个数是不是偶数
- 异或的性质:1的个数为偶数,结果为0。1的个数为奇数,结果为1
- 如果有偶数个比特位发生错误,则无法检测这种错误(如11010111和11010100两者异或后均为0)
现实中更加常用的是偶校验,因为偶校验可以使用硬件实现,即对信息位进行异或,得到的结果就是偶校验位,拼在一起就是偶校验码,接收方将其全部异或,结果为0就是正确的
2.循环冗余校验码
有1位的检错能力
可以通过硬件来实现
只是一般而言,给的除数和被除数都是二进制数。例:
关于循环冗余校验码中的模2除法,简单总结为:求商就看被除数,首位为1就商1,首位为0就商0;余数求解用异或,余数去首往下算(进行下一轮求商)
比如第一轮时101001000第一位是1,那就写1,然后是1010和1101除去第一位的对应位置进行异或操作得到111,再把1010后面的0给拉下来构成了1110
第二轮时就是1110的第一位是1,那上面的商就写1,然后还是1110和1101进行异或操作,得到011,再把1拉下来得到0111
第三轮0111第一位是0,那商就写0,然后商是0的话,那就是0111和0000进行异或操作了,得到1110
后续都是这个过程,最终得到一个余数,作为校验位
CRC码就是101 001 001
接收方用接收到的CRC进行模2除余数必须得是000
余数对应了出错的是第几位,但是这个例子中,余数只有3位,只能表示8个位置(1个正确7个错误),但是信息位有9位,所以余数和出错的第几位并不对应。但这并不能说循环冗余校验码只有检错能力没有纠错能力。只要信息位数少于余数能表示的位置数量,那就可以纠错
所以其实是有纠错功能的,就是信息位数不能太多
还可以看出,如果生成多项式是确定的,那么无论信息位如何变化,出错位和余数都是对应的
CRC码一般用于网络通信中,一般都是几千个bit的信息位加上几个校验位,所以一般只用来检错
对于K+R+1的理解,有R位所以有2的R次方种情况,而1表示的是余数000,即正确的情况,剩下的都是K+R表示的是出错位置在[0,K+R]这个区间内的K+R种情况,所以是上述这个不等式
3.海明校验码
最后由低位排到高位是s1s2s3,就是010,也就是第二位出错了
海明码也可以从小到大编,如下图所示。步骤和从大到小的没有任何区别
4.流量控制与可靠传输机制
1.流量控制、可靠传输两种功能都可以基于滑动窗口机制来实现
2.停止等待、GBN、SR本质上都是滑动窗口机制
3.停止等待和GBN必须按序接收数据,因为接收窗口为1,而SR不用,因为接收窗口大于1
4.对于窗口总大小为n的滑动窗口(包含接收窗口和发送窗口),最多可以有n-1个帧已发送但还没有确认(原因:发送窗口数量<=总窗口数量-1,因为接收窗口至少1个)
5.如果三个协议数据帧长相等,忽略确认帧长,帧序号位数确定,那么三个协议对应的最大信道利用率大小关系为
停止等待<=SR<=GBN
1.流量控制、可靠传输与滑动窗口机制
学习下面三个协议的时候也按照下面四个方面进行学习会比较清晰一些
滑动窗口机制的介绍
滑动窗口流量控制是一种更高效的流量控制方法。
发送窗口:
发送方当前允许发送的帧,如果发送窗口之外的帧,则暂时不允许发送——控制发送方最多能发送多少个帧和多少帧。
接收窗口:
接收方当前允许接收的帧,同理,如果接收到窗口之外的帧,直接丢弃。
特性:通过“确认机制”,由接收方控制发送方的窗口向前滑动,从而实现流量控制,即:只有接收窗口向前滑动(同时接收方发送了确认)时,发送窗口才有可能(只有发送方收到确认后一定)向前滑动。
2.停止等待协议(S-W)
为什么S-W中不存在数据帧失序的问题?
因为发送窗口和接收窗口大小是1,只会顺序的发送和顺序的接收
会让停止等待协议效率遍地的:
在源主机和目的主机之间的距离很远的并且数据传输速率很高
距离远增大了传输时间,传输速率高,数据帧的发送时间就小,两者作用下是的信道利用率大大降低
帧序号的要求是 2^n^>= 发送窗口长度+接收窗口长度
在停止等待协议中,发送和接收窗口的长度都是1,所以n就是1,即用1个比特位就可以表示帧序号
我们让第一个帧是0,第二个帧是1,第三个帧是0这样交替下去
数据帧、确认帧、帧序号的概念
- 数据帧:用来传输数据
- 确认帧:当接收方接收到准确无误的数据后,会给发送方发送确认帧。确认帧很短,甚至可以是空。
- 帧类型:注明帧的类型,是数据帧还是确认帧。因为在现实场景中数据的传输是双向的,所以需要根据帧类型来判别。(比如我接收方此时也想给发送方发送数据,那发送方怎么知道接收方发过来的是数据帧还是确认帧呢?所以就需要帧类型)
- 帧序号:给帧编号,后续具体场景给出原因。
正常情况:
1.发送方发送A数据帧也就是Data0帧,接收方接收后经过差错检验后,发送给网络层
2.然后再发送给发送方确认帧Ack0帧,然后接收方的接收窗口向后滑动,准备接受B帧。
3.发送方收到Ack0帧,然后发送窗口向后滑动准备发送B帧,即Data1帧(C是Data0帧,不是Data3帧)
4.循环上述过程
异常示例情况1:数据帧丢失
当数据帧因网络噪声等原因丢失,接收方一直收不到下一个帧,怎么办? —— 利用重传机制
重传机制:发出一个帧后,发送方需要启动“计时器”,若计时器超时(规定时间内没有接收到确认帧),就自动重传,同时计时器清零重新计时,进入下一个循环。
下一次,接收方正确收到数据帧时,返回确认帧,发送方在本次计时器超时前也会收到确认帧,窗口向右滑动,继续进行数据传输。
异常示例情况2:确认帧丢失
确认帧丢失,发送方计时器超时,自动重传,时间重置。而此时接收方早已接收此数据,窗口向右滑动等待接收下一个帧。
收到此重复帧,接收方会进行以下两个步骤:
- 丢弃重复帧
- 返回重复帧的ACK
因此,在超时之前,发送方可以收到该重复帧的ACK,确认该数据帧已正确传输完毕,滑块向右滑动,继续进行。
思考:如果没有帧序号会怎样?
**接收方无法判别重复帧。**当发送方发送重复帧,接收方接收到此帧时,由于没有给帧编号,导致接收方不知道接收到的数据帧是重复帧还是数据相同的新帧,无法进行鉴别和处理重复帧的操作,也不能使数据传输进行下去。编号后,相邻两帧的序号有0、1之分,容易判别(接收窗口和发送窗口的距离不超过1,因此用1bit表示帧序号足矣)。
异常示例情况3:数据帧有误
当接收方接收到数据帧后,经过差错检验监测到数据帧内部有差错,就会将此帧“丢弃”,且不返回ACK。
显然会导致发送方计时器超时,进行超时重传操作。当接收方接收到正确数据后,便会返回确认帧,继续进行。
3.后退N帧协议(GBN)
帧编号问题:只要满足那个条件就行
正常情况
发送方把0,1,2全都发了,接收方也全都收了,然后只返回确认帧2,即最后一个帧,代表0,1,2全都收到了
异常示例情况1:数据帧丢失
不管是通信故障丢失还是被接收方检测出差错丢失,处理方法都是如下
上图是E帧丢失,而当F帧发送过去的时候,接收方的接收窗口是E帧,那不会接收F帧,并且在这时会返回已经正确接收的最后一个帧的ACK即D帧的ACK,那发送窗口就移动到D之后也就是EFG了,然后继续发送
但是之前已经发送过E、F了,但是接收方不会返回E的ACK只返回了D的ACK,那么此时E的帧超时后就会重新发送E及其以后的FG帧。其中E,F帧是重新发送的,G帧是第一次发送的
这样的设计也实现了流量控制功能,如果发送方发的太快了,接收方来不及接收的话,那肯定会有帧超时,然后发送方只能重新退回到这个帧重新发
注:重传帧的同时要重置计时器。同时新发送的帧也要有个计时器,不要忘记了
如果重传没有出错,那就和正常情况一样
异常示例情况2:确认帧丢失
确认帧丢失后,定时器会超时,A帧第一个发的,第一个超时,那么就会重传A,B,C三个帧,同时重置计时器。
而这时由于接收方的接收窗口已经滑动到D了,所以ABC都是非法帧,那就会返回目前已经接收的最后一个正确帧ACK即ACK2,发送方收到后发送窗口往后移动即可
探讨:如果不满足$W_T+W_R\leq2^n $ 会有什么问题?
发送ABCD全部成功但是确认帧ACK3丢失了,那就会超时重传,重传A的时候发现发过去的是Data0,接收窗口接收的虽然是E但是序号是0,所以会认为是正常的,原来ABCD被接收到EFGH的地方了,接收方接收的就是ABCDABCD了,后续的都会错位的
4.选择重传协议(SR)
选择重传协议的窗口大小限制条件
在实际应用中通常取发送和接收窗口两者相等的情况
正常情况
发送方把ABCD全发了,然后接收方每接收到一个都得返回对应的ACK,这是一帧一确认
这些帧的ack都确认以后发送窗口就可以往后移动了
异常示例情况1:数据帧丢失
5号帧丢失了,4,6,7都正常到达了,那么就会返回4,6,7对应的ack,然后接收窗口和发送窗口都会向后移动一格
此时5号帧的ack迟迟没来,那就定时器就超时,然后重传5号帧
由于发送窗口和接收窗口的后移,所以可以在重传5的时候发送和接收0号帧,ACK5和ACK0都到了就可以往后移动了
异常示例情况2:数据帧因差错而被丢弃
5号帧因为差错检验被接收方扔了
收到5号帧的NAK_i就会立刻重传,并重置计时器
同时,由于发送窗口和接收窗口已经后移了,所以此时可以发送0号帧
这次重新收到5号帧后没有差错就可以了
异常示例情况3:确认帧丢失
1和3的ack全都丢了
此时发送窗口和接收窗口只可以向后滑动1格,此时可以继续发送E。
但是1,3号帧由于超时发生了重传,所以发完E之后又会重传1,3。
然后E到达之后接收窗口会继续往后滑动。
此时接收方再次收到了重复的1和3的数据帧,发送方会返回两个对应的确认帧。这次要是没有丢失,发送窗口就可以往后移动了
探讨:如果不满足$W_T+W_R\leq2^n $ 会有什么问题?
0,1,2,3,4的ack全都丢了,但是接收方全都接收上了,那么发送方会超时重传0,1,2,3,4,但是下一个滑动窗口内包含了0号帧A,那0号帧A就被放在I帧的地方了,这就发生了错误
5.三种协议信道利用率分析
用最大平均传输速率除以信道带宽也可以得到信道利用率
最大平均传输速率可以通过时间t内的数据总量除以时间t得到
平均数据传输速率为 传输的数据总量除以传输这段数据所花费的时间。要等待ack回来才算是传输完毕
用最大平均传输速率除以信道带宽也可以得到信道利用率
对于连续ARQ来说
1.发送方可以连续发送若干数据帧,而不是发完一个就停下来等待确认帧
2.发送方收到了接收方发来的确认帧,还可以继续发送数据帧
3.相比停止等待协议,连续ARQ因为减少了等待时间,所以提高了信道利用率
4.GBN必须按序接收数据,因为接收窗口为1,而SR不用,因为接收窗口大于1
5.介质控制访问
1.信道划分 介质访问控制
TDM与FDM相比,抗干扰能力强,可以逐级再生整形,避免干扰的积累,而且数字信号比较容易实现自动转换
TDM适合传输数字信号,FDM适合传输模拟信号
介质访问控制(Medium Access Control,MAC):多个节点共享同一个“总线型”广播信道时,可能发生“信号冲突”。
- 应该怎么控制各节点对传输介质的访问,才能减少冲突,甚至避免冲突?这是介质访问控制应该解决的问题
时分复用(Time Division Multiplexing,TDM)
将时间分为等长的“TDM帧”,每个“TDM帧”又分为等长的m个“时隙”,将m个时隙分配给m对用户(节点)使用
TMD要满足的条件:
1.介质的位速率大于单个信号的位速率
2.介质的宽带大于结合信号的带宽
- 统计时分复用(Statistic Time Division Multiplexing,STDM ):又称异步时分复用,在TDM的基础上,动态按序分配时隙。
频分复用(Frequency Division Multiplexing,FDM):
将信道的总频带划分为多个子频带,每个子频带作为一个子信道,每对用户使用一个子信道进行通信
波分复用(Wavelength Division Multiplexing,WDM):即光的频分复用
码分复用(Code Division Multiplexing,CDM)
2.随机访问 介质访问控制
纯ALOHA和时隙ALOHA协议
CSMA协议(Carrier Sense Multiple Access)
CAMA/CD协议
1.以太网常用,以太网的最短帧长是64B,也就是512bit
2.当信号传播延迟趋近0时,信道利用率趋近100%
3.最短帧的题目要抓住两个公式:
a.发送帧的时间>=争用期时间
b.最短帧长等于数据传输率*争用期时间
给了最短帧长,除以数据传输率就是争用期时间
争用期时间不止是线路上的传播时延(线路1000m,传播速度1m/s然后相除得到的结果),还包括集线器之类的造成的时延(比如把信号放大再生画了2s),这些都包含在除出来的争用期时间内
然后争用期减去集线器之类的时延才是传播时延
我们会让随机等待的时间的区间随着冲突次数的增加而增加,因为冲突次数多了我们会更希望他们可以错开往信道上发送数据,而随机等待的时间区间越大,错开发送到信道上的几率就越大
第10次冲突之后我们不会再加长随机等待的时间的区间了就,这是一个分水岭
第16次冲突后就不传了,再跟网络层汇报一下没传成功
使用二进制指数退避算法的理由是:这种算法考虑了网络负载对冲突的影响
CSMA/CD协议”最短帧长”限制
假如帧长是500bit,传播需要50微秒,A传播完整个信道需要50微秒,而B正好在第29微秒时也去看了看,发现没数据,就开始传播,需要30微秒才能到A,这时候已经到第59微秒了才能到A,A在第50微秒的时候已经传送完了数据,A还以为没冲突呢,但实际上其实是有冲突的
最长帧长:规定最长帧长可防止某些节点一直占用信道。具体是多少要看设计者怎么设计了
补充:CSMA/CD没有ACK机制,若发送过程中没有检测到冲突,就认为帧发送成功。早期CSMA/CD是有线电视用的,有线电视误码率很低,所以才是没有检测到冲突的话就会认为帧是发送成功的
CSMA/CA协议
用于IEEE 802.11无限局域网(WIFI),是考试的难点但并不是重点
CSMA/CA协议的主要特点是发送后等待确认帧,在规定时间内没有收到确认帧就重传
不是发送前先预约信道,因为这个功能有时候开有时候不开
切换wifi热点被叫做漫游
无线局域网(WiFi)面临的新问题
1.A发送信号太强而接收的信号D强度一般很弱,那发送信号会极大的干扰接收信号,不好检测出来
并且接收信号的强度的动态变化范围很大,有可能中间加个墙就变得很小,原来可以检测到现在就检测不到了
2.假设信号范围10m,A,B相距13米,那么A发送信号的时候其实就只能送到AP,检测不到B,C正在发送数据,B,C就是隐藏站
信道空闲时:
1.准备好数据帧
2.等待一个DIFS
3.发送数据帧
4.接收方接收完数据后等待一个SIFS(无线通信误码率较高,必须进行差错控制)
5.返回ACK
信道不空闲时
1.用算法确认一个倒计时
2.持续监听信道,忙碌的话倒计时不会扣除
3.闲置的话倒计时开始扣除,扣完之后立即开始发送数据
4.接收方接收完数据后等待一个SIFS(无线通信误码率较高,必须进行差错控制)
5.返回ACK
- 解决“隐藏站”问题
ACK也是给大家都发,发完以后B,C就可以预约了
这个先预约在发送可以不启用也可以启用,判断依据是数据帧的大小,小的话就不用启用了,因为就算传输失败我重新传送这个小的数据帧的代价也很小。但是如果数据帧很大的话就需要启用了,不然重新传输的代价很大
一般而言就是会设定一个阈值,超过了就会启用
注:除了一开始是DIFS,剩下三个都是SIFS
NAV值的分析
3.轮询访问:令牌传递协议
1.适用于负载高的网络,而在总线型网络且负载高时中使用CAMA/CD协议就不太适合,因为冲突换回大幅增加,重发的次数就多了,而令牌传递冲突概率很小,几乎不会重发
2.令牌环网不存在冲突
3.网上所有节点共享网络带宽
4.数据从一个节点到另一个结点的时间可以计算
5.当前结点没有要传输的数据会立即传递令牌,不会持有
6.信道利用率比较公平
正常情况:
1号主机拿到了令牌,同时也有数据要传递,然后把令牌帧变成数据帧,加入源地址和目的地址和要传输的数据,以及一个有没有被接收的标志位。(假设是3号主机是目的地址)
2号主机看了一下不是自己的,就继续往后传递,传到3号发现是自己的,就把传输的数据复制一份,然后把标志位改为true,然后继续传递
绕完一圈以后就回到了起点,就是1号机,检查接收是否已经被修改,为true表示接收成功。为false的话,如果数据帧检查有异常,可以尝试重新发送(重发次数也会有上限,达到上限以后可以放弃发送)。
如果发送成功,那就会把数据帧换回令牌帧,释放令牌,把控制权交给下一个节点。修改令牌号为2
也可以说是每次只可以传1个帧,传送完就必须释放令牌(生成一个新令牌)
然后把令牌帧传递给2,2号主机一看是2,就看自己有没有要发的数据,有的话就还是上面的过程,没有的话就释放令牌控制权(生成一个新令牌),把令牌号改为3再传递给3号主机
后续就是上述过程的循环
其他情况:
6.局域网
1.局域网与IEEE 802
IEEE 802局域网对应OSI参考模型的物理层和数据链路层
高速以太网和标准以太网的帧格式是一样的,以便升级和向后兼容
现在大部分的无线网卡有线网卡都不在有逻辑链路子层了,原来的目的是兼容所有版本的MAC子层,向网络层提供统一接口
因为有线局域网已经被以太网垄断,基本都用以太网技术
而无线局域网也被 802.11垄断了,所以对网络层提供的一共也就两种技术,也没必要单独设置一层来兼容了
MAC子层的主要功能是控制和协调所有站点对共享介质的访问
2.局域网的基本概念和体系结构
1.局域网的特点:
单播广播和多播
比如BDE是一组的,那A也可以多播这一组,也就是A发给BDE三个人
2.局域网的分类
关注三要素
有线局域网
分为以太网和令牌环网
10Base5:Base表示的是传输的是基带信号,也就是数字信号,10是最高支持10Mbps的速度,5是一根同轴电缆不能超过500米
随着时间,以太网技术又增加了双绞线以太网和光纤以太网
用集线器连接的以太网肯定是半双工的,必须得用CSMA/CD协议
光纤以太网
介质访问控制方式是null的原因是不需要考虑介质访问控制,因为一根光纤里面有两条,可以实现全双工通信
双绞线以太网
10BaseT的T就是双绞线的意思
不允许和同轴电缆以太网一样,一根线中间还可以分出来,必须只有两端才可以连接
无线局域网
3.硬件架构
网卡实现的功能主要在数据链路层和物理层
MAC地址
:也叫以太网地址和局域网硬件地址。全球唯一,写死在以太网适配器的ROM里面的。除非给电脑换一个适配器,否则不会改变
以太网适配器和wifi网络适配器各一个,而且不一样
串并行转换:
局域网和网卡之间是串行传输的,而网卡和主存之间是并行传输的,所以要进行串并行的转换(比如主存和网卡之间是32bit的速率,而局域网和网卡只有1bit,那么网卡就是把这些1比特1比特的数据按照并行传输的方式传给主存,可能够了4bit就传一次之类的)
而主存并行传输给网卡32bit数据,网卡还得串行发到局域网上面
以太网适配器
以太网适配器有ROM和RAM
RAM帧缓冲
:之前说的发送窗口和接收窗口的帧就是在RAM进行缓存
WIFI网络适配器
内置WIFI天线用来接收和发送电磁波信号从而接入802.11局域网
4.以太网与IEEE 802.3
以太网采用两项措施来简化通信
1.采用无连接的工作方式。既不对发送的数据帧编号,又不要求接收方发送确认,即以以太网尽最大努力交付数据,提供的是不可靠服务,对差错的纠正则由高层完成
2.发送的数据都是用曼彻斯特编码的信号,每个码元中间出现一次电压转换,接收方利用这种电压转换方便的将位同步信号提取出来
光纤以太网考的不多,主要是双绞线和同轴电缆以太网
吉比特以太网
同轴电缆两端对应的是两个不同的网段,可以使用不同的物理层标准
1.网络层协议是IPV4或者IPV6
2.数据长度需要限制,最短是46字节,最长是1500字节,如果比46少要用其他比特进行填充,太长就分片
一个MAC帧的长度为64字节到1518字节
3.最后的FCS是差错控制用的,用的是CRC校验码
4.物理层采用曼彻斯特编码
物理层会给MAC加一段前导码,前导码的前同步码是让收发双方保持一样的节奏,后面的帧开始定界符表示后面就是MAC帧。帧结尾会留有一段空隙,接收方这段空隙里面收不到比特就知道这一帧传输完毕了。除此之外也可以采用违规编码法,见下图
5.目的地址全1表示广播帧,所有相连的人都会收到这个帧
和V2的区别就是 V2要指明网络层的协议类型,是IPV4还是IPV6,而这个就是指明数据部分的长度就行
这是因为在IEEE的层次中,MAC层并不直接为网络层提供服务,而是上面还有个逻辑链路控制子层
广播帧并不会通过路由器到达其他网络
广播式网络使用共享的广播信道进行通信,通常是局域网的一种通信方式(局域网工作在数据链路层),因此可以不需要网络层,也就不存在路由选择问题。但是数据链路层使用物理层的服务必须通过服务接入点,数据链路层向高层提供服务也必须通过服务接入点
5.VLAN的基本概念与基本原理
1.同一个VLAN的主机可以处于不同的局域网中
2.VLAN是为局域网用户提供的一种服务,而不是一种新型的局域网
3.VLAN建立在交换技术的基础上,以软件方式
实现逻辑分组与管理,VLAN中的计算机不受物理位置的限制
4.VLAN的划分与计算机的实际物理位置无关
5.当计算机从一个VLAN转移到另一个VLAN时,只需要简单的通过软件设定,而无需改变它在网络中的物理位置
6.VLAN优点:有效共享网络资源、简化网络管理、提高网络安全性和保密性。链路聚合是解决交换之间的宽带瓶颈问题的技术,而不是虚拟互联网的技术
IEEE 802.1Q负责的
如何划分VLAN由管理员进行配置
中间插入了4个字节的 VLAN标签,表示是哪个VLAN的
6.IEEE 802.11 无线局域网
1.802.11帧是在以太网帧的基础上增加了4B,所以帧的长度肯定发生了变化
2.MAC帧的地址字段的含义和作用取决于 帧的ToAP和FromAP位
门户其实就是网桥。
以太网交换机连接的是802.3协议的,wifi是802.11协议的,两个局域网协议不同,通过网桥/门户,可以完成协议的转换,可以连接起来组成一个更大的局域网
802.11局域网的数据帧格式
1.第9个和第10个bit表示去往ap还是来自ap
2.A给AP发,即去往AP的帧 1是接收地址,2是发送地址,3是目的地址
地址1:中转的AP的mac地址
地址2:起始的A的mac地址
地址3:最终目的的B的mac地址
AP给B发,即来自AP的帧 1是接收地址,2是发送地址,3是最开始的地址
地址1:最终目的的B的mac地址
地址2:中转的AP的mac地址
地址3:起始的A的mac地址
持续期大小 RTS>CTS>ACK
其实就是CSMA/CA协议中的NAV
7.广域网
看课本吧,这人讲的一坨
广域网的通信子网主要使用分组交换技术
广域网所使用的传输方式是存储转发式
广域网的拓扑结构通常采用的是网状
局域网和广域网互联是通过路由器实现的
1.局域网普遍采用多点接入技术,广域网采用点对点,一个发送方一个接收方,通过一条链路相连的全双工或者半双工通信模式
2.局域网强调数据传输,而广域网强调资源共享
虽然广域网传输速率比局域网高,但是由于距离远,导致传播延迟比局域网大,所以广域网不怎么强调数据传输,只强调资源共享
3.广域网和局域网之间的差异不仅在于它们所覆盖的范围不同,还在于它们所采用的协议和网络技术不同,广域网使用点对点技术,局域网使用广播技术
PPP协议
1.不需要实现可靠传输
2.提供有连接的不可靠服务,因为发现错误只是丢了不重传
3.PPP可用于拨号连接,因此支持动态分配IP地址
应用:
1.用户通常都要连接某个ISP才能接入互联网,PPP就是用户计算机与ISP通信时所用的数据链路层协议
2.两台网络设备之间的直连专用路线
1.PPP虽然在连接建立的过程中使用了确认机制,但是在数据帧发送过程中只保证无差错接收(通过CRC),不使用序号和确认机制,因而是不可靠服务
2.PPP只支持全双工的点对点链路,不支持多点线路
3.PPP的两端可以运行不同的网络层协议,但仍可以使用同一个PPP通信
4.PPP是面向字节的,所有的PPP帧的长度都是整数个字节
PPP不需要的纠错,只需要检错就可以了。
ppp不需要流量控制,不需要给帧编号,不需要支持多点线路
第二步是建立物理的链路,第三步是建立逻辑上的链路
C是控制字段,FCS是检错字段,使用的是CRC
PPP是点对点的,并不是总线形,所以无需使用CSMA/CD协议,自然就不会有最短帧长的限制,所以信息部分是0-1500字节,而不是46-1500字节
8.以太网交换机
以太网交换机特点:
1.当交换机的接口直接与主机或其他交换机连接时,通常都工作在全双工方式
2.交换机具有并行性,能同时连接多对接口,使每对相互通信的主机都能像独占通信介质那样,无冲突地传输数据,这样就不需要使用CSMA/CD
3.当交换机的接口连接集线器时,只能使用CSMA/CD协议且只能工作在半双工方式。当前的交换机和计算机中的网卡都能自动识别上述两种情况
4.交换机是一种即插即用设备,其内部的帧转发表是通过自学习算法,基于网络中各主机间的通信,自动地建立的
5.交换机因为使用专用交换结构芯片,交换速率较高
6.交换机将网络划分成多个网段,一个网段的故障不会影响到另一个网段的运行
交换机优点:每个接口结点所占用的宽带不会因为接口结点数量的增加而减少,且整个交换机的总宽带会随着接口节点的增加而增加
如果ABC连接一台交换机,每个链路都是100Mbps,那么最大吞吐量就是300Mbps,就是三个人的宽带不会互相影响
而如果ABC连接一台集线器,每个链路都是100Mbps,那么最大吞吐量就是100/3Mbps,就是三个人的宽带是共享的
看书上的题 P120页第10,11题
A给C发帧,交换机1会记录A的MAC地址,然后由于不知道C的MAC地址,会把这个帧当成广播帧,全都发一遍,交换机2也就知道了A的MAC地址,最后只有C收到了之后看了下是自己的然后收下了
剩下的帧都是这样
总的来说就是,先查表,表里没有就发广播帧
直通交换:只把开头的目的地址拿出来分析一下,也就是只处理目的地址
而且在需要速率匹配时表现很差,因为这个就是发送方发多快就按照相同的思路给到接收方,接收方速度慢接收不了就接收不了了
存储转发交换:接收并处理整个帧