计算机网络 数据链路层
2021-4-24
大二时上课笔记,用书谢希仁那本,图片源于书中
0. mind
1. 基本概念
1.1 综述
本章中,重点介绍了两种不同的信道类型,同时重点讲解了以太网,因为它应用了大部分的数据链路层方面的知识。读者应重点关注点对点信道的ppp协议及其中封装成帧,透明传输,差错检测的内容,广播信道的CSMA/CD协议及其中时延,碰撞检测,重传算法相关内容
1.2 链路
链路与数据链路是两个不同的概念,链路指结点到相邻结点的物理线路,但计算机之间通信有多条链路,所以链路只是通信路径的一部分
数据链路则是包括链路及其通信协议。
目前大部分是使用适配器来实现这些协议。
1.3 帧
帧是数据链路层的数据单元,数据链路层将网络层传下来的包(网络层的数据单元)封装成帧再发送出去。
2. 信道类型
2.1 点对点信道
2.1.1 功能
①封装成帧
分组交换中,IP数据报就是帧的数据部分,我们需要将数据进行包装,才能更有效,更稳定的传输数据
1)帧定界
通过帧首部和尾部来进行帧定界,封装一个帧,MTU是指链路层协议定义的最大数据长度
2)帧定界符
数据如果是ACSII码时,也可以使用特殊的定界符进行帧定界,通过这种方法能够有效的检测出传输是否出错,,只要接收到不完整的帧即丢弃
②透明传输
我们需要保证数据能够自由,透明的在链路中传输,倘若传输内容中存在特殊字符,则会错误地找到边界,则对数据内容有了限制
解决这个问题我们使用字节填充法,当数据中出现控制字符,则在前面插入转义字符
③差错检测
显然,数据在传输过程中不可能不出现差错,所以我们的协议需要有一定的差错检测能力。但是我们要注意的是,此处提供的差错检测仅仅检测是否存在差错,但是并不会对错误进行处理,是一种不可靠传输,这样可以有效地提高通信效率。
1)比特差错
数据传输过程中,0变成了1,1变成了0,是差错中的一种
2)误码率
出现差错的比例
为了解决这个问题,我们使用循环冗余检测CRC来进行差错检测
3)CRC
该算法的具体内容是在数据中添加一个冗余码来检测数据,具体公式则为**(数据+冗余码)/多项式 = 0 则正确**。
下面我们一步一步来看如何实现:
一、发送端:在数据后加入冗余码
M:数据,n冗余码个数
①通过二进制的模二运算:2^n * M,相当于在M后加n个0。
②生成冗余码:2^n * M / P,除法得到的便为余数,余数为n-1位
③除数P的生成:我们使用函数P(X)生成多项式来生成除数P,P(X)=x3+x2+1,即为除数P=1101。为n+1位,比冗余码多一位。
二、接收端:接收端则相对简单,传入的数据除于同样的除数P,余数为0则数据正确,接收。
2.1.2 PPP协议
PPP协议是目前最常用的数据链路层协议,是一种不可靠传输协议。
①帧格式
帧格式大同小异,首部,尾部以及数据部分组成。
首部和尾部中的F为帧定界符,A,C是地址和控制字段,目前并未使用到
首部还存放相关协议
尾部中FCS则为CRC的检验序列
②透明传输措施
1)字节填充
字节填充即前面提到的方法,在控制字段前加入转义字符
2)零比特填充
当使用SONET/SDH链路的时候,数据是同步运输,一连串的比特连续发送,此时则需要使用零比特填充的方法,在连续五个1之后填入一个0,避免出现连续六个1的情况。连续六个1为标志字段F。
在接收端则扫描接收到的数据,在连续五个1之后把0删除。
2.1.3 工作状态
2.2 广播信道
课本在此处讨论了以太网的相关知识,但本文将其分开讨论,有关以太网的内容将在下一节描述
2.2.1 传输协议CSMA/CD
①目的
广播信道中,同一时间只允许一台计算机发送数据,共享信道会出现大量的碰撞问题,我们则需要一个协议来协调计算机之间的数据发送。CSMA/CD协议便是用来解决该i问题
②内容
CSMA/CD全名载波监听多点接入/碰撞检测,说明了该协议的内容。
1)多点接入
该协议适用于多点接入的总线型信道。
2)载波监听
计算机在发送消息之前,会不断监听信道,查看信道中是否有消息发送,不管发送前与发送后都会检测。倘若发现信道有消息在发送,则该站延缓发送消息。
3)碰撞检测
所谓碰撞检测其实就是边发送边监听,因为消息碰撞是具有时延的,必须保证也在发送过程中不发生碰撞。倘若发生碰撞,适配器应该立即停止发送消极,并等待一段随机时间再发送。
4)时延
即便在发送前确定目前没有计算机在发送消息也不能完全避免信道不出现碰撞,因为可能有计算机已经发送完消息在信道传播中。
电磁波在1 km电缆的传播时延是5μs,即A发送的数据要一定时间才能到B中,对于B来说,倘若双方恰巧发送数据,B需要5μs才能知道自己的消息发生了碰撞。站点A发送消息后,最迟需要2t的时间才能确定是否发生碰撞,即A的消息即将到达B端的时候,B端发送消息。
5)争用期
由上可见,即便数据发送出去之后,仍有可能出现碰撞的情况,这一小段时间便是碰撞窗口或争用期。一个站在经过这个争用期之后,才能确认数据没发生碰撞,放心把数据完全发送。
6)帧长
由于争用期的存在,假设在争用期还没过的时候,由于数据帧长太短,已经发送完毕了,那么这个发送的数据被接收后可能是发生过碰撞的,因此我们对数据帧长有一定的要求。我们定义该帧长为64字节,凡是小于该长度的帧即可认为是无效帧。
7)重传算法
我们说当检测到碰撞的时候,需要等待一个随机时间再发送,这个随机时间我们通过截断二进制指数退避算法来计算。这是一个动态退避算法,它生成的平均随机时间会随着推迟的次数而增加。具体算法内容见下图,若重传次数达到16次后,则会丢弃帧并报错。
8)强化碰撞
当碰撞发生后,站点除了停止发送还会发送一个人为干扰信号,通知其他站点发生了碰撞
9)帧间间隔
站点发送帧与帧之间要有一个最小间隔,便于接收站做好接受准备,通知站点要把帧保留一下,避免发送失败后需要重传
3. 以太网
3.1 局域网
局域网的特点是为一个单位所拥有,地理范围,站点等规模都比较小,但是在数据传输方面性能比较好。局域网之中,以太网占据了绝对优势,因此我们主要讨论以太网。下面将讨论一些有关局域网的内容。
1)拓扑结构
局域网的拓扑结构有三种,星形网,环形网和总线网,星型网的应用范围很广,总线网是最为著名的结构。星形网实际上仍然是总线网,这将在下面介绍。
①星形网
当研发出十分可靠的设备——集线器后,局域网大多就使用了这种星形网结构了。不过集线器逻辑上是模拟总线网的,所以其本质上还是总线网,使用的还是CSMA/CD协议。
如上图,我们能窥测集线器的工作方式,事实上它并不进行碰撞检测,仅仅简单的转发bit,所以它是工作在物理层的。倘若两个接口同时输入信号,也就是逻辑上的发生碰撞,那么所有接口都将收到错误的信息。
2)共享信道方法
既然有多台电脑,又只有少数条线路,那就需要解决如何共享信道的问题了,技术上主要有两种。
①静态划分
我们前面提到的频分复用,时分复用等等,只要各个用户分配不同的信道来解决冲突问题,这种方法就是静态划分
②动态接入控制
也称多点接入,这种方法的特点是信道是动态划分的,只有用户在通信的时候才把信道固定划分给用户,该方法又分为两种
1. 随机接入
用户可以随机接入信道发送消息,但是倘若出现两台计算机共同发送消息则会出现碰撞。我们重点讨论的以太网便是使用随机接入技术
2. 受控接入
这种情况下用户发送信息是受到控制的,这种方法也称为轮询。
3.2 信道利用率
1) 信道占用情况
如下图, 我们能看到信道被占用的情况 , 大部分时间都浪费在了争用期之中, 所以要提高信道利用率最首要的就是降低争用期浪费的时间.
2) 信道利用率
如下图, 我们给出了信道利用率的公式, 为争用期与消息发送时间的比值, 从这里我们可以看出, 要提高信道利用率, 首先信道的长度不能太长, 用户不能太多, 从公式来看, 帧长也不能太短, 否则 T0 就会非常小。我们希望分母大些,分子小些。
3) 极限利用率
这种情况讨论的是以太网上发送的消息都不会发生碰撞. 发送一帧占用的时间则为分母, 发送的时间则为分子. 由此可见参数α越小才能得到尽可能高的利用率.
3.3 以太网MAC层
讨论地址的时候常常引用一个著名定义:名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到大该处
我们本节讨论的就是物理地址,接下来会讨论一些基本概念
1)背景
地址字段的生成是有规定的,不是任何人都能生成,注册机构RA分配六个字节中的前三个,生产适配器的厂家要购买这个地址块OUI,也是公司标识符,自行指定地址字段的后三个字符。
MAC地址是被固化在适配器的ROM中的,是不可改变的
2)帧格式
①内容
如下图可见,MAC的帧格式是由五个字段组成的,注意和上面提到的PPP帧格式进行区分,类型字段是指上一层的协议。
②数据长度
在MAC帧格式中,并没有存储数据长度的位置。确定数据长度是根据编码特征的,曼切斯特编码传输数据的时候会出现电压变化,当电压没有发生变化的时候,其实就意味着数据传输完毕,也就可以计算出数据长度,把FCS字段剔除,上传给上一层协议。
通过要保证MAC帧长不小于64字节(参考CSMA/CD协议),有时候就需要做填充,那如何确定填充数据和实际数据呢?
这个时候我们在IP层应该有一个字段存储,告诉有效数据是多长。
③位同步
虽然不知道为什么要进行时间同步…
特别提出,使用SONET/SDH协议的时候是不需要同步的,因为双方一直保持同步状态。并且帧的发送是有时间差的,有一定间隙的,因此MAC帧是不需要定界符的,因此其实也不需要填充法来保证透明传输。
我们会在MAC层前加入7个字节,用来快速同步与发送端的时间调整,最后一个字节则是一个帧开始的定界符。
3.4 扩展的以太网
1)物理扩展
所谓物理扩展,实际上是把链接范围变得更广,通过集线器,光纤等方法
2)数据链路层扩展
这种方法是更常用的方法。最初使用的是网桥,对收到的帧进行过滤,通过MAC地址转发和过滤,通过查看地址表的方式选择转发到哪个接口。
随后出现的交换式集线器取代了网桥,也叫做以太网交换机。
①特点
以太网交换机实质上是一个多接口的网桥, 具有并行性以及全双工的工作方式,最重要的是,相互通信的主机是无碰撞的传输方式。
其内部的地址表是通过自学习算法自动地逐步地建立起来的。
②自学习算法
算法其实很简单,只要某个端口发送数据之后,交换表就会记录下这个端口的mac地址
但是有时候可能会出现死回路的情况,这时候引进生成树协议,则能避免发送回环
3)虚拟局域网
虚拟局域网本质上是一个逻辑上的局域网区分,本质上还是一个普通的局域网,只不过避免了广播风暴等情况