三、数据链路层
3.1 基本概念及基本问题
3.1.1基本概念
数据链路层的简单模型
说明:本章我们只是关注数据链路层的传输,即仅从数据链路层观察帧的流动。
数据链路层的信道类型
数据链路层使用的信道主要有以下两种类型:
1、点对点信道:这种信道使用一对一的点对点通信方式
2、广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用抓用的共享信道协议来协调这些主机的数据发送。链路与数据链路
1、链路是一条点到点的物理线路段,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。
2、数据链路除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现今最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。-
帧
说明:网络层中传递过来的数据报加上帧头和帧尾以及校验之后就变为数据帧了。数据链路层就像一个数字管道,所以常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位就是帧。
3.1.2 三个基本问题
-
封装成帧
1、封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
2、首部和尾部的一个重要作用就是进行帧定界。
下面看一个例子,用控制字符进行帧定界的方法
说明:试想,帧还未发送完,发送端出了问题,只能重发该帧。接收端却收到了前面“半截子帧”,它会抛弃吗?为什么?当然这里的开始和结束字符也可以是别的。
-
透明传输
说明:若传输的数据是ASCII
码中“可打印字符(供95
个)”集时,一切正常。若传输的数据不是仅由“可打印字符”组成时,就会出现问题,如图所示。如果数据部分恰好包含了开始标记或者结束标记,如何告诉计算机?
说明:发送端的数据链路层在数据中出现控制字符“SOH
”或“EOT
”的前面插入一个转义字符“ESC
”(其十六进制编码是1B
)。字节填充或字符填充:接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。如果转义字符也出现在数据当中,那么应在转义字符前插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。 差错控制
传输过程中可能会产生比特差错:1
可能会变成0
,而0
也可能变成1
。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)
。误码率与信噪比有很大关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。数据链路层中如果发现数据有误会直接将其扔掉,而是否需要重发是由传输层来决定。
3.2 两种情况下的数据链路层
3.2.1 使用点对点信道的数据链路层
-
PPP
协议使用场合
说明:我们家用的电脑到路由器的那根线就是点对点,使用的是PPP
协议。这是一个数据链路层的协议。现在全世界是有那个的最多的数据链路层协议是点对点协议PPP(Point-toPoint Protocol)
。用户使用拨号电话线接入Internet
时,一般都是使用此协议。 -
PPP
协议满足的要求- 简单:这是首要的要求
- 封装成帧
- 透明性
- 多种网络协议:如
TCP
- 多种类型链路
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
-
PPP
协议不需要满足的要求- 纠错
- 流量控制
- 序号
- 多点线路
- 半双工或单工链路
-
PPP
协议的组成- 数据链路层协议可以用于异步串行或同步串行介质
- 它使用
LCP
(链路控制协议)建立并维护数据链路连接,如身份验证,计费 - 网络控制协议(
NCP
)允许在点到点连接上使用多种网络协议,如图所示
-
PPP
协议的帧格式
说明:其中A、C
段是固定的,因为这是点对点,所以不需要地址。而FCS
是帧检验序列。PPP
是面向字节的,所有的PPP
帧的长度都是整数字节。
这里也会出现字节填充的问题:信息字段中出现了标志字段的值,可能会被误认为是“标志”,怎么办?- 将信息字段中出现的每个
0x7E
字节转变成两个字节序列(0x7D,0x5E
) - 若信息字段中出现一个
0x7D
的字节,则将其转变成两个字节序列(0x7D,0x5D
) - 若信息字段中出现
ASCII
码的控制字符(即数值小于0x20
的字符),则在该字符前面要加上一个0x7D
字节,同时将该字符的编码加以改变。
- 将信息字段中出现的每个
如果信息部分传递的不是上面所说的字节流,而是二进制流,则透明传输的问题需要使用零比特填充方法:PPP
协议用在SONET/SDH
链路时,是使用同步传输(一连串的比特连续传送)。这时PPP
协议采用零比特填充方法来实现透明传输。在发送端,只要发现有五个连续的1
,则立即填入一个0
。接收端对帧中的比特流进行扫描。每当发现五个连续1
,就把这五个连续1
后的一个0
删除。
-
PPP
协议不使用序号和确认机制
此协议之所以不适用序号和确认机制是出于一下考虑:- 在数据链路层出现差错的概率不大时,使用比较简单的
PPP
协议较为合理 - 在
Internet
环境下,PPP
的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输页式可靠的。比如在传输的过程中数据丢失了、有错,这里是不会让发送端重发的,如果有错就扔掉。 - 帧检验序列
FCS
字段可保证无差错接受。
- 在数据链路层出现差错的概率不大时,使用比较简单的
PPP
协议的工作状态
当用户拨号接入ISP
时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。PC
机向路由器发送一系列的LCP
分组(封装成多个PPP
帧)。这些分组及其响应的选择一些PPP
参数,和进行网络层配置,NCP
(网络控制协议)给新接入的PC
机分配一个临时的IP
地址,使PC
机称为Internet
上的一个主机。通信完毕时,NCP
释放网络层连接,收回原来分配出去的IP
地址。接着,LCP
释放数据链路层连接。最后释放的是物理层的连接。
3.2.2 使用广播信道的数据链路层
局域网中使用广播信道进行数据传输。
共享通信媒体
1、静态划分信道(太麻烦,一般不使用)
频分复用
时分复用
波分复用
马分复用
2、动态媒体接入控制(多点接入)
随机接入(主要被以太网采用)
受控接入,如多点线路探寻或轮询(目前已不被采用)-
认识以太网
最初的以太网是将许多计算机都连接到一根总线上。当初人为这样的连接方法既简单又可靠,因为总线上没有源器件。
说明:这是正常情况下的情况,但是如果A
计算机想要获得相关数据,就可以使用一些抓包工具实现,这样信息就不安全了。 以太网使用
CSMA/CD
协议
CSMA/CD
表示载波监听多点接入/碰撞检测Carrier Sense Multiple Access with Collision Detection
。“多点接入”表示许多计算机以多点接入的方式连接在一根总线上行。“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞,就是用电子技术检测总线上有没有其他计算机发送的数据信号。-
碰撞检测
- 碰撞检测就是计算机边发送数据边检测信道上的信号电压大小。
1、当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)
2、当一个站检测到信号电压摆动值超过一定的门限值时,就人为总线上至少有两个站同时在发送数据,标明产生了碰撞。
3、所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称“冲突检测”。 - 检测到碰撞后
1、在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
2、每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
- 碰撞检测就是计算机边发送数据边检测信道上的信号电压大小。
CSMA/CD
协议的重要特性
使用此协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。每个站在发送数据之后一小段时间内,存在着遭遇碰撞的可能性。这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。争用期
最先发送数据帧的站,在发送数据帧后至多经过时间2τ(两倍的端到端时延)就可知道发送的数据帧是否遭到了碰撞。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
争用期
1、以太网的端到端时延2τ
称为争用期或碰撞窗口。通常,取51.2μs
为争用期的长度。
2、对于10Mb/s
以太网,在争用期内可发送512bit
,即64
字节
3、以太网在发送数据时,若前64
字节未发生冲突,则后续的数据就不会发生冲突
最短有效帧长
1、如果发生冲突,就一定是在发送的前64
字节之内
2、由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于64
字节
3、以太网规定了最短有效帧长为64
字节,凡长度小于64
字节的帧都是由于冲突而异常中止的无效帧。-
二进制指数类型退避算法
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据- 确定基本退避时间,一般是取为争用期
2τ
- 确定参数
k,k = Min[重传次数, 10]
- 从整数集合
[0, 1, ......, (2^k-1)]
中随机地取出一个数,记为r
。重传所需的时延就是r
倍的基本退避时间2τ
。 - 当重传达
16
次仍不能成功时即丢弃该帧,并向高层报告。
- 确定基本退避时间,一般是取为争用期