在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错
-
冗余编码就相当于盒子上写的“6本”的附加信息。
-
冗余码和校验码一个意思
3)奇偶校验码
-
x 为1位的校验元(奇校验码 就是校验元加0或1后使校验码1的个数变为奇数,偶校验码 就是使校验码1的个数变成偶数)
-
后面为n-1位信息元(也就是添加校验元之前的数据)
-
在原数据的基础上添加了校验元就变成了奇偶校验码
例题:
分析:采用奇校验,所以在1100101前面加个校验元:1,使得ASCII码变成11100101,这样就有5个1,为奇数个1。接收方收到D时,也是5个1,为奇数个1,奇校验就无法判断1100101是否发生错误。而ABC都是4个1为偶数个1,可以判断1100101一定发生错误。因此这道题选D。
-
奇偶校验码特点
-
只能检查出奇数个比特错误,检错能力为 50%
比如:
对于1100101,采用奇校验后,变成11100101有5个1为奇数。如果发生1位差错:1变成0,那么变成4个1为偶数;或者0变成1,那么变成6个1也为偶数。而发生两位错误:最后的01变成10,那么还是5个1为奇数,无法判断是否出错。所以只能检查出奇数个比特发生的错误
4)CRC循环冗余码
-
核心思想:循环冗余码又称为多项式码,任何一个由二进制数位串(10011)组成的代码都可以和一个只含有0和1两个系数的多项式建立一一对应关系
-
检错过程图示
-
检错过程
-
计算冗余码
-
被除数(原始数据)加 0:多项式的阶为r,则加r个0
-
模2除法:原始数据加 0 后除以多项式,余数为冗余码/FCS(frame Check Sequence:帧校验序列)/CRC检验码的比特序列
-
计算最终发送的数据:原始数据 + 冗余码/FCS
-
接收端检错
-
把收到的最终数据除以多项式,余数为 0 则没出错;余数不为 0 则出错,丢弃
- 不可靠传输
链路层使用CRC检验,能够实现 无比特差错 的传输,但不是可靠传输(因为出错的帧被丢弃了)
在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的 无差错接收,即“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃
- 可靠传输
数据链路层发送端发送什么,接收端就收到什么
3.2、纠错编码
1)海明码
可以 发现双比特错,只能 纠正单比特错
海明码纠错d位,需要码距为2d+1的编码方案,检错d位,则只需码距为d+1。(记住即可,这里不展开讲)
- 工作原理:牵一发而动全身
假如要发送一个四位信息,按照前面学的,我们会加上校验码或者冗余码 。而这几个校验码很厉害,不光可以校验自身比特位,还可以校验其他比特位。所以有的数据会同时被几个校验码校验。假如在接收端,被同时校验的比特位发生了差错(比如0变成了1),就会对其他校验码产生影响。 (一个数据发生错误,很多校验码都会察觉出来,这些校验码会互相通气,究竟是哪个数据发生了错误。)
工作流程
- 确定校验码位数 r
r 为添加的校验码或者冗余码(冗余码和校验码一个意思)的位数,k就是原始信息的位数
要发送的数据: D=101101
数据的位数k=6
满足不等式的最小r为4
也就是D=101101的海明码应该有6+4=10位
其中原数据6位,效验码4位
- 确定校验码和数据的位置
D=101101
假设这4位校验码分别为P1、P2、P3、P4(校验码只能放在2的几次方的位置,比如1、2、4、8…是为了使各校验码的这一次方位为1);数据从左到右为D1、D2、…、D6(按序把空填满)
- 求出校验码的值
求校验码实际值的过程:
【异或:相同为0,不同为1】
求p1时,使p1和二进制的第一位为1的数据异或=0;因为p1的二进制的第一位为1。
求p2时,使p2和二进制的第二位为1的数据异或=0;因为p2的二进制的第二位为1。
求p3时,使p3和二进制的第三位为1的数据异或=0;…
求p4时,使p4和二进制的第四位为1的数据异或=0;…
异或 = 0,相当于解方程
求出校验码的实际值后,就可以得到海明码
- 检错并纠错
分别求出各校验码的或异运算后,按照 p4、p3、p2、p1的顺序 写为新的二进制序列:0101,其对应的十进制值就是出错的数据位 5
3.3、总结
4、流量控制 与 可靠传输
4.1、流量控制 可靠传输 滑动窗口
1)数据链路层的流量控制
较高的发送速度和较低的接收 能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
数据链路层 与 传输层 流量控制的区别:
-
数据链路层的流量控制是 点对点 的(相邻节点之间);而传输层的流量控制是 端到端 的(主机之间)
-
数据链路层流量控制手段:接收方收不下就不回复确认;传输层流量控制手段:接收端给发送端一个窗口公告
2)流量控制的方法
-
停止等待协议:效率比较低,需要等待对方确认
-
发送窗口大小=1,接收窗口大小=1
-
滑动窗口协议:收到确认后才移动窗口,但一次可以发送多个帧
-
后退N帧协议(GBN ): 发送窗口大小>1,接收窗口大小=1;
-
选择重传协议(SR): 发送窗口大小>1,接收窗口大小>1
3)三者之间的关系
- 可靠传输
就是采用一系列技术来保障信息在发送方和接收方准确、精确的传输。
可靠传输是传输技术,通过使用一些可靠传输的协议(如:停止等待协议)来实现。
- 透明传输 重点是 比特组合(因为有时候比特组合里面会有与控制信息相同的组合,会被误判)
- 可靠传输 重点是数据的 准确传输,比如发送方没收到确实,就会重传。
- 流量控制
控制发送速率,使接收方有足够的缓冲空间来接收每一个帧
-
滑动窗口可以解决
-
流量控制
收不下就不给确认,想发也发不了
- 可靠传输
发送方自动重传:发送方到了时间还没收到确认,就会重传一次。
4)总结
4.2、停止-停待协议
1)停止-等待协议
- 为什么要有停止-等待协议?
除了比特出差错,底层信道还会出现丢包问题。为了实现流量控制。
丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失
- 研究停等协议的前提?
- 虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)。
- 因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。
- “停止等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。
-
停等协议有几种应用情况?
-
无差错情况
-
有差错情况
2)停等协议 应用情况
1、无差错情况
2、数据帧 丢失 或 出错
3、确认帧(ACK)丢失
ACK(acknowledgement frame 确认帧)
4、确认帧(ACK)迟到
3)停等协议性能分析
-
优点:简单
-
缺点:信道利用率太低!
确认帧:只包含控制信息,不包含数据,所以它的宽度窄
TD (Data frame time):发送方发送一个数据帧的发送时延
RTT (round trip time):往返时延
TA(Acknowledgement frame time):确认帧的发送时延
4)信道利用率
channel [ˈtʃænl] n.通道,信道
utilization [ˌjuːtələˈzeɪʃn] n. 利用,使用
信道利用率:U = ( L / C ) / T
T:发送周期(TD + RTT + TA)
L:T内发送的比特数
C:发送方数据传输率
L/C = TD(发送时延)
信道吞吐率 = 信道利用率 * 发送方的发送速率
5)总结
4.3、后退N帧协议(GBN)
1)停等协议的弊端
-
必须增加序号范围:传送当中的数据帧必须有一个唯一的序号,三组数据帧当中,三组的序号都是不同的,这样接收方才可以返回每组对应的帧
-
发送方需要缓存多个分组:传输过程中非常容易出现帧丢失的情况,比如0、1、2号帧传输,1和2号帧都发生了丢失。所以发送方需要增加缓存空间,以保证发送的帧都可以在缓存空间里面有备份。
针对这两种弊端,有 后退N帧协议 和 选择重传协议 两种方案解决
2)后退N帧协议中的滑动窗口
-
GBN协议中 接收窗口只有一个
-
GBN协议 发送窗口有多个,当收到确认帧时就向前移动一个格子
举例:0号帧发送时,1—5号帧可以发送也可以不发送。当0号窗口收到ACK0时,就可以向前移动一个格子
3)GBN发送方必响应的三件事
1、上层的调用
网络层 要给数据链路层发送数据时,发送方先检查发送窗口是否已满
如果未满,则产生一个帧并将其发送
如果已满,发送方只需将数据返回给上层,暗示上层 窗口已满。上层等一会再发送。(实际实现中, 发送方可以缓存这些数据,窗口不满时再发送帧)。
2、收到了一个ACK
GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方已经收到n号帧和它之前的全部帧
累计确认:收到了n号帧以及n号帧前面的所有帧。这个只和 接收方发送的确认帧 有关,而发送方接收确认帧和这个没关系,因为确认帧可能会迟到
3、超时事件
协议的名字为 后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。(未确认的帧是指最大确认帧以外的帧)
4)GBN接收方要做的事
如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层(第一章讲到的解封装的过程,把数据部分交给网络层)。
5)运行中的GBN
运行过程:接收方在收到1帧后会留一个心眼,下一个应该收到的是2帧。如果2帧没有收到,结果等来的是3帧,接收方就不收(丢弃),并继续发送ACK1,一直期待着2帧的到来。类似吃汉堡的时候,要一层一层的吃。
6)发送窗口长度
帧的序号是可以重复的。假设现在滑动窗口是4个,如果四个窗口的帧全部丢失,全部超时后,超时器就会把这四个帧:0、1、2、3号帧再次重传。这个时候接收方就分不清这四个帧是新的0、1、2、3号帧还是旧的帧。
n 个比特位可以编号2^n个帧,比如2个比特位可以编号4个帧。(帧的序号是由比特位编号的,可以重复)
7)GBN协议重点总结
-
累积确认(偶尔捎带确认)
-
接收方只按顺序接收帧,不按序无情丢弃
-
确认序列号最大的、按序到达的帧
-
发送窗口最大为2^n-1,接收窗口大小为1
8)习题
没有收到1号帧的确认是因为确认帧可能迟到。看最大确认帧即可
9)GBN协议性能分析
-
优点:因连续发送数据帧而提高了信道利用率
-
缺点:在重传时必须把原来已经正确传送的数据帧重传,使得传送效率降低。为了解决这个问题,有选择重传协议
10)总结
4.4、选择重传协议(SR)
1)GBN协议的弊端
- 弊端:累积确认导致一出现问题就需要批量重传(超时才能发现问题)
- 解决方法:设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧
2)选择重传协议中的滑动窗口
3)SR发送方必须响应的三件事
1、上层的调用
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输
2、收到了一个ACK
如果收到ACK的帧序号在滑动窗口内,则SR发送方将被确认的帧序号标记为已接收
如果该帧序号是窗口的下界(此时窗口最左边第一个帧序号),则窗口向右移动到具有最小序号的未确认帧处
3、超时事件
每个帧都有自己的定时器,一个超时事件发生后只重传一个帧(后面结合例子讲解)。
4)SR接收方要做的事
来者不拒( 窗口内的帧)
SR接收方 将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧[接收谁就确认谁],直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧 按序 交付给上层(网络层),然后向前移动滑动窗口
举例:
5号帧还没收到,6号7号已经收到了,那么先把67号缓存起来。等5号帧收到收到后,567号帧就一起交付给网络层了,窗口就向前移动。
- 5号帧还没收到
- 5号帧收到了
- 5号帧(窗口下届帧)收到后窗口才可以向前移动
- 如果收到了窗口序号外的帧(比如窗口移动后还收到了5号帧),就再返回给发送方一个ACK5。因为接收方前面发送的ACK5可能丢失了,发送方没收到ACK5于是重传一次5号帧。可以看到,接收方是收到帧以后窗口就向前移动,不需要等发送方收到ACK再移动
5)运行中的SR
6)滑动窗口长度
-
接收窗口 + 发送窗口 不超过2^n:W_R + W_t <= 2^n
-
接收窗口的尺寸不应超过序号范围的一半:W_R <= 2^(n-1)
-
发送窗口长度 = 接收窗口长度 = 2^(n-1)
例如:比特位为3时,可以给帧序号编号8个,窗口的长度就是 2^(3-1) = 4
7)SR协议重点总结
-
对数据帧逐一确认,收一个确认一个
-
只重传出错帧
-
接收方有缓存
-
滑动窗口长度:发送窗口长度 = 接收窗口长度 = 2^(n-1)
8)习题
9)总结
5、介质访问控制(MAC)
1)静态 信道划分
通信时信道固定分配
1、传输数据的两种链路
-
点对点链路
-
两个相邻节点通过一个链路相连,没有第三者
-
应用: PPP协议,常用于广域网
-
广播式链路
-
所有主机共享通信介质
-
应用:早期的总线以太网(使用以太网技术的电气标准)、无线局域网,常用于局域网(类似村子里广播,大家都听得到)
-
典型拓扑结构:总线型、星型(逻辑上是总线型,简称 逻总)
-
总线型
主机都在一条线上,A主机发送的信息,会到达B、C等所有主机。各主机会查看信息的目的地址是否是自己的,如果是自己的就接收,不是自己的就丢弃。
缺点:假如A和B之间链路出现问题,那么后面都无法传输
- 星型
中间就是集线器 ,A发送信息还是会传输到集线器的所有端口(所以说是逻辑总线型)。各主机会查看信息的目的地址是否是自己的,如果是自己的就接收,不是自己的就丢弃。
优点:其中一条链路断了没关系,其他链路照样可以正常工作
A对讲机在讲话的同时,B对讲机可能也会讲话,这样就会发生相互干扰,如何解决这个问题呢?可以用介质访问控制
2、介质访问控制(MAC)
Media Access Control
media [ˈmiːdiə] 媒体
介质访问控制的内容就是,采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。
-
静态划分信道:信道在用户通信时固定分配,如果双方不说话就浪费了。
-
动态划分信道:信道并非在用户通信时固定分配,说话就分配资源,不说话就不占用资源。
3、多路复用技术概述
信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的 通信隔离开,把 时域和频域 资源合理地分配给网络上的设备。
- 每两对主机之间传输信息:
-
多路复用技术:把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备 共享信道资源,提高信道利用率。
-
采用复用器,把信息从三个信道放在一个信道上传输
-
把一条广播信道,逻辑上分成几条用于两个节点之间通信的互不干扰的子信道,实际就是把广播信道转变为点对点信道。(多个信息虽然是在一条信道上传输,类似广播信道。但是每个信息又是互不干扰的,这就是点对点信道)
4、频分多路复用FDM
Frequency Division Multiplexing
frequency [ˈfriːkwənsi] 频率
division [dɪˈvɪʒn] 分配
multiplexing [ˈmʌltiˌplɛksɪŋ] 多路复用
-
用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带
-
频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资源,所以互不影响!
-
优点:充分利用传输介质带宽,系统 效率较高;由于技术比较成熟,实现也比较容易
-
适合传输模拟信号
5、时分多路复用TDM
Time Division Multiplexing
-
将时间划分为一段段等长的 时分复用帧(TDM帧)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道
-
频分复用 类似操作系统的 “并行”;时分复用 类似操作系统的 “并发”
-
假如A、B、C主机都休息了,只有D主机在发送信息,那么ABC的时隙就浪费了。于是有了改进的时分复用
-
适合传输数字信号
6、统计时分复用STDM
statistical [stəˈtɪstɪkl] 统计的
改进的时分多路复用
-
每一个STDM帧中的时隙数小于连接在集中器上的用户数
-
各用户有了数据就随时发往集中器的输入缓存,然后集中器按顺序依次扫描输入缓存,把缓存中的输入数据放入STDM帧中,一个STDM帧满了就发出
-
STDM帧不是固定分配时隙,而是按需动态分配时隙
7、波分多路复用WDM
wavelet [ˈweɪvlət] 微波
波分多路复用就是 光的频分多路复用,在一根光纤中传输多种不同波长(频率) 的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来
8、码分多路复用CDM
Code Division Multiplexing
**码分多址(CDMA)**是码分复用的一种方式,其原理是每比特时间被分成m个更短的时间槽,称为芯片(chip) ,通常情况下每比特有64或128个芯片。每一个站点被指定一个唯一的m位的芯片序列。发送1时站点就发送芯片序列,发送0时就发送芯片序列反码(通常把0写成-1)。
假如A站点要发送的数据是10,1比特对应芯片序列+1 -1 -1 +1 +1 +1 +1 -1(为了方便这里只写8位)。那么0比特对应芯片序列反码-1 +1 +1 -1 -1 -1 -1 +1。比如可以用一个向量S来表示A的码片向量。如何不打架(同时发送):多个站点同时发送数据的时候,要求各个站点芯片序列相互正交。即A的第一个比特位的芯片序列与B的第一个比特位的芯片序列正交结果为0,就可以同时发送。
如何合并:各路数据在信道中被线性相加。A的第一个比特位的芯片序列与B的第一个比特位的芯片序列相加的向量。
如何分离:合并的数据和源站规格化内积。如果用A的序列与合并的数据规格化内积结果是1,那么说明A的第一个比特就是1;结果是-1,那么说明A的第一个比特就是0
9、CD还是CS?
2)随机 ALOHA协议(了解)
随机访问介质访问控制
1、纯ALOHA协议
Aloha协议或称Aloha技术、Aloha网,是世界上最早的无线电计算机通信网。它是1968年美国夏威夷大学的一项研究计划的名字。由该校Norman Amramson等人为他们的地面无线分组网设计的。70年代初研制成功一种使用无线广播技术的分组交换计算机网络,也是最早最基本的无线数据通信协议。
取名Aloha,夏威夷语你好的意思
纯ALOHA协议思想:不监听信道,不按时间槽发送,随机重发。想发就发
- 冲突如何检测?
如果发生冲突,接收方在就会检测出差错,然后不予确认,发送方在一定时间内收不到就判断发生冲突。
- 冲突如何解决?
超时后等一随机时间再重传。
2、时隙ALOHA协议
时隙ALOHA协议的思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再送。控制想发就发的随意性
理解:类似每个人都需要整点出发,不允许在其他时间出发。这样只可能在整点出现冲突。
3、关于ALOHA要知道的事
-
纯ALOHA比时隙ALOHA吞吐量更低,效率更低
-
纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能发
3)随机 CSMA协议
随机访问介质访问控制
ALOHA协议:不听别人说,自己想说就说
CSMA协议:先听别人说再自己说(先检测再发送)
1、CSMA协议内容
先检测再发送
载波监听多路访问协议CSMA (carrier sense multiple access)
- CS:载波侦听/监听(carrier:载体;sense:感觉、检测;carrier sense:载波监听)
每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据
如何检测总线上是否有其他站在发送数据:当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大( 发送的数据的电压互相叠加)。当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突。
- MA:多点接入(multiple:多样的;access:访问、入口)
表示许多计算机以多点接入的方式连接在一根总线上
协议思想:发送帧之前,监听信道
2、1-坚持CSMA
坚持 指的是对于监听信道 忙 之后的坚持
-
思想:如果一个主机要发送消息,那么它先监听信道
-
空闲则直接传输,不必等待
-
忙则一直监听,直到空闲马上传输
-
如果传输后有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程
-
优点:只要媒体空闲,站点就马上发送,避免了媒体利用率(信道的利用程度)的损失
-
缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免
3、非坚持CSMA
非坚持 指的是对于监听信道 忙 之后就不继续监听
-
思想
-
如果一个主机要发送消息,那么它先监听信道
-
空闲则直接传输,不必等待
-
忙则等待一个随机的时间之后再进行监听
-
优点:采用随机的重发延迟时间可以减少冲突发生的可能性
-
缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低
4、p-坚持CSMA
p-坚持 指的是对于监听信道 空闲 的处理
-
思想:如果一个主机要发送消息,那么它先监听信道
-
空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输
-
忙则等待一个随机的时间之后再进行监听
-
优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间
-
缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费。有没有什么办法可以减少资源浪费,冲突就能发现呢?有——CSMA/CD协议!
5、三种CSMA对比总结
举例喝奶茶:
-
1-坚持的人:超想喝!到我了就买,没到我就排队等!
-
非坚持的人:不急喝。到我了就买,没到我就一会再来。
-
p-坚持的人:随性喝。到我了按概率买(可能买也可能不买),没到就一会再来。
4)随机 CSMA/CD协议
随机访问介质访问控制
1、CSMA/CD协议内容
边发送边监听
载波监听多点接入/碰撞检测CSMA/CD (carrier sense multiple access with collision detection)
- CS:载波侦听/监听
每一个站在 发送数据之前 以及 发送数据时 都要检测一下总线上是否有其他计算机在发送数据
- MA:多点接入
表示许多计算机以多点接入的方式连接在一根总线上。 所以该协议适用于总线型网络类型
- CD:碰撞检测(collision:冲突;detection:检测)
边发送边监听
适配器 边发送数据 边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。类似半双工网络通信方式(对讲机)
- 先检测后发送为什么还会冲突?
因为电磁波在总线上总是以有限的速率传播的(有传播时延)。A给B发送数据的时电磁波还没到B,B就开始给A发送数据,他们的电磁波就会在路上发送冲突
2、传播时延对监听的影响
过程分析:A和B发送的数据发送冲突后,都是以浑浊的电磁波(叠加在一起了)继续传播。B根据收到的数据帧检测是否出错,发现错误,判断发生了冲突。B认为是自己的问题没有检测到信道上有数据在传输,所以赶紧停止发送数据。A同理,也停发了。
A最迟多久才能知道自己发送的数据没和别人碰撞?
以最坏的情况分析:
-
B发送的数据刚出门就与A发送的数据发生了碰撞,碰撞前A发送到B的时间为1τ,碰撞后B发送到A也为1τ。所以A最迟2τ才能知道自己发送的数据是否和别人发生碰撞。
-
总线的端到端往返传播时延2τ,也称为争用期、冲突窗口、碰撞窗口。非常重要的参数!
-
知道自己发送的数据是否和别人碰撞的时间区间:(0,2τ),0表示自己刚出门就发生碰撞
3、碰撞后的重传时机
截断二进制指数规避算法
4、最小帧长问题
以太网最小帧长 64B
- 问题分析
-
个人理解:CSMA/CD协议本身就是为了及时阻止发生碰撞的帧继续发送,你现在直接发完了,岂不是让我很尴尬?所以我们希望在发生碰撞的时候,帧的发送还没结束
-
最小帧长
所以帧的传输时延至少要两倍于信号在总线中的传播时延τ。(因为A站最长2τ后才知道自己是否发生碰撞,如果A站已经把帧发送完毕还不知道自己是否发生碰撞,那就没意义了)
**以太网最短帧长:**以太网规定最短帧长为64B(字节),凡是小于64B的都是由于冲突而异常终止的无效帧
5、总结
5)随机 CSMA/CA协议(了解)
随机访问介质访问控制
1、CSMA/CA协议内容
载波监听多点接入/碰撞避免CSMA/CA (carrier sense multiple access with collision avoidance)
avoidance [əˈvɔɪdəns] 避免
- 为什么要有CSMA/CA?
无线局域网。而CSMA/CD只能应用于总线型以太网
-
无线局域网不能使用CSMA/CD的原因?
-
无法做到360°全面检测碰撞
-
隐蔽站:当A和C都检测不到信号,认为信道空闲时,同时向终端B发送数据帧,就会导致冲突。(当A向B发送数据时,C不知道,于是C也向B发送数据,此时C就叫做隐蔽站)
CSMA/CA 非常有礼貌:不光是先听后发,而且发送每一个数据之前都先等一会儿,如果没人抢话再说话
2、CSMA/CA协议工作原理
3、CSMA/CD 与 CSMA/CA
-
相同点
-
都从属于 CSMA 的思路,其核心是 先听再发
换言之,两个在接入信道之前都须要进行监听。当发现信道空闲后,才能进行接入
-
出现冲突后都会进行 有上限的重传
-
不同点
-
传输介质不同
-
CSMA/CD 用于总线式以太网 [有线]
-
CSMA/CA 用于无线局域网 [无线]
-
载波检测方式不同
因传输介质不同,CSMA/CD 与 CSMA/CA 的检测方式也不同
-
CSMA/CD 通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化
-
CSMA/CA 采用 能量检测(ED)、载波检测(CS) 和 能量载波混合检测 三种检测信道空闲的方式
-
CSMA/CD 检测冲突,CSMA/CA 避免冲突,二者出现冲突后都会进行 有上限的重传
6)轮询 访问
1、介质访问控制回顾
- 信道划分介质访问控制( MAC Media Access Control )协议
基于多路复用技术划分资源
信道固定划分,不会冲突
-
网络负载重:共享信道效率高,且公平
-
网络负载轻:共享信道效率低(双方不说话,信道就浪费了,所以效率低)
-
随机访问MAC协议
用户根据意愿随机发送信息,发送信息时可独占信道带宽
信道并非固定划分,会产生冲突
-
网络负载重:产生冲突开销
-
网络负载轻:共享信道效率高,单个结点可利用信道全部带宽(说话时再分配资源,不说话就不分配资源,不会造成资源浪费,所以效率高)
-
轮询访问MAC协议
又叫 轮流协议 / 轮转访问MAC协议
-
既要不产生冲突,又要发送时占全部带宽
-
轮询协议、令牌传递协议
2、轮询协议(了解)
- 主结点 轮流 “邀请” 从属结点 发送数据
主结点主机轮流询问从属结点主机要不要发送数据,所有结点主机问完一遍以后再重复询问…
询问的过程其实就是发送一个数据帧,用来实现询问的作用。
-
问题
-
轮询开销 (从属结点多的话开销多)
-
等待延迟(如果前三个主机都不发送数据,第四台发送数据。还是要等询问完前三个才询问第四个)
-
单点故障(如果主结点主机宕机,其他从属结点主机也发不了数据了。解决方法:备用主机)
3、令牌传递协议
-
TCU:传递数据帧时的一个转发接口,它可以传递所有经过的帧,为接入站发送和接收数据提供接口
-
令牌
-
一个特殊格式的MAC控制帧,不含任何信息
-
控制信道的使用,确保同一时刻只有一个结点独占信道
-
令牌环网无碰撞(冲突)
-
每个结点都可以在一定的时间内(令牌持有时间)获得发送数据的权利,并不是无限制地持有令牌
-
问题
-
令牌开销
-
等待延迟
-
单点故障(有一个发生宕机就无法通信,如果发生宕机,用替代机解决)
-
应用于令牌环网局域网
-
物理上是星型拓扑,逻辑上是环形拓扑
-
采用令牌传送方式的网络常用于负载较重、通信量较大的网络中
7)MAC协议总结
6、局域网
6.1、基本概念和体系结构
1)局域网内容
局域网( Local Area Network) :简称 LAN
是指在 某一区域 内由多台计算机互联成的计算机组,使用广播式网络传输技术,共享公共通信信道。
-
覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内
-
使用专门铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高( 10Mb/s ~ 10Gb/s)
-
通信延迟时间短,误码率低,可靠性较高
-
各站为平等关系,共享传输信道
-
多采用分布式控制和广播式通信,能进行广播和组播
决定局域网的主要要素为:网络拓扑结构,传输介质 与 介质访问控制方法
2)局域网拓扑结构
总线型拓扑结构比较好,以太网就是逻辑上的总线型拓扑结构,物理上星型拓扑结构
3)局域网传输介质
-
有线局域网 常用介质:双绞线、同轴电缆、光纤
-
无线局域网 常用介质:电磁波
4)局域网介质访问控制方法
1、CSMA/CD协议
常用于总线型局域网,例如以太网,也用于树型网络
2、令牌总线–令牌传递协议
常用于总线型局域网,也用于树型网络
它是把总线型或树型网络中的各个工作站按一定顺序,如按接口地址大小排列形成一个逻辑环。只有令牌持有者才能控制总线,才有发送信息的权力。
3、令牌环–令牌传递协议
常用于环形局域网,例如令牌环网(逻辑上是环型,物理上是星型。物理和逻辑不一定一样)
5)局域网分类
1、以太网
-
以太网是应用最为广泛的局域网,包括标准以太网(10Mbps) 、快速以太网( 100Mbps)、千兆以太网( 1000 Mbps)和10G以太网,它们都符合IEEE802.3系列标准规范。
-
逻辑拓扑为 总线型,物理拓扑是 星型 或 拓展星型(物理星型:中间就是集线器 ,A发送信息还是会传输到集线器的所有端口,所以说是逻辑总线型)
-
使用CSMA/CD介质访问控制协议
2、令牌环网
物理上采用了星形拓扑结构,逻辑上是环形拓扑结构。已是“明日黄花”。因为有一个节点发生宕机,整个环就无法通信,所以造价比较高。使用令牌环介质访问控制协议。
3、FDDI网(了解)
Fiber Distributed Data Interface
物理上采用了双环拓扑结构,逻辑上是环形拓扑结构。
4、ATM网(了解)
Asynchronous Transfer Mode
较新型的单元交换技术,使用53字节固定长度的单元进行交换。
5、无线局域网WLAN
Wireless Local Area Network
-
采用ІЕЕЕ802.11标准
-
使用CSMA/CA介质访问控制协议
6)IEEE802标准
只对应OSI参考模型的数据链路层与物理层
IEEE802系列标准是IEEE802LAN/MAN标准委员会制定的局域网、城域网技术标准(1980年2月成立)。其中最广泛使用的有以太网、令牌环、无线局域网等。这一系列标准中的每一个子标准都由委员会中的一个专门工作组负责
IEEE802现有标准(列举目前需要知道的)
-
IEEE 802.3:以太网介质访问控制协议(CSMA/CD) 及物理层技术规范
-
IEEE 802.5:令牌环网(Token-Ring)的介质访问控制协议(令牌环令牌传递协议)及物理层技术规范。(令牌环有单点故障,呜呜呜555;五环)
-
IEEE 802.8:光纤技术咨询组,提供有关光纤联网的技术咨询。(记:光纤贵,有钱:发发发888)
-
IEEE 802.11:无线局域网(WLAN)的介质访问控制协议(CSMA/CA)及物理层技术规范
7)MAC子层 和 LLC子层
-
IEEE 802标准所描述的局域网模型只对应OSI模型的数据链路层与物理层(所以局域网工作在数据链路层)
-
它将数据链路层划分为 逻辑链路层LLC子层 和 介质访问控制MAC子层
-
MAC子层是与 物理层 相关的,LLC子层是与 网络层 相关的
- LLC子层(Logical link Control:逻辑链路控制)
建立和释放数据链路层的逻辑连接、提供与网络层的接口、差错控制、给帧加序号
LLC报头告诉数据链路层一旦帧被接收到时,应当对数据包做何处理
为网络层提供服务:无确认无连接、面向连接、带确认无连接、高速传送
- MAC子层(Media Access Control:介质访问控制; Media:媒体、媒介)
主要功能包括数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制等
MAC子层的存在 屏蔽了不同物理链路种类的差异性
8)总结
6.2、以太网
第一个局域网
1)以太网概述
以太网(Ethernet) 指的是由Xerox公司创建并由XerOX、Intel和DEC公司联合开发的基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准
-
以太网使用CSMA/CD介质访问控制协议
-
只要是使用 CSMA/CD 介质访问控制协议的局域网就是以太网
-
特点
-
造价低廉(以太网网卡不到100块)
-
是应用最广泛的局域网技术;在局域网各种技术中占统治性地位
-
比令牌环网、ATM网便宜,简单
-
满足网络速率要求: 10Mb/s~10Gb/s
-
两个标准
-
以太网V2(DIX Ethernet V2):第一个局域网产品(以太网)规约。最常用的MAC帧是以太网V2的格式
-
IEEE 802.3:IEEE 802委员会802.3工作组制定的第一个IEEE的以太网标准。( 帧格式有一丢丢改动)(也可以说802.3局域网等价于以太网)
2)无连接 不可靠的服务
-
无连接:发送方和接收方之间无 ”握手过程”
-
不可靠:不对发送方的数据帧进行编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层(传输层)负责
-
总结以太网:以太网 只实现无差错接收(负责物理层和链路层之间),没有差错控制,不实现可靠传输
3)传输介质 与 拓扑结构 发展
4)以太网传输介质
以太网常用的传输介质有4种:粗缆、细缆、双绞线和光纤。各种传输介质的适用情况见下表。
10base-T(重点)
是传送基带信号的双绞线以太网,T 表示采用双绞线,非屏蔽双绞线(UTP:unshielded twisted pair)
unshielded [ʌnˈʃildɪd] 无屏蔽的;无防御的
twist: n. 转动,旋转,拧; twisted: adj. 扭曲的
pair: n. 一对,一双,一副
-
传输速率:10Mb/s
-
拓扑结构:物理上采用星型拓扑,逻辑上总线型(物理星型:中间就是集线器 ;逻辑总线型:A发送信息还是会传输到集线器的所有端口,所以说是逻辑总线型,属于一个冲突域)
-
介质访问控制协议:采用CSMA/CD介质访问控制协议。(只有当以太网工作于半双工方式下时,才需要CSMA/CD协议来应对冲突问题,速率小于等于1Gb/s 的以太网可以工作于半双工或全双工方式,而速率大于等于10Gb/s的以太网只能工作于全双工方式下,因此没有争用问题,不使用CSMA/CD协议。)
5)适配器 与 MAC地址
-
计算机与外界局域网的连接是通过**网络适配器(Adapter)**的
-
网络适配器又称为网络接口板、网络接口卡NIC (network interface card)(我们常说的网卡)
NOW,不再使用单独网卡。(现在的计算机主板上都已经嵌入了适配器,不会再单独使用网卡了)
-
适配器上装有 处理器 和 存储器 (包括RAM:随机存储器和ROM:只读存储器)
-
Random access memory:随机存储器。access:(对计算机存储器的)访问 memory:n. 记忆,记忆力;内存,[计] 存储器
-
Read only memory:只读存储器
ROM上有计算机硬件地址:MAC地址。(数据链路层上标识每一个设备的标识符)
-
在局域网中,硬件地址 又称为 物理地址,或 MAC地址。[ 实际上是标识符]
-
MAC地址:每个适配器有一个全球唯一的48位二进制地址(6B),前24位代表厂家(由IEEE规定),后24位厂家自己指定。常用12个十六进制数表示,如02-60-8c-e4-b1-21。248 = 24*12 = 1612
MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址
-
在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址
-
MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址
6)MAC帧(MAC子层)
MAC帧的格式:
- 以太网V2,最常用的MAC帧格式
- IEEE 802.3
以太网MAC帧:
-
在链路层对IP数据报进行封装:封装的过程就是加头加尾(头:目的地址,源地址,类型;尾:FCS,frame Check Sequence(帧校验序列),俗称帧尾)
-
为了使接收端可以迅速实现位的同步(发送方和接收方能够保持发送和接收的同步),则需要从MAC层传到物理层的MAC帧前面插入8B的前导码。前导码前面比特位1010…类似齐步走的1212,使得发送方和接收方能够进行同步,帧开始定界符最后的两个比特位11就是发送方告诉接收方可以开始接收我的MAC帧了。
MAC帧组成 :
-
目的地址(6B):
-
单播地址(专有的MAC地址)
-
广播地址(比特位全1,发送给全部主机)
-
多播地址(了解即可)
-
源地址(6B):设备本身的MAC地址
-
类型:指明网络层使用的协议,以便把收到的MAC帧的数据上交给上一层的协议
-
数据:长度46B~1500B
46B:CSMA/CD协议中提过最小帧长,以太网最小帧长是64B,64-6-6-2-4 = 46
1500B:链路层的最大数据传输单元MTU
- FCS:CRC循环冗余检验中的冗余码/FCS帧校验序列
注意:为什么目的地址和源地址的大小为6B(包括局域网MAC帧的地址),因为MAC地址:每个适配器有一个全球唯一的48位二进制地址,48bit就是6B
物理层:物理层中为什么头部插入8B前导码中有一个帧开始定界符,而后面却没有帧结束定界符呢?因为以太网使用的编码形式是曼彻斯特编码,曼彻斯特编码的一个特点就是在每一个比特内都会有两个码元,所以只要发送数据就能感受电压的变化,不发数据的时候电压就不会变化,这样我们就能知道以太网MAC帧结束的位置,在结束位置再向前推四个字节(以太网MAC帧的后四个字节是FCS)就能知道数据结束的位置
与IEEE 802.3格式的区别:
-
第三个字段是长度/类型
-
当长度/类型字段值小于0x0600时,数据字段必须装入LLC子层
7)高速以太网
全双工方式下工作无冲突
速率 >= 100Mb/s 的以太网称为 高速以太网
1、100base-T(交换机)
-
在双绞线(T)上传送100Mb/s(100B)基带信号的星型拓扑以太网,仍使用IEEE802.3的CSMA/CD协议。因为在100base-T中还是会发送冲突
-
支持全双工和半双工,可在全双工方式下工作而无冲突。(星型拓扑结构的中心节点变成了交换机,每一台主机都可以发送,发送的同时可以接收。因为交换机后面会讲到可以隔离冲突域,所以每一个交换机的端口都是一个冲突域,因此一个主机在一个冲突域中不会发生冲突,所以在全双工下无冲突也就不需要使用CSMA/CD协议。)
2、吉比特以太网
-
在 光纤 或 双绞线 上传送1Gb/s信号
-
支持全双工和半双工,可在全双工方式下工作而无冲突
3、10吉比特
-
10吉比特以太网在光纤上传送10Gb/s信号
-
只支持全双工,无争用问题
8)总结
6.3、无线局域网
1)IEEE 802.11
无线局域网通用标准
无线局域网(几千米)覆盖的范围要比WIFI(一间屋子)大得多,满足b和g定义的标准就是WIFI
2)802.11 MAC帧头格式
802.11MAC帧头WDS功能的组成:
先引入基站(AP)的概念:A手机 和 B手机 进行通信,A手机附近有一个基站APa(AP:无线接入点即基站),B手机附近有一个基站APb
接收:receive
发送:transmit 自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
- 第一部分:Java基础-中级-高级
- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)
- 第三部分:性能调优(JVM+MySQL+Tomcat)
- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取! )
无线局域网(几千米)覆盖的范围要比WIFI(一间屋子)大得多,满足b和g定义的标准就是WIFI
2)802.11 MAC帧头格式
802.11MAC帧头WDS功能的组成:
先引入基站(AP)的概念:A手机 和 B手机 进行通信,A手机附近有一个基站APa(AP:无线接入点即基站),B手机附近有一个基站APb
接收:receive
发送:transmit 自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-eQJ1qNDA-1713553960215)]
[外链图片转存中…(img-KIsk0nph-1713553960218)]
[外链图片转存中…(img-yLetXlTW-1713553960220)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
- 第一部分:Java基础-中级-高级
[外链图片转存中…(img-x5ImIUra-1713553960221)]
- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)
[外链图片转存中…(img-7dtayo5J-1713553960223)]
- 第三部分:性能调优(JVM+MySQL+Tomcat)
[外链图片转存中…(img-YmGxMkIw-1713553960225)]
- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
[外链图片转存中…(img-LMSujX0Q-1713553960226)]
- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
[外链图片转存中…(img-MPBMf57k-1713553960228)]
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
[外链图片转存中…(img-ZQZ5QLcZ-1713553960230)]
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
[外链图片转存中…(img-ZFb9gfZP-1713553960232)]
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
[外链图片转存中…(img-Hiz7Z6Xd-1713553960233)]
[外链图片转存中…(img-hSlIRBjL-1713553960235)]
[外链图片转存中…(img-eo8lnnQQ-1713553960236)]
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
[外链图片转存中…(img-B48WJ0Hj-1713553960238)]
[外链图片转存中…(img-pvjcN27j-1713553960239)]
[外链图片转存中…(img-OYqr9pcc-1713553960240)]
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
[外链图片转存中…(img-fxKEbJps-1713553960242)]
[外链图片转存中…(img-u157bIl1-1713553960243)]