第3章 数据链路层
直到收到ACK 才发送下一帧
ACK DATA2
上交主机; 发送应答信息; 转到第一步
ACK
两种情况的对比(传输均无差错)
不需要流量控制
A
B
需要流量控制
A
B
送主机 B
送主机 B
送主机 B
时
间
送主机 B
送主机 B 送主机 B
实用的停止等待协议
A
B
送 主 机
送
时
主
间
机
(a) 正常情况
四种情况
A
B
A
B
出错
A 数据帧的
发送时间
tf
两个成功发送的
数据帧之间的 tT
最小时间间隔
tout
设置的
重传时间
DATA
DATA
B 传播时延 tp
ACK
处理时间 tpr 确认帧发送时间 ta 传播时延 tp 处理时间 tpr
时间
重传时间
重传时间的作用是:数据帧发送完毕后若经过了这样长的时 间还没有收到确认帧,就重传这个数据帧。
数据链路(data link) 除了物理线路外,还必须 有通信协议来控制这些数据的传输。若把实现 这些协议的硬件和软件加到链路上,就构成了 数据链路。
现在最常用的方法是使用适配器(即网卡)来实现 这些协议的硬件和软件。
一般的适配器都包括了数据链路层和物理层这两层 的功能。
数据链路层传送的是帧
被接收端当作无效帧而丢弃
解决透明传输问题
发送端的数据链路层在数据中出现控制字符 “SOH”或“EOT”的前面插入一个转义字符 “ESC”(其十六进制编码是 1B)。
字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网 络层之前删除插入的转义字符。
网络层
数据 链路层
结点 A
IP 数据报 装入
帧
物理层
1010… …0110
结点 B IP 数据报
取出 帧
1010… …0110
数据 链路层
结点 A
发送 帧
链路 (a)
链路 (b)
接收 帧
结点 B
3.1.2 三个基本问题
(1) 封装成帧 (2) 透明传输 (3) 差错控制
3.2 帧同步功能
为了使传输中发生差错后只将出错的有限数据进行重 发,数据链路层将比特流组织成以帧为单位传送。
ESC SOH
EOT
经过字节填充后发送的数据
3.2.2 比特填充的首尾定界符法
在前面介绍的字符分界法中存在一个大的不足,那就是 它仅依靠8位模式。而事实上,并不是所有的字符编码都 使用8位模式,如UNICODE编码就使用了16位编码方式。
“比特填充的首尾界定符法”是以一组特定的比特模式 (如01111110)来标志一帧的起始与终止,它允许任意 长度的位码,也允许任意每个字符有任意长度的位。
一个比特可表示 0 和 1 两种不同的序号。
帧的发送序号
数据帧中的发送序号 N(S) 以 0 和 1 交替 的方式出现在数据帧中。
每发一个新的数据帧,发送序号就和上 次发送的不一样。用这样的方法就可以 使收方能够区分开新的数据帧和重传的 数据帧了。
停止等待协议的算法
这里不使用否认帧(实用的数据链路层协议大 都是这样的),而且确认帧带有序号 n。
2: 不管发方以多快的速率发送数据, 收方总是来得及收下,并及时上交主机 。
2 停止等待协议 具有简单的流量控制
假设:链路是理想化的,所传输的数据不会出错也不会丢失。 协议思想:协调、控制接收方、发送方的速度。
发送方
接收方
协
DATA0
议
算
ACK
法
发出一帧; 等待;
DATA1
等待; 将收到的数据帧
tf = lf /C = lf /C (s)
(3-1)
发送时间 tf 也就是数据帧的发送时延。
数据帧沿链路传到结点B还要经历一个传播时延 tp。
结点 B 收到数据帧要花费时间进行处理,此时间称为
处理时间 tpr,发送确认帧 ACK 的发送时间为 ta。
停止等待协议中数据帧和确认帧 的发送时间关系
丢
失
tout
!
重 传
送 主 机
(b) 数据帧出错
重 传
送 主 机
(c) 数据帧丢失
A
B
tout 丢
送
失
主
重!
机
传
丢
弃
(d) 确认帧丢失
超时计时器的作用
结点A发送完一个数据帧时,就启动一个 超时计时器(timeout timer)。
计时器又称为定时器。
若到了超时计时器所设置的重传时间 tout 而仍收不到结点 B 的任何确认帧,则结 点 A 就重传前面所发送的这一数据帧。
但此时结点 B 还必须向 A 发送确认帧 ACK, 因为 B 已经知道 A 还没有收到上一次发过去 的确认帧 ACK。
帧的编号问题
任何一个编号系统的序号所占用的比特数一定 是有限的。因此,经过一段时间后,发送序号 就会重复。
序号占用的比特数越少,数据传输的额外开销 就越小。
对于停止等待协议,由于每发送一个数据帧就 停止等待,因此用一个比特来编号就够了。
若接收端收到的PPP帧的数据部分是 0001110111110111110110,问删除发送端加入的零比 特后变成怎样的比特串?
答案:(1) 011011111011111000 (2) 000111011111-11111-110
3.3 流量控制功能(传输层TCP来讲)
流量控制是指一组过程
限制发送方在等待确认前能够发送的数据量
保证发送实体发送的数据不超出接收实 体接收数据的能力
防止缓冲溢出
数据链路层功能 在数据链路层上传输数据帧
?发送方: 以多快的速度发送数据帧,即每帧之间相隔多长时间? 如何确认对方是否收到数据?
?接收方:
是否接收到正确的数据帧?如何告诉发送方? 能及时处理接收到的数据帧吗?
?传输过程: 会出错吗?会丢失数据帧吗?
!解决这些问题,是链路层的主要任务。
!针对这些问题所制定的通信规程就是数据链路层的通信协议。
3.3.1 完全理想化的数据传输
发送方 主 机 AP1 A
缓存
帧
帧
数据链路
接收方
主 AP2 机
B
高层
缓存 数ቤተ መጻሕፍቲ ባይዱ链路层
完全理想化的数据传输 所基于的两个前提
1: 链路是理想的传输信道,所传送的 任何数据既不会出差错也不会丢失。
一般可将重传时间选为略大于“从发完 数据帧到收到确认帧所需的平均时间” 。
解决重复帧的问题
使每一个数据帧带上不同的发送序号。每发送 一个新的数据帧就把它的发送序号加 1。
若结点 B 收到发送序号相同的数据帧,就表明 出现了重复帧。这时应丢弃重复帧,因为已经 收到过同样的数据帧并且也交给了主机 B。
发送端在 5 个连续 1 之后 填入 0 比特再发送出去
010011111010001010 发送端填入 0 比特
在接收端把 5 个连 续1 之后的 0 比特删除
010011111010001010 接收端删除填入的 0 比特
例题:
PPP协议使用同步传输技术传送比特串 0110111111111100。试问经过零比特填充后变成怎样 的比特串?
从层次上来看数据的流动
R1 网络层 链路层 物理层
R2 网络层 链路层 物理层
R3 网络层 链路层 物理层
H2
应用层 运输层 网络层 链路层 物理层
数据链路层的简单模型( 续)
主机 H1 向 H2 发送数据
主机 H1
路由器 R1
电话网
局域网
路由器 R2
广域网
路由器 R3
主机 H2
局域网
H1
应用层 运输层 网络层 链路层 物理层
按照习惯的表示法,ACKn 表示“第 n – 1 号帧 已经收到,现在期望接收第 n 号帧”。
ACK1 表示“0 号帧已收到,现在期望接收的下一 帧是 1 号帧”;
ACK0 表示“1 号帧已收到,现在期望接收的下一 帧是 0 号帧”。
停止等待协议的要点
连续出现相同发送序号的数据帧,表明 发送端进行了超时重传。连续出现相同 序号的确认帧,表明接收端收到了重复 帧。
为方便起见,我们设重传时间为 tout = tp + tpr+ ta + tp + tpr
设上式右端的处理时间 tpr 和确认帧的发送时间 ta 都远小于 传播时延 tp,因此可将重传时间取为两倍的传播时延,即 tout = 2tp
两个发送成功的数据帧之间的最小时间间隔是 tT = tf + tout = tf + 2tp
计算机网络
第 3 章 数据链路层
第3章 数据链路层
3.1 数据链路层概述 3.2 帧同步功能 3.3 流量控制功能 3.4 差错检测(重点)
3.1 数据链路层概述
数据链路层是OSI参考模型中的第二层,介乎于物理层和 网络层之间,在物理层所提供的服务的基础上向网络层 提供服务。数据链路层的作用是对物理层传输原始比特 流的功能的加强,将物理层提供的可能出错的物理连接 改造成为逻辑上无差错的数据链路,即使之对网络层表 现为一条无差错的链路。
如果转义字符也出现数据当中,那么应在转义字 符前面插入一个转义字符。当接收端收到连续的 两个转义字符时,就删除其中前面的一个。
用字节填充法解决透明传输的问题
帧开始符
SOH
EOT
原始数据
SOH
ESC