目录
- 知识框架
- No.0 引言
- No.1 功能
- 零、基本功能概念
- 一、封装成帧
- 1、字符计数法
- 2、字符填充法
- 3、零比特填充法
- 4、违规编码法
- 二、透明传输
- 三、差错控制
- 1、位错
- 1.1、奇偶校验码
- 1.2、循环冗余码CRC
- 2、帧错
- 2.1、海明码
- 四、流量控制
- 1、停止-等待协议
- 2、滑动窗口协议
- 2.1、后退N帧协议(GBN)
- 2.2、选择重传协议(SR)
- 五、可靠传输
- No.2 应用
- 一、两种链路/信道
- 1、点对点(广域网)
- 2、广播(局域网)
- 2.1 -信道划分介质访问控制-频分多路复用FDM
- 2.2 -信道划分介质访问控制-时分多路复用TDM
- 2.3 -信道划分介质访问控制-波分多路复用WDM
- 2.4 -信道划分介质访问控制-码分多路复用CDM
- 2.5 轮询访问介质访问控制令牌传递协议
- 2.6 随机访问介质访问控制-ALOHA协议
- 2.7 随机访问介质访问控制-CSMA协议
- 2.8 随机访问介质访问控制-CSMA/CD协议
- 2.9 随机访问介质访问控制-CSMA/CA协议
- 二、局域网基本概念和体系结构
- 1、局域网
- 2、以太网
- 3、无线局域网
- 4、VLAN的基本原理和基本概念
- 5、广域网及其相关协议PPP
- 二、链路层设备
- 1、交换机
- 2、网桥
知识框架
No.0 引言
第三章的计算机的数据链路层和第四章的网络层是计算机网络中最重要的两个章节。
那么这个数据链路层有什么功能呢??
首先复习下总体架构:如下图所示:以及文字描述。
然后是本章的研究思路思想:。
但是我们在进行数据链路层这单一层的时候,只关注三个系统中的水平方向的各个数据链路层的协议问题。
所以当A主机给B主机发生数据的时候,我们可以想象直接是A的数据链路层到中间系统的数据链路层再到B的数据链路层。
A给B发信息:
首先信息被应用层封装
然后被传输层封装
然后被网络层封装
然后被数据链路层封装
最后在物理层转化为0101比特流的形式放到链路上进行传输。
到中间系统:
信息到物理层解封装
信息到数据链路层解封装
信息到网络层解封装
信息到网络层进行封装
信息到数据链路层进行封装
信息到物理层进行封装
到B系统:
信息到物理层解封装
信息到数据链路层解封装
信息到网络层解封装
信息到传输层解封装
信息到应用层解封装
最终到B;
No.1 功能
零、基本功能概念
网络:在这个图中是有三个网络。切记理解,
在这张图中,每个云差不多就是一个网络,然后每个网络里面有主机和路由器和链路。
下面是基本概念:
1:结点:主机、路由器
2:链路﹔网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
当然这个链路强调的是物理层面的链路,是用来做传输通道的链路。物理层面的。
3:数据链路﹔网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
所以说数据链路是升级版??然后 实现协议的硬件+软件 再加上实体==石头变圣子??
4:帧:帧:链路层的协议数据单元,封装网络层数据报()。
那么总的来说:数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。
相当于圣约的功能:它的主要职责就是把上层网络层交付给他的数据报,安全的无差错的传给它的相邻节点。
数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
为了防止物理层在传输原始比特流的时候出现大的差错进行防范,以及出现大的差错的时候实施补救措施。这都是数据链路层的工作;就跟物理层就只是在无脑力的机器人,只会按照指令做事情;外部影响没办法应对。而且好像也只是两个系统的数据链路层的进行交互。未雨绸缪,把可能出现的差错都提前预知好,然后进行一定的差错控制;总的来说就是相当于给网络层提供了一个无差错的一种服务,让网络层大老板觉得从始至终都没有发生什么差错。
将网络层给的数据报进行加工和处理;然后再递交给物理层;为了防范于未然进行加工和处理;
总结功能:
- 功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。
- 无确认无连接服务:通常用于实时通信or误码率比较低下的通信即两个主机进行通信的时候不用事先跟目的主机建立好一个链路的连接啊,而且这个目的主机呢收到了数据帧的时候也不需要返回确认。而且如果真的数据丢失了,数据链路层也不负责重发,而直接交给上一层传输层处理,这种服务是不太负责任的。但是权衡利弊实时通信就基本不需要。(就跟老板给的钱不够,没必要太认真负责一样)
- 有确认无连接服务:即两个主机进行通信的时候不用事先跟目的主机建立好一个链路的连接啊,但是呢目的主机在收到数据的时候必须要发回一个确认,那如果原主机发现在规定的时间内没有收到你这个确认信号,他就把刚才没有收到确认的这个帧重新传输一次。这样就提高了链路层的数据可靠性了。这样的服务适合于误码率相对较高的通信信道比如说无线通信。
- 有确认面向连接服务:最安全最可靠的,事先要建立好连接,然后其次,接收端目的机器接收到帧后还要回复确认帧,发送端看到这个确认帧才能继续发下一个帧数据。
- 功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
- 功能三:组帧。
- 功能四:流量控制:比如慢点发,接收端已经没有能力接收了。
- 功能五:差错控制(位/帧错):对应两种错误都有对应的手段提前设置好
一、封装成帧
封装成帧就是帮我们过渡一下物理层到链路层,我们物理层传输的是一个一个bit,
那么我们在链路层这个层级,就需要把比特封装成帧。以帧为单位。
几个bit为一组,放到一个帧里面,这个就是数据链路层的一个传输单位。
将网络层给的数据报进行加工和处理;然后再递交给物理层;为了防范于未然进行加工和处理;
如何加工呢?::其实就是把网络层的ip数据报夹头夹尾形成链路层的数据传送单元也就是帧。
即IP数据报成为了帧的数据部分。
官方话:封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。
其中的一个字节的帧定界符才是实现这一个重要作用帧定界。
其它:实现差错控制的信息
其它:流量控制的信息
其它:物理地址的信息
首部和尾部的标记:其实就是在首部和尾部内添加一个字段或者说一个字节然后这个字节叫做:帧定界符;
根据这个帧定界符,接收端就可以这个帧的开始和结束。
帧的发生就是从帧的首部开始,到帧的尾部结束。
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
组帧:在发送端做的过程,帧同步是在接收端做的过程。
为了提高帧的传输速率,要使得帧的数据部分尽可能大,但是不能很大,数据部分有个上限的。
当然根据不同的协议:MTU的长度是不一样的。
然后组帧有四种常见的方法方式:1.字符计数法,2.字符(节)填充法,3.零比特填充法,4.违规编码法。
由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违规编码法。
1、字符计数法
帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数。 即传输的这个帧的大小在第一个位置就说明。
缺点:容易出错:比如第一个字节发生了错误,从5变成了4就不行了;接收双方就失去了同步。
2、字符填充法
SOH:就是帧首部的第一个标志的开始的字节。
EOT:就是帧尾部的结束字节。
根据不同的协议这两个的8位bit组合可以不同:比如SOH:00000001、EOT:00000100
当传送的帧是由文本文件组成时(文本文件的字符都是从键盘上输入的,都是ASCII码)不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输。因为没有会与SOH/EOT 相同的8位bit的重复的;
当传送的帧是由非ASCll码的文本文件组成时(二进制代码的程序或图像等)。就要采用字符填充方法实现透明传输。
上面介绍了最开始的字符填充,会出现错误;下面是改进的字符填充:
数据部分内部出现了EOT等信息;那么如何实施措施来实现透明传输呢?
::其实就是在这些控制信息的字符前面加上—个转义字符;
::这个转义字符也是一个8位的bit组合。
::添加这个转义字符就是在告诉接收端
做完了字节填充就可以从首部开始发送了。接收端接到之后然后把所有的转义字符再删掉。最后得到原始数据。
3、零比特填充法
这个和上面的区别是 首部和尾部的标志符是一样的,都是01111110。
也是要解决 帧的数据部分内 出现 01111110 这个字节的时候怎么办??
操作:对于数据部分:1、在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0。
⒉在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的O删除。
保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
4、违规编码法
二、透明传输
透明传输想要表达的:不管我们封装好的帧,里面的bit是怎么样的一个组合,我们都可以把它顺利的传输过去
所以表现的就是:链路层好像看不见它传输的帧里面到底是一个怎么样的bit序列,所以用透明。不管怎么样都可以传输过去。
官方话:透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。
当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。像上面这种现象出现就实现不了透明传输了,即需要采取措施来实现透明传输。
三、差错控制
那我们在链路层传输的时候呢,可能会发生一定的差错;那么链路层就要对此进行有所措施。
这个差错主要是由于噪声引起的;会导致 位错和帧错
原因分为全局性噪声+局部性噪声:
全局性1.由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
解决办法:提高信噪比来减少或避免干扰。(对传感器下手);这样降低误码率,
误码率就是发生差错的比特占总发生比特的比率。
局部性⒉.外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。就像忽然被打了一拳。
解决办法:通常利用编码技术来解决。当然差错也是分类的:位错和帧错
位错::【比特位出错,1变成0,0变成1。】
帧错::以帧为单位发生了错误。类别:帧丢失、帧重复、帧失序;
分别是检测这个错误或者是纠正这个错误
1、位错
bit发生了错误
解决办法:
1:检错编码:能够检查出错误。发现错了然后重传帧
2:纠错编码:不仅能检查出错误,还能纠错
链路层为网络层提供服务:无确认无连接服务【通信质量好,有线传输链路】
: 有确认无连接服务,有确认面向连接服务【通信质量差的无线传输链路】
就是按需看看是不是要整 确认重传机制神恶魔的。差错控制(比特错)::检错编码+纠错编码
检错编码:奇偶校验码+循环冗余码CRC
纠错编码:海明码
1.1、奇偶校验码
1的个数是奇数还是偶数是两种的规则:
就是发送方和接受方他们两个共识的一个规则
1.2、循环冗余码CRC
什么是冗余编码呢?
在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。
除了我们要发送的数据呢,还要加上几位检验位。这几位就是冗余码。
冗余码和原来的数据可以构成某种规则。这样的组合发出去后,接收方就按照和发送方共识的这个规则来检查是不是有问题。
那么检验的数据是哪部分的数据呢?
其实是这样的:是IP数据报好像;就是帧内部数据进行检验、
在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。“凡是接收端数据链路层接收的帧均无差错”。(假定)
“可靠传输”:数据链路层发送端发送什么,接收端就收到什么。
链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。(因为有一些帧被丢弃了)
- 简单的例子说就是:有几个重要的信息:
- 原始数据、生成多项式、余数这三个东西:
- 要注意生产多项式 是题目给的;
- 然后还有就是 注意生成多项式是 r+1位;即加0的位数比生成多项式少1;
- 平常是做减法,但是这里是做异或:即上下两个数不同为1,相同为0;
- 然后开头的0可以像减法那样去掉了。
例子:
冗余码:也叫FCS;
CRC呢:是一种检错的方式方法罢了
接收端检错过程
1、把收到的每一个帧都除以同样的除数,然后检查得到的余数R。1.余数为0,判定这个帧没有差错,接受。
2、余数为不为0,判定这个帧有差错(无法确定到位),丢弃。FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输。
2、帧错
就是帧出现了错误:比如帧重复发了,乱序了,丢了,发错了等等
通过定时器和编号机制来检出是否有出错。
对帧编号,然后确认重传机制来解决帧做的问题。
如果出错就把帧 重修传输就可以了
对于接收方来说:如何帧正确,就回一个确认帧;
如果有问题就不发生确认帧,那么发送方在规定时间内没有收到确认帧就再次发一次。
当然并不是所有的都是这种服务协议;毕竟根据上面所说的那样并不是所有的都需要回复的;
链路层为网络层提供服务:无确认无连接服务【通信质量好,有线传输链路】
: 有确认无连接服务,有确认面向连接服务【通信质量差的无线传输链路】
就是按需看看是不是要整 确认重传机制神恶魔的。
2.1、海明码
在检错编码奇偶校验码的基础上:提出的海明码。
奇偶校验码的 缺陷:只能检查出来 奇数个位数的错误,检查不出偶数个位数的错误
海明码:1发现错误、2找到位置、3纠正错误
同样海明码对于检错的时候也要加冗余码:对于奇偶校验只需要1位,CRC也是需要几位;(两种都是附在最低位)。
下面是工作流程:
- 确定校验码位数r
- 确定校验码和数据的位置
- 求出校验码的值
- 检错并纠错
- 然后那么接收端如何借助海明码发现是否有错误?以及如何纠正整个错误?
海明距离:两个合法编码(码字)的对应比特取值不同的比特数称为这两个码字的海明距离(码距),一个有效编码集中,任意两个合法编码(码字)的海明距离的最小值称为该编码集的海明距离(码距)。
比如 000 和001 那么海明距离是1;因为只有一个位数上的数字不同。
因为这里主要是设定这个 编码集的海明距离;即找到该编码集的最小的海明距。
毕竟假设 最小的 为2,那么如果发现传过来的编码和其它的为1那么应该就是差错的。
第一步:1.确定校验码位数r
假设:数据/信息有m位,冗余码/校验码有r位
校验码一共有2^r 种取值(说明可以判断2^r 个位置 是否 发送 了 错误)
海明不等式:2^r>=m+r+1 (用来求r根据不等式)
发送的数据D=1100
数据的位数m=4,满足不等式的最小r为3,
也就是D=1100的海明码应该有4+3=7位,其中原数据4位,校验码3位。
第二步:2.确定校验码和数据的位置
海明码分为:数据位+校验位;先把第一步求得总位数挖好空。
而对于校验位:规定都放在序号为二的n次方的位置上
而对于数据位:就按照数据填写上。
第三步:3.求出校验码的值
首先对第二步骤进行整理;:即将序号整成2进制表示形式。
然后根据校验位的负责数据进行分组:
然后使用偶校验 进行 使得各个负责的 那一组合符合偶数个1;
也就是说比如 校验位4 负责4,5,6,7的校验,那么 就是7654这四位的数据满足偶数个1;4是校验位;一个小的奇偶校验好像。
第四步:4.检错并纠错:
在接收方接收数据后:
首先根据各个检验码的负责进行奇偶校验来判断该检验码负责的位数有没有出错。
如果出错:纠错方法一:找到不满足奇/偶校验的分组取交集,并与符合校验的分组取差集。
纠错方法二:如图所示,好像并没有解释。
四、流量控制
就是在控制发送方的流量,发生这个帧要控制住速度,慢慢来。这样才能避免这个帧丢失,接不住等错误
会有几种协议;就是为了流量控制得到保证的协议
接收方呢它是要控制发送方的发送速率。目的:这样就可以正确地接收到发送方发来的数据
可能发送方发送的数据接收方接收不到,直接没了。
官方话:较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作
流量控制不仅在链路层有,在传输层也有。
主要区别:数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的
因为中间系统是没有传输层的;
所以:链路层:负责的是相邻两个节点的;数据链路层流量控制手段:接收方收不下就不回复确认。
传输层:负责的是两个系统端的。;传输层流量控制手段:接收端给发送端一个窗口公告。
那么就要出现协议了,规定这个方法;
停止-等待协议::发送窗口大小=1,接收窗口大小=1;
后退N帧协议(GBN)::发送窗口大小>1,接收窗口大小=1;
选择重传协议(SR)::发送窗口大小>1,接收窗口大小>1;
1、停止-等待协议
最开始的数据链路不是很好,链路层就要负担起可靠传输的作用使用三种协议;
但是随着通信链路的越来越好,这些就挪到传输层了。
一种特殊的 滑动窗口协议:窗口是1;
每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。
优点:简单
缺点:信道利用率太低。
1.为什么要有停止-等待协议?
- 除了比特出差错,底层信道还会出现丢包问题。
- 丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失。
- 为了实现流量控制
⒉研究停等协议的前提?
- 虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)。
- 因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。
- “停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。
3.停等协议有几种应用情况?
1:无差错情况和2:有差错情况。
- 无差错情况
- ACK即确认; 且相同的编号不一样的帧。
- 有差错情况:数据帧丢失或检测到帧出错
- 超时计时器:每次发送一个帧就启动一个计时器。超时计时器设置的重传时间应当比帧传输的平均RTT更长一些。
- 虚线表示没有;计时器到期之后再发一次。
- 1.发完一个帧后,必须保留它的副本。⒉数据帧和确认帧必须编号。
- 有差错情况:确认帧ACK丢失。
- 有差错情况:确认帧ACK迟到。。
- 那么如果出现上次的迟到的ACK在第二次重传之后不一会再到呢?
- 如果出现2的情况就直接从此刻传递下一个帧就行了。
2、滑动窗口协议
为每个帧都进行编号;重复的一组一组的编号
发送窗口:我们正在发送的数据。
接收窗口:我们正在接收的数据、
过程大概就是:发送方发送0号序列帧
接收窗口接收之后回复一个确认帧,然后窗口往后移动。移动到1
发送方在收到确认帧之后,也往后移动,然后发送1号序列帧。
(其实发送方可以连续发送滑动窗口内的规格内的,但是只有收到一个确认帧才能往后挪一个位置)
(不是必须 发送一个等一个确认帧才发送滑动窗口内的第二个;确认帧主要是为了窗口移动不是帧发送)
2.1、后退N帧协议(GBN)
出现现在这样的协议代表着停止-等待协议是有大缺陷的;
由于发送方需要等待接收方返回确认帧,所以我们的发送方的发送数据的时间很小。
举个例子:要是发送方发送极快,那么一天可能就1个小时在发送数据。其它时间都在等待,这是非常浪费资源的。
也就是说这个发送方太闲了,信道利用率太低了,那么如何提高呢???
:: 这个时候可以每次发多个帧,出现了流水线技术。(多个帧同时发生)
::①:必须增加序号范围:即每次发送基本都是多个编号的帧同时发送
::②:必须发送方缓存多个分组:即因为有部分可能需要重传
好像这个流水线技术就是滑动窗口的功能体现了。
下面是GBN的滑动窗口的介绍:
- 首先啊给我们需要发送的帧进行编号;可重复,可反复利用。
- 发送窗口:发送方维持一组连续的允许发送的帧的序号。
- 即发送方此时想要发送的数据必须在滑动窗口内,后面的此刻还不能发送
- 同时接收方也要维护一个这样的窗口:接收方维持一组连续的允许接收帧的序号。
- 在后退N帧协议中我们固定 接收窗口为 1 ;
- 下面是发送步骤和过程:
- ①:发送方发送0号帧,然后还会Copy一个0号帧,保留;
- ②:在发送0号帧的同时,相继发送在滑动窗口内的帧,同时Copy保留。
- ③:接收方接收到0号帧之后返回一个确认帧,ACK 0;
- ④:发送方接收到ACK 0 ;之后发送和接收滑动窗口就往后挪移个位置。
- 上面的这样步骤啰嗦就像停止-等待协议了,所以出现了累计确认;
- 即接收方不需要逐一的去确认,只需要去确认最后的那个就可以了吗?
- 比如前面的012都不返回ACK,只返回了ACK 3;代表了前面的也正确接收到了。
- 下面的发送窗口的四大部分。
GBN发送方必须响应的三件事情:
:
- 上层的调用:来自网络层的调用即网络层要求发送数据,传过来数据让你发。
- 上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。
- 收到了一个ACK确认帧
- GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方已经收到n号帧和它之前的全部帧。
- 即在GBN协议中不需要对每一个帧都返回一个确认帧,可以隔一会发送在最新的ACK。
- 超时事件;
- 协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有己发送但未被确认的帧。所有的连续的帧。
- 接收方在接收到0号帧后期望接收到1号帧,但是1号帧没有来,等到了2号帧和3号帧,那么接收方是不会接收2号帧和3号帧的。
- 在计时器到了之后发送方还没有收到1号帧的确认帧,就会重传1、2、3号帧。
GBN接收方必须响应的三件事情:
:
- 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK n,并将该帧中的数据部分交付给上层。
- 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)。比如:0 1 2 4 5 那么直接把4 5帧丢弃掉。
两者总结:GBN协议重点总结:
滑动窗口的长度问题::?窗口长度可以无限大吗?
::很明显是不可以的:比如对帧进行编号的时候,假设使用了n个bit位,那么整个滑动窗口内就不能有重复的编号的帧;
采用n个比特对帧编号那么发送窗口的尺寸W,应满足:1≤W≤2^n-1。因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。
1.累积确认(偶尔捎带确认)
2接收方只按顺序接收帧,不按序无情丢弃3.确认序列号最大的、按序到达的帧
4.发送窗口最大为2n-1,接收窗口大小为1优点:因连续发送数据帧而提高了信道利用率(围绕了信道利用率。)
缺点:在重传时必须把原来已经正确传送的数据帧重传,是传送效率降低。然后引出来选择重传协议。
2.2、选择重传协议(SR)
上面的GBN虽然累计确认很好,提高了信道利用率,
但是也有缺陷:批量重传,就很多进行重复传了。
可不可以只重传出错的帧????
解决办法:设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。
下面是SR协议的滑动窗口的机制。
如下:用了3bit位来为帧进行编号。
发送方:滑动窗口>1
接收方:滑动窗口>1
-
发送方:分为四大部分;
-
接收方:对于收到且确认的,先放到缓存里面;等到前面的也接收了一块发送给网络层。
SR发送方必须响应的三件事:
:
- 上层的调用:即网络层要求调用进而发送数据;
- 从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
- 收到了一个ACK确认帧
- 如果收到ACK,加入该帧序号在窗口内,则sR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
- 超时事件:
- 每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
SR接收方需要做的事情:
:
- 来者不拒;对于接收窗口内的帧来者不拒。
- SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧**【收谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口**。
- 当然如果是对于窗口左边的帧来了要返回一个ACK,因为可能是ACK丢失了发送方没有收到确认帧。
两者总结:SR协议重点总结:
记得”缓存“这个东西。
滑动窗口的长度可以是无限的么?发送窗口最好等于接收窗口。(大了会溢出,小了没意义)
当然不是:发送窗口发送的可能是 无法识别是 旧帧还是新的帧。
1.对数据帧逐一确认,收一个确认一个
2.只重传出错帧
3.接收方有缓存
4.最大的发送窗口和最大的接收窗口应该相等==2^(n-1)。
五、可靠传输
也差不多是为了满足 差错控制
流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。
滑动窗口解决::流量控制(收不下就不给确认,想发也发不了)
::可靠传输(发送方自动重传,规定时间,超时自动重发)
No.2 应用
一、两种链路/信道
在数据传输的过程中主要有两种链路:点对点链路+广播式链路
1、点对点(广域网)
常在广域网中经常使用的信道or通信方式;常应用到广域网中。
两个相邻节点通过一个链路相连,没有第三者。应用:PPP协议,常用于广域网。
2、广播(局域网)
所有主机共享通信介质。比如人们说话的共用通信介质:空气。
应用:早期的总线以太网、无线局域网,常用于局域网。
典型拓扑结构:总线型、星型(逻辑总线型);对于总线型是广播的方式;都能传播到,然后看看物理地址是不是我自己然后选择是否接收。而星型是比总线型更加稳定的。
要使用介质访问控制:大概就是说在一个局域网里面,我要给你发送信息,怎么要才能避免别人要发动这个信息和我发的信息发生碰撞;导致你那边收不到;
为了解决这一系列复杂的问题,要使用介质访问控制,让所有人都可以有序的使用这个广播信道。
介质访问控制的内容就是,采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。
介质访问控制:1静态划分信道+2动态划分信道。
静态划分信道:在信息数据还未发送的时候,就规定好信道如何使用对于各个节点之间。
动态划分信道:只有到遇到冲突的时候及时的控制住,及时的解决掉。特点:信道并非在用户通信时固定分配给用户。
对于随机访问介质访问控制:所有用户可随机发送信息。发送信息时占全部带宽。那么可能会因为不协调出现冲突问题;那么这个时候就需要协议来解决这些冲突问题。
静态划分信道–信道划分介质访问控制:使用同一个共享信道。
信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。
多路复用技术:
把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率。把一条广播信道,逻辑上分成几条用于两个节点之间通信的互不干扰的子信道,实际就是把广播信道转变为点对点信道。
因为有介质访问控制,并不需要担心共享信道内互相之间的干扰;
复用器:相当于把传输的信号拧成一捆放到共享信道上进行传输。
分用器:就是把合起来的信号再次分开了;分别送到对应的终点。
比如下面的图:
多个要发的信息拧成一捆。
2.1 -信道划分介质访问控制-频分多路复用FDM
划分不同的频率段。每个频率段分给一个用户。
用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资源。
所以就算是把这些放到一个共享信道上面也能够分出谁是谁;并且不会打架。
优点:充分利用传输介质带宽,系统效率较高;由于技术比较成熟,实现也比较容易。
2.2 -信道划分介质访问控制-时分多路复用TDM
交替使用信道;
将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信首
并不是链路层的帧,是物理上进行划分的帧。
频分复用—―“并行”
时分复用——“并发”
2.3 -信道划分介质访问控制-波分多路复用WDM
波分多路复用就是光的频分多路复用,在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
2.4 -信道划分介质访问控制-码分多路复用CDM
2.5 轮询访问介质访问控制令牌传递协议
2.6 随机访问介质访问控制-ALOHA协议
所有用户可随机发送信息。发送信息时占全部带宽。
那么可能会因为不协调出现冲突问题;那么这个时候就需要协议来解决这些冲突问题。
分为纯ALOHA协议和时隙ALOHA协议;明显时隙ALOHA协议是对纯ALOHA协议的改进。
纯ALOHA协议思想:不监听信道,不按时间槽发送,随机重发。也就是说想发就发,成不成功先不管。
下面图示例:
每个站点也就是每个主机:
冲突如何检测?
如果发生冲突,接收方在就会检测出差错,也就是接收到错误的数据,然后返回个NAK,否定确认帧,或者说不回复,那么在一定的时间内,发送方在一定时间内没收到回复。,然后不予确认,发送方在一定时间内收不到就判断发生冲突。冲突如何解决?
超时后等一随机时间再重传。直至收到确认帧。
时隙ALOHA协议的思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。控制想发就发的随意性
冲突如何检测?
如果发生冲突,接收方在就会检测出差错,也就是接收到错误的数据,然后返回个NAK,否定确认帧,或者说不回复,那么在一定的时间内,发送方在一定时间内没收到回复。,然后不予确认,发送方在一定时间内收不到就判断发生冲突。冲突如何解决?
超时后再重传。直至收到确认帧。
2.7 随机访问介质访问控制-CSMA协议
所有用户可随机发送信息。发送信息时占全部带宽。
那么可能会因为不协调出现冲突问题;那么这个时候就需要协议来解决这些冲突问题。
载波监听多路访问协议CSMA (carrier sense multiple access)
CS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
协议思想:发送帧之前,监听信道。
监听结果:1:信道忙,推迟发送 2:信道空闲:发送完整帧
而根据不同的处理方式也是不同协议进行划分:1-坚持CSMA,非坚持CSMA,p-坚持CSMA、
1-坚持CSMA:
1-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。
空闲则直接传输,不必等待。
忙则一直监听,直到空闲马上传输。
如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程。
优点:只要信道空闲,站点就马上发送,避免了介质媒体利用率的损失。
缺点:,假如有两个或两个以上的站点有数据要发送,冲突就不可避免。缺点是因为所有采用这个协议的都在监听着,当监听到信道空闲就都往信道上发送数据了,容易冲突。
非坚持CSMA:
非坚持指的是对于监听信道忙之后就不继续监听。
非坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。
空闲则直接传输,不必等待。
忙则等待一个随机的时间之后再进行监听。
优点:采用随机的重发延迟时间可以减少冲突发生的可能性。
缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低。
p-坚持CSMA、
应用于时隙信道?
p-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。
空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输。
忙则持续监听直到信道空闲再以p概率发送。
若冲突则等到下一个时间槽开始再监听并重复上述过程。
优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案。缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费。
2.8 随机访问介质访问控制-CSMA/CD协议
所有用户可随机发送信息。发送信息时占全部带宽。
那么可能会因为不协调出现冲突问题;那么这个时候就需要协议来解决这些冲突问题。
在发送数据的时候也要进行信道的监听,这样就可以补缺CSMA协议的缺点。
2.9 随机访问介质访问控制-CSMA/CA协议
所有用户可随机发送信息。发送信息时占全部带宽。
那么可能会因为不协调出现冲突问题;那么这个时候就需要协议来解决这些冲突问题。
二、局域网基本概念和体系结构
在第一章节的时候我们学习计算机网络的分类的时候:按照分布范围也就是通信的距离,
我们会把网络分为局域网、广域网、城域网、个人区域网
1、局域网
局域网(Local Area Network):简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。并不是点对点信道。
下面是局域网的特点:
而下面的这些局域网特点特性主要是这三个主要要素决定的:网络拓扑,传输介质与介质访问控制方法。
- 特点1:覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。比如教室等。几千米之内。
- 特点2:使用专门铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高(10Mb/s~10Gb/s)。在这里列的是有线的传输介质,当然局域网也有无线局域网,那个时候的传输介质就是电磁波之类的东西 了好像,
- 特点3:通信延迟时间短,误码率低,可靠性较高。因为覆盖范围比较小,所以传输时间短,信号就很难被衰减的。
- 特点4:各站为平等关系,共享传输信道。
- 特点5:多采用分布式控制和广播式通信,能进行广播和组播。
局域网的网络拓扑结构:主要分为四种;常考的是前面三种。
对于星型拓扑通常会问会有几条链路相连呢?
局域网的传输介质:分为有线和无线的。
- 有线局域网:常用介质:双绞线、同轴电缆、光纤
- 无线局域网常用介质:电磁波
局域网的介质访问控制方法:
- CSMA/CD:常用于总线型局域网,也用于树型网络
- 令牌总线:常用于总线型局域网,也用于树型网络
- 它是把总线型或树型网络中的各个工作站按一定顺序如按接口地址大小排列形成一个逻辑环。只有令牌持有者才能控制总线,才有发送信息的权力。
- 令牌环:用于环形局域网,如令牌环网
- 它的逻辑上的拓扑结构是环形的,但是物理上的拓扑结构是星型的。
- 所以物理拓扑结构和逻辑拓扑结构并不要求是一样的。物理指的是实际上我们的线和设备是如何连接的。
- 逻辑上呢是在我们物理连接后想想数据的传输的顺序等等,。
根据介质访问方法对局域网进行分类:
- 以太网:以太网是应用最为广泛的局域网,包括标准以太网(10Mbps)、快速以太网(100Mbps),千兆以太网(1000 Mbps)和10G以太网,它们都符合IEEE802.3系列标准规范。逻辑拓扑总线型,物理拓扑是星型或拓展星型。使用CSMA/CD.
- 令牌环网:物理上采用了星形拓扑结构,逻辑上是环形拓扑结构。已是“明日黄花”。
- FDDI网:物理上采用了双环拓扑结构,逻辑上是环形拓扑结构。使用的光纤
- ATM网:较新型的单元交换技术,使用53字节固定长度的单元进行交换。
- 无线局域网:传输介质是空气or电磁波。WiFi就是无线局域网的一种应用咯。采用IEEE 802.11标准。
2、以太网
以太网就是一种逻辑上的总线型拓扑结构;在现实生活中经常使用。
以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术。
以太网在局域网各种技术中占统治性地位:
- 1.造价低廉(以太网网卡不到100块);
- 2.是应用最广泛的局域网技术;
- 3.比令牌环网、ATM网便宜,简单(各种修改,建网,维修比较简单);
- 4.满足网络速率要求:10Mb/s~10Gb/s
以太网的两个标准:其实就是满足下面的两个标准之一就可以称之为 以太网了。
- DIX Ethernet V2:第一个局域网产品(以太网)规约。
- IEEE 802.3:IEEE 802委员会802.3工作组制定的第一个IEEE的以太网标准。(帧格式有一丢丢改动)
以太网提供的服务:无连接、不可靠的服务。
- 无连接:发送方和接收方之间无“握手过程”。
- 不可靠:不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责。
- 以太网只实现无差错接收,不实现可靠传输。)
- 无差错接收:就是假如你发了1010,那我接收也是按照1010接收,如果通过一些差错检测方法发现这个帧发错了,那么这个帧就丢弃,但是呢这并不叫可靠传输
- 可靠传输:只要你发的帧,我都要接收,然后解决帧丢失、帧重复等问题。
以太网的传输介质和拓扑结构的发展:
- 传输介质:粗同轴电缆---->细同轴电缆—>双绞线+集线器
- 物理拓扑:总线型–>星型
- 逻辑拓扑:使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议。
- 以太网拓扑:逻辑上总线型,物理上星型。
以太网中一个非常常见的以太网:10BASE-T以太网。
- 10BASE-T是传送基带信号的双绞线以太网,T表示采用双绞线,现10BASE-T采用的是无屏蔽双绞线(UTP),传输速率是10Mb/s。
- 物理上采用星型拓扑,逻辑上总线型,每段双绞线最长为100m。
- 采用曼彻斯特编码。
- 采用CSMA/CD介质访问控制。
适配器的介绍:计算机与外界有局域网的连接是通过通信适配器的。
- 现在的都已经嵌入好了。
- 网络接口板、网络接口卡NIc (network interface card)NOw,不再使用单独网卡。
- 适配器上装有处理器和存储器(包括RAM和ROM) 。ROM上有计算机硬件地址MAC地址。
- 这个MAC地址是 标志着每一个设备的一个独立的标识符。
- 在局域网中,硬件地址又称为物理地址,或MAC地址。【实际上是标识符】像是身份证。
- MAC地址:每个适配器有一个全球唯一的48位二进制地址,前24位代表厂家(由IEEE规定),后24位厂家自己指定。常用6个十六进制数表示,如02-60-8c-e4-b1-21。
高速以太网:
- 100BASE-T以太网
- 吉比特以太网
- 10吉比特
3、无线局域网
IEEE 802.11是无线局域网通用的标准,它是由IEEE所定义的无线网络通信的标准。所以规定的所有内容都是围绕无线局域网的,
无线局域网和WIFI是不一样的,无线局域网比WiFi的覆盖范围是大的多的。几千米和一个屋子。
比如无线局域网在基础上有了十几个标准;而相对于WiFi来说,只需要满足其中的指定的两个标准就可以了。
802.11的MAC帧的格式和帧头的格式。
对于接收端和发送端;可以理解为实际发送和接收的数据的两个基站的MAC地址。(AP即基站)
然后目的地址和源地址可以理解为两个设备的MAC地址。
无线局域网的分类:
- 有固定基础设施无线局域网
- 基站可以实现自己区域的主机互相通信;也可以实现漫游。感觉像是有线和无线结合。
- 基站与基站之间是有线连接的好像。
- 无固定基础设施无线局域网的自组织网络
- 只有主机相互组成的网络
4、VLAN的基本原理和基本概念
为什么会有VLAN的诞生呢?
因为传统的局域网它有一定的局限性。
- 第一个局限:缺乏流量的隔离:我们知道在一个广播域当中,如果一个主机发送一个广播帧,那么这个广播域里面的主机都可以收到这个广播帧所以即使把组流量局域化道一个单一交换机中,广播流量仍会跨越整个机构网络(ARP、RIP、DHCP协议);比如在
- 管理用户不便:如果一个主机在不同组间移动,必须改变物理布线,连接到新的交换机上。
- 路由器成本较高:局域网内使用很多路由器花销较大。
虚拟局域网VLAN (Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组有某些共同的需求。每个VLAN是一个单独的广播域/不同的子网。相当于进行了逻辑上的VLAN划分。即每个VLAN都是一个单独的广播域。
VLAN是如何实现的呢?虚拟局域网。
·交换机上生成的各VLAN(各虚拟局域网)互不相通,若想实现通信,需要借助:
√路由器
√三层交换机即VLAN中,A发送的广播帧CD是接收不到的;如果想要接收到就必须通过路由器or三层交换机。
VLAN实现;IEEE 802.1Q帧格式介绍。
5、广域网及其相关协议PPP
广域网(WAN,Wide Area Network),通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。现在使用的互联网Internet就是广域网。
广域网的通信子网主要使用分组交换技术。广域网的趣信丁网q以利刷公开宜的日的、如快特网(Internet)组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。如因特网(Internet)是世界范围内最大的广域网。
广域网内的结点:结点交换机其实是链路层的设备它是交换机;它和路由器的功能很像;都是用来转发分组的;但是呢,结点交换机只能在单个的网络中进行转发分组;而路由器是网络层的设备是可以在多个网络之间转发分组的;
在广域网当中,我们可以有交换机,集线器,路由器,
广域网覆盖的计算机网络体系是物理层+链路层+网络层;局域网覆盖的是前两个层次;
广域网当中我们经常采用的是点对点技术一个发送端一个接收端;局域网当中的普遍采用的是多点接入技术
下图中:中间是大型的广域网;两边是小的局域网。
在广域网内强调的是资源共享;而局域网比较强调数据的传输;
广域网PPP协议
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的数据链路层协议,用户使用拨号电话接入因特网时一般都使用PPP协议。只支持全双工链路。
PPP协议需要满足的要求:
1:简单;因为当时设计因特网的体系结构的时候把最复杂的部分放在了TCP协议之中;然后IP协议也是较为复杂的不过比TCP简单,IP协议层主要提供的是不可靠的数据报服务。所以链路层并不需要实现可靠传输的功能。
2封装成帧:帧定界符
3透明传输:与帧定界符一样比特组合的数据应该如何处理:异步线路用字节填充,同步线路用比特填充。多种网络层协议封装的IP数据报可以采用多种协议。
4多种类型链路:串行/并行,同步/异步,电/光…差错检测错就丢弃。
检测连接状态链路是否正常工作。最大传送单元数据部分最大长度MTU。
网络层地址协商知道通信双方的网络层地址。数据压缩协商
PPP协议不需要做的事情;大部分好像都是让上层的给解决。设计简单这样。
纠错:
流量控制:
序号:
广域网hdlc协议
二、链路层设备
首先回顾物理层的东西:各个主机设备通过集线器相互连接。而平常要求是主机设备和集线器要距离一百米之内。超过100m失真就会严重,再怎么恢复也恢复不了。
为了使距离比较远的主机进行通信;我们需要在物理层次上面将这个以太网进行扩展一下。
第一种方法:就是通过光纤 的方式;光纤的信号损耗非常的小。所以我们可以使用光纤的方式来扩展我们的以太网。使得我们的两台主机可以通信的距离变得更远。
第二种方法:通过集线器;将很多的集线器再进行组合一起。这样的话每一个集线器所构成的区域就叫做冲突域。
冲突域:指的是在这个物理层的设备它所连的这些主机之内如果进行通信的话同一时间只能有一台主机进行发送信息的。
如果是两台同时发送就会发送碰撞or冲突。
下图中的一开始三个冲突域;但是主干集线器连在一起后就会变成一个大的冲突域了。
优点:这样就可以实现跨域的通信了;并且夸大了以太网的覆盖范围。
缺点:发送冲突的多了,通信效率低了;
那么有没有一种方法可以减少冲突;并且扩大以太网的范围呢??
显然在物理层我们是没办法实现的,所以我们在链路层对以太网进行一个扩展。
1、交换机
以太网的交换机又叫多接口的网桥。
独占传输媒体的带宽的。
直通式交换机:
查完目的地址(6B)就立刻转发。
延迟小,可靠性低,无法支持具有不同速率的端口的交换。存储转发式交换机:
将帧放入高速缓存,并检查否正确,正确则转发,错误则丢弃。延迟大,可靠性高,可以支持具有不同速率的端口的交换。交换机的自学习功能;;转发表的这个东西。
2、网桥
网桥是交换机的前身:网桥根据MAC帧的目的地址对帧进行转发和过滤。当网桥收到一个帧时,并不向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。
网桥和集线器的区别:集线器会将到达的帧通过所有的端口进行转发出去。
网桥的优点:分割冲突域,如果是集线器就没有分割。
1.过滤通信量,增大吞吐量。
2.扩大了物理范围。
3.提高了可靠性。
4.可互连不同物理层、不同MAC子层和不同速率的以太网。