计算机网络笔记整理3——数据链路层
参考书籍:《计算机网络》第八版 谢希仁编著
文章目录
数据链路层的三个基本问题
链路:一条无源的点到点的物理线路段,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分
数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据线路
三个基本问题:
-
封装成帧:
在一段数据的前后分别添加首部和尾部,构成一个帧。
首部和尾部的一个重要作用就是进行帧定界 -
透明传输:
如果数据中的某个字节的二进制代码恰好和SOH或EOT一样,数据链路层就会错误地“找到帧的边界”解决方法:字节填充或字符填充,发送端的数据链路层在数据中心出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”
- 差错控制:
在传输过程中可能会产生比特差错,1变成0,0变成1
在一段时间内,传输错误的比特占所传输比特的总数称为误码率BER
点到点协议PPP及其透明传输的实现
PPP协议应满足的需求:
- 简单:首要要求
- 封装成帧
- 透明性
- 多种网络层协议
- 多种类型链路
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商:使通信的两个网络层实体能知道或能配置彼此的网络层地址
- 数据压缩协商
PPP协议不需要的功能:
- 纠错、流量控制、序号、多点线路、半双工或单工链路
PPP协议的组成:
PPP协议有三个组成部分:
- 一个将IP数据报封装到串行链路的方法
- 链路控制协议LCP
- 网络控制协议NCP
PPP协议的帧格式:
F:标志字段;A:地址字段,实际上不起作用;C:控制字段
PPP是面向字节的,所有的PPP帧的长度都是整数字节
透明传输问题
当PPP用在同步传输链路时,协议规定采用硬件来完成比特填充
当PPP用在异步传输时,使用一种特殊的字符填充法
字符填充
- 将信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D, 0x5E)。
- 若信息字段中出现一个0x7D的字节,则将其转变成为2字节序列(0x7D, 0x5D)。
- 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变
零比特填充
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)。这时PPP协议采用零比特填充方法来实现透明传输
在发送端,只要发现有5个连续的1,则立即填入一个0
接收端对帧中的比特流进行扫描,每当发现5个连续1时,就把这5个连续1后的一个0删除
PPP协议已不是纯粹的数据链路层协议,它还包含了物理层和网络层的内容
差错检测技术(CRC)
- 在发送端,先把数据划分为组。假定每组有k个比特,用M表示。
- 用二进制的模2运算记性2n×M,相当于在M后面添加n个0
- 得到的(k+n)位的数除以事先选定好的长度为(n+1)的除数P,得出商是Q,余数是R,余数R比除数P少1位,即R是n位
- 将余数R作为冗余码拼接在数据M后面发送出去
关于模2除法的运算可参考
https://blog.csdn.net/weixin_39450145/article/details/83987836
在数据后面添加上的冗余码称为帧检验序列FCS
FCS可以用CRC这种方法得出,但CRC并非是获得FCS的唯一方法
接收端对收到的每一帧进行CRC检验
若得出的余数R=0,则判定这个帧无差错,就接受
若余数R≠0,则判定有差错,就丢弃
局域网的拓扑类型、特点等
局域网最主要的特点就是:网络为一个单位所拥有,且地理范围和站点数目均有限
局域网具有如下的优点:
- 具有广播功能,从一个站点可很方便的访问全网
- 便于系统的扩展和逐渐的演变,各设备的位置可灵活调整和改变
- 提高了系统的可靠性、可用性和生存性
局域网的拓扑类型:
星型网、环型网、总线网
适配器的作用:
网络接口板又称为通信适配器或网络接口卡,或网卡
- 进行串行/并行转换
- 对数据进行缓存
- 在计算机的操作系统安装设备驱动程序
- 实现以太网协议
CSMA/CD协议
工作过程
CSMA/CD含义:载波监听多点接入 / 碰撞检测
多点接入:表示许多计算机以多点接入的方式连接在一根总线上
载波监听:指每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞
碰撞检测:计算机边发送数据边检测信道上的信号电压大小,当一个站检测到信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明发生了碰撞。
为什么要进行碰撞检测?
电磁波在总线上的传输速率是有限的,当某个站监听到总线是空闲时,可能并非真正是空闲的
检测到碰撞后
- 停止发送,每一个正在发数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送
- 强化碰撞,停止发送数据后,再继续发送若干比特的认为干扰信号,以便让所有用户都知道现在已经发生了碰撞
CSMA/CD重要特性
- 只能进行半双工通信,不能进行全双工通信
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率
争用期
以太网的端到端往返时延2τ称为征用期,或碰撞窗口。经过征用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
二进制指数类型退避算法
最短有效帧长:以太网规定了最短有效帧长为64字节,凡长度小于64字节的帧都是由于冲突而异常中止的无效帧。
例题
以太网信道的利用率
一个站在发送帧时出现了碰撞。经过一个征用期2τ后,可能又出现了碰撞。这样经过若干个征用期后,一个站发送成功了。假定发送帧需要的时间是T0。
成功发送一个帧需要占用信道的时间是T0 + τ,比这个帧的发送时间要多一个单程端到端时延τ
要提高以太网的信道利用率,就必须减少τ与T0之比。在以太网中定义了参数α。它是以太网单程端到端时延τ与帧的发送时间T0之比:
α = τ / T0
a→0,表示一发生碰撞就立即可以检测出来,并立即停止发送,因而信道利用率很高。
a越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。
对以太网参数α的要求:
当数据率一定时,以太网的连线的长度受到限制,否则τ的数值会太大
以太网的帧长不能太短,否则T0的值会太小,使α值太大
理想情况下的极限信道利用率Smax为:
S
m
a
x
=
T
0
T
0
+
τ
=
1
1
+
α
S~max~=\frac{T_0}{T_0+τ}=\frac{1}{1+α}
S max =T0+τT0=1+α1
以太网的MAC层
在局域网中,硬件地址又称为物理地址,或MAC地址
名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处
严格地讲,局域网的“地址”应该是每一个站的“名字”,但人们习惯将其称为“地址”
这种48位“地址”应当是某个接口的标识符
IEEE的注册管理机构RA负责向厂家分配地址字段6个字节中的前三个字节
地址字段6个字节中的后三个字节由厂家自行指派
发往本站的帧包括以下三种
- 单播帧(一对一)
- 广播帧(一对全体)
- 多播帧(一对多)
所有的适配器都至少能识别单播地址和广播地址
有的适配器可用编程方法识别多播地址
只有目的地址才能使用广播地址和多播地址
MAC帧的格式
常用的以太网MAC帧格式有两种标准
- DIX Ethernet V2标准
- IEEE的802.3标准
最常用的MAC帧是以太网V2的格式
类型字段:用来标志上一层使用的是什么协议
数据字段:
正式名称是MAC客户数据字段
最小长度64字节-18字节的首部和尾部=数据字段的最小长度46字节
当数据字段的长度小于46字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧长不小于64字节
FCS:帧检验序列
在帧的前面插入(硬件生成)的8字节中,第一个字段共7个字节,是前同步码,用来迅速实现MAC帧的比特同步。第二个字段1个字节是帧开始定界符,表示后面的信息就是MAC帧
无效的MAC帧:
- 数据字段的长度与长度字段的值不一致;
- 帧的长度不是整数个字节
- 用收到的帧检验序列FCS查出有差错
- 数据字段的长度不再46~1500字节之间
- 有效的MAC帧长度为64~1518字节之间
对检查出的无效MAC帧就简单地丢弃,以太网不负责重传丢弃的帧。
IEEE 802.3 MAC帧格式与以太网V2 MAC帧格式相似,区别在于:
1.IEEE 802.3规定的MAC帧的第三个字段是“长度/类型”
当这个字段值大于0x0600时(相当于十进制的1536)就表示“类型”。这样的帧和以太网V2 MAC帧完全一样。
当这个字段值小于0x0600时才表示“长度”。
2.当“长度/类型”字段值小于0x0600时,数据字段必须装入上面的逻辑链路控制LLC子层的LLC帧。
帧间最小间隔:
帧间最小间隔为9.6μs,相当于96bit的发送时间。一个站在检测到总线开始空闲后,还要等待9.6μs才能再次发送数据。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。