3.1 帧定界
帧的定义 :
在分层的网络体系中,数据链路层的传输单元则称为帧。在数据链路层,总是把来自上层的数据以帧为单位打包,然后在物理线路上传输。
一帧通常包括:
帧的开始和结尾的标识Flag,控制字段Header,来自上层的净负荷(网络层的数据),差错检测码CRC等。
帧定界:
- 基于字符:该方式中,帧是字节或字符的集合。每帧的开始和结束位置使用一个专用字符标识一帧的边界,称为Flag,接收端如果收到两个连续的Flag字符则指示一帧的结束和下一帧的开始。
- 基于比特 :该方式中,帧看成一个比特序列的集合。每一帧开始和结束用一个特殊的比特序列标识,例如在HDLC协议中使用01111110(0x7e)序列作为帧定界的Flag标志。
3.2 流量控制
定义:
负责协调两个通信实体之间的数据传输速率,防止发送端的发送速率超过接收端的处理能力。
分类:
- 开环:发送端和接收端之间没有反馈信息
- 电路交换与虚电路技术中
- 闭环:有反馈信息
- 停等,滑动窗口-ARQ等
停-等协议:
简介:发送端每发送一个数据单元,都要启动一个超时定时器,然后等待接收方的证实消息,收到证实消息后,发送下一个数据单元。
信道利用率
滑动窗口协议
简介:
为克服停-等式协议的缺点,滑动窗口协议允许发送端在规定的窗口尺寸范围内,连续发送多个数据单元,而不必等待收到一个ACK消息才发送下一个数据单元。
窗口:
发送端可以连续发送的、且未被确认的数据单元的上限。窗口尺寸通常由数据单元中的顺序号字段定义
工作原理:假设可用顺序号为从0到7,且SWS=RWS=7。
3.3 差错控制
定义:
- 包括差错检测和校正两个方面 。
- 增加冗余信息
- 前向纠错和重发纠错
差错检测:
循环冗余校验码CRC :
是目前通信中最常用的检测传输差错的技术之一,优点是可以用很少的冗余比特检测很大的变长数据单元是否发生差错,尤其对突发差错的检测效率很高,并且易于用硬件实现算法 。
主要用于数据链路层的差错检测
计算CRC步骤:
假设生成多项式G(x)的阶数为k,CRC算法的具体运算步骤如下:
- 执行xk×M(x),即将M(x)左移k位,得到零扩展的T(x);
- 执行T(x)/ G(x)的模2多项式除法运算,求出余项R(x);
- 执行T(x)- R(x)模2多项式减法,得到待发送的P(x)。
互联网校验和
校验和算法检错的原理:
假设一个字由16比特组成,一个比特序列就可以看成是一个16比特为单位的字序列,在发送端以16比特整数为单位执行加法运算,将求和的结果作为校验和与原数据比特序列一起发送。
在接收端对接收到的数据比特序列执行相同的求和运算,将求和的结果与接收到的校验和进行比较,如果相等,就表明没有差错,反之则表示有差错。
重发纠错:
GBN是通信网中最常用的一种重复纠错方式。对基于滑动窗口协议的GBN,假设窗口值为n,则主要工作特点描述如下:
- 发送端允许连续传输至多n个未证实的数据单元。
- 接收端按顺序接收数据单元。
- 不接收错序的数据单元,如果收到错序的,则丢弃。
- 接收端对数据单元采用累积证实方式(cumulative acknowledgements)。
- 当接收端发送ACK(x)消息时,含义是:期望接收的下一个数据单元的顺序号是x,x之前的都正确接收了。
- 发送端仅为当前发送窗口中第一个未证实的数据单元设置1个超时定时器。
每次收到Ack消息后,则重置该定时器;假如超时,如果定时器对应的顺序号为A+1,则重传从A+1开始,所有未被证实的数据单元
SR的主要工作特点如下:- 发送端可以至多连续传输n个未证实的数据单元。
- 接收端对每个数据单元分别证实,例如:顺序号为k的数据单元丢失, k+1正确接收。
- 接收端发送ACK(k+1),证实数据单元k+1正确接收了。
- 发送端则在数据单元k超时后,仅选择重传数据单元k。
- SR的重传效率由于GBN,但协议更复杂,开销更大。
- 发送端需要为每个未证实的分组单独设置一个定时器。
- 接收端需要更大的缓存,更复杂的处理逻辑,以保证能将重传的数据单元插入到正确的位置。
3.4 路由选择
什么是路由(Routing)?
- 网络互联的粘合剂(逻辑互联):
- 以合理的成本、可接受的性能,确定到目的地的路由
转发: “数据面”
- 使用路由表,将数据分组转发到正确的输出链路上
- 每个路由器独立执行
路由: “控制面”
-
- 计算到每个目的地的路径
- 创建、维护本地路由表
- 需要路由器协作运行