第三章 数据链路层
3.1.2 三个基本问题
数据链路层有很多种,但都有三个基本问题:封装成帧、透明传输和差错检测
-
封装成帧
就是在数据前后添加首部和尾部,首部和尾部的一个重要作用就是帧定界。每种链路层协议都规定了传送的帧的数据部分的长度上限——最大传送单元MTU。
-
透明传输
”在数据链层透明传输数据“表示无论怎样的比特组合的数据都可以无差错的通过数据链层。为解决透明传输问题,可在数据中的控制字符前插入转义字符。
-
差错检测
使用循环冗余检验CRC这样的检错技术。
n位冗余码可通过这样的方法获得:设待传送的数据有k位。在数据M后添加n个0,再用得到的**(k+n)位数除以事先定好的(n+1)位的除数P**,得到商Q和余数R,余数R便作为冗余码拼接在数据M后面发送出去。这种为进行检错而添加的冗余码通常称为帧检验序列FCS。
接收端在接收到数据后进行CRC检验:把每一帧都除以同样的除数P,然后检查余数R。若为0则无差错,否则判定这个帧有差错,进行丢弃。但是这样只能做到对帧的无差错接受,而对出现传输差错例如帧丢失、帧重复和帧失序则无法识别。因此OSI在CRC检错基础上还加入了帧编号、确认和重传机制。
3.2 点对点协议PPP
3.2.2 PPP协议的帧格式
1. 各字段的意义
PPP帧格式如下图所示
F为标志字段,若连续出现两个标志字段,就表示这是一个空帧,应当丢弃。
2. 字节填充
当PPP使用异步传输时,将转义字符定为0X7D,并进行字节填充
3. 零比特填充
PPP协议用在SONET/SDH链路时,使用同步传输(一连串比特连续传送)而不是异步传输(逐个字符传输),此时采用零比特填充来实现透明传输。零比特填充的具体做法是:在发送端扫描整个信息字段只要发现有5个连续的1,就立即填入一个0。接受端接受到后先找到标志字段以确定一个帧的边界,之后进行扫描发现5个连续1时就删除后面的0。
3.2.3 PPP协议的工作状态
PPP协议的状态图如下图所示
PPP链路的起始和终止状态都是 “链路静止” 状态
3.3 使用广播信道的数据链路层
局域网最主要的特点:网络为一个单位所拥有,且地理范围和站点数目均有限
共享信道在技术上有两种方法:
- 静态划分信道: 如第二章中介绍的的频分复用、时分复用等
- 动态媒体接入控制:这又分为两类——随机接入和受控接入。随机接入的特点是用户可以随机的发送信息,但可能产生冲突;受控接入的特点是用户发送信息必须服从一定的控制。
需要注意:计算机的硬件地址就在适配器的ROM中,而软件地址——IP地址则在计算机的存储器里
3.3.2 CSMA/CD协议
以太网不会判断是否是重传帧,而是都当作新的数据帧来发送。
以太网**发送的不确定性:**每个站在数据发送后的一小段时间内,存在遭遇碰撞的可能。
将以太网端到端的往返时间2τ称为争用期。经过争用期还没有检测到碰撞,才能肯定这次发送不会产生碰撞。
以太网使用截断二进制指数退避算法来确定重传时间,算法如下:
(1) 协议规定基本退避时间为2τ(51.2μs)
(2) 从离散的整数集合{0,1,…,(2k-1)}中随机取一个数记为r,重传推后时间为r倍争用期。k可以这样计 算: k=Min{重传次数,10}。
(3) 重传达16次仍不成功时,则丢弃该帧并向高层报告
以太网规定最短帧长为64字节,凡长度小于64字节的帧都是因冲突而异常终止的无效帧。以太网还规定了帧间最小间隔为9.6μs,这是为了使刚收到数据帧的站的接受缓存来得及清理,做好接受下一帧的准备。
3.3.3 使用集线器的星性拓扑
集线器工作在物理层,它的每个接口只是简单的转发比特,不进行碰撞检测
3.3.4 以太网的信道利用率
以太网单程端到端时延为τ,发送时间为T0,则参数a公式为:
a
=
τ
T
0
a=\frac{\tau}{T_0}
a=T0τ
从公式可得当数据率一定时,以太网连线长度受到限制(否则τ太大),以太网帧长不能太短(否则T0太小)
于是我们可得极限信道利用率Smax的公式:
S m a x = 1 1 + a S_{max}=\frac{1}{1+a} Smax=1+a1
3.3.5 以太网的MAC层
1. MAC层的硬件地址
局域网中,硬件地址又称为物理地址或MAC地址。局域网的地址与主机位置无关,而是每一个站的标识符。IEEE802标准规定了一个48位全球地址,此地址固化在适配器的ROM中
48位地址的前24位是组织唯一标识符OUI,后3个字节称为扩展标识符
IEEE规定地址字段第一个字节的最低位为I/G位,为0时地址字段表示一个单个站地址,为1时表示组地址用于进行多播。第一个字节的最低第二位为G/L位,为0时表示全球管理而为1时表示本地管理。因此进行全球管理时每一个站都可用46位二进制数字表示。
适配器有过滤功能只接受发往本站的帧,本站的帧指的是以下几种:
- 单播帧(一对一)
- 广播帧(一对全体)
- 多播帧(一对多)
2. MAC帧的格式
如下图所示:
MAC子层是如何知道从接收到的以太网帧中取出多少字节数据交付上一层的?以太网发送的数据都使用曼彻斯特编码,曼彻斯特编码的一个重要特点就是:在每一个码元的正中间,一定有一次电压的转换,当发送方把一个以太网帧发送完毕后,就不再发送其它码元了。因此,发送方网络适配器的接口上的电压也不再变化了,接收方就可容易的找到以太网帧的结束位置
为了接收端迅速实现同步,从MAC子层向下传到物理层时还要在帧前面插入8个字节(硬件生成)
IEEE规定出现如下几种情况之一的便是无效MAC帧
- 帧的长度不是整数个字节
- 用FCS查出有差错
- 收到的MAC帧中客户数据段的长度不在46-1500字节之间,考虑到MAC帧首部和尾部的18个字节,故有效MAC帧长度应在64-1518字节之间。
3.4.3 虚拟局域网
虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,这些网段具有某些共同的需求。每个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪个VLAN。