今天的内容主要讲的是如何保证广域网中计算机的通信的可靠性:
- 数据链路层概述
- 点对点协议:PPP
- 点对多点协议:CSMA/CD
- 差错控制技术
1. 数据链路层概述
链路层中的信道
数据链路层使用的信道主要有以下两种类型:
- 点对点信道:这种信道使用一对一的点对点通信方式。
- 广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
数据链路和帧
- 链路(link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
一条链路只是一条通路(端到端)的一个组成部分。 - 数据链路(data link) 除了物理链路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
一般的适配器都包括了数据链路层和物理层这两层的功能。
数据链路层传送的是帧(Frame):
链路层提供的服务
数据链路层主要任务是实现网络上两个相邻结点之间的无差错传输。它在物理层提供物理连接和透明传输比特流服务的基础上,将物理层提供的不可靠的物理链路变为逻辑上无差错的数据链路,向网络层提供一条透明的数据链路。
- 成帧:封装网络数据报加上若干首(尾)部字段成为帧(Frame)
- 链路接入
- 媒体访问控制(Medium Access Control,MAC):规定了帧在链路上传输的规则
- MAC协议用于协调多个结点的帧传输
- 可靠交付
- 确认和重传
- 用于易于产生高差错率的链路(例如无线链路),目的是纠正一个差错
- 差错检测和纠正
- 奇偶校验法:变形:二维奇偶校验法
- Internet检验和(checksum)方法
- 循环冗余检测 (cyclic redundancy check,CRC) 别称:多项式编码
链路层的三个基本问题
数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:
- 封装成帧
- 透明传输
- 差错控制
1. 封装成帧
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。
确定帧的界限。首部和尾部的一个重要作用就是进行帧定界。
用控制字符进行帧定界的方法举例 :
2. 透明传输
- 对于异步传输的透明传输办法:字节(字符)填充
- 对于同步传输的透明传输办法:零比特填充
零比特填充的具体过程如下:
将要传输的数据集实例: 1111110011111011
零比特填充后的数据集: 111110100111110011
经过比特填充和插入开始-停止比特后的数据集:
01111110 111110100111110011 01111110
因此,将要传输的帧是:
01111110 111110100111110011 01111110
帧的开始 带比特填充的用户数据 帧的结束
3. 差错控制
所谓传输差错是通过通信信道后接收的数据与发送数据不一致的现象。包括:比特错误(即帧中的一个比特在传输过程中 0变成1 或 1变成0 )、帧丢失、帧重复、帧失序。
差错控制包括检错和纠错
差错控制编码是在发送端被传输的信息码元序列中,以一定的编码规则附加一些校验码元,接收端利用该规则进行相应的译码,译码的结果有可能发现差错或纠正差错。
差错控制编码又可分为检错码和纠错码,前者能自动发现差错,后者不仅能发现差错而且能自动纠正差错的编码。
但是纠错码效率较低。一般通过反馈重传机制来纠错。
2. 点对点协议:PPP- PPP协议原理与特点
- PPP协议帧格式
- PPP 的工作状态
1. PPP协议原理与特点
现在全世界使用得最多的链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。
PPP协议特点
- 简单:这是首要的要求
- 支持多种网络层协议:PPPoE
- 链路管理:LCP
- 差错检测:PPP中包括FCS域,用来检测错误。
- 选项协商:PPP允许通信双方动态协商某些参数,如最大传送单元MRU
- 授权:PPP利用两个授权协议PAP和CHAP,可进行链路层授权,这两个协议通过发送和接收口令信息检查对方是否被授权与本机建立链路。
- 网络层IP地址协商:PPP允许一方作为服务器,在客户端拨入时分配IP地址。
2. PPP协议帧格式
F = 0x7E (“0x”表示后面的字符是用十六进制表示。二进制表示是 01111110)。
A 只置为 0xFF。地址字段实际上并不起作用。控制字段 C 通常置为 0x03。
PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。
PPP 有一个 2 个字节的协议字段:
- 当协议字段为 0x0021 时,PPP 帧的信息字段就是IP 数据报。
- 若为 0xC021, 则信息字段是 PPP 链路控制数据(LCP)。
- 若为 0x8021,则表示这是网络控制数据(NCP)。
3. PPP 的工作状态
3. 点对多点协议:CSMA/CD广播信道可以进行一对多的通信,能很方便且廉价地连接多个邻近的计算机。最早的局域网(以太网)是将许多计算机都连接到一根总线上。
由于用广播信道连接的计算机共享同一传输媒体,因此使用广播信道的局域网被称为共享式局域网。虽然交换式局域网在有线领域已完全取代了共享式局域网,但无线局域网仍然使用的是共享媒体技术。
媒体接入控制
- 静态划分信道
频分多址、时分多址、码分多址 … - 动态媒体接入控制(多点接入)
随机接入,如以太网如何减少冲突,冲突后如何办
受控接入 ,如令牌环或轮询在集中或分布式控制下轮流接入
当多个站点同时发送数据时,信号会相互叠加(冲突),导致严重的失真
CSMA/CD
载波监听多点接入/碰撞检测 CSMA/CD (Carrier Sense Multiple Access with Collision Detection)
- “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
- “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
- “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。
CSMA/CD介质访问控制方法
载波侦听多路访问/冲突检测法主要应用于逻辑拓扑结构为总线结构的局域网。是一种随机争用型介质存取控制访问方法。具体工作过程:
- 先听后发
- 边听边发
- 冲突停止;
- 随机延迟后重发。
- 差错形成原因及其指标
- 差错检测
- 差错纠正–可靠传输
1. 差错形成原因及其指标
通信信道的噪声分为两类:热噪声和冲击噪声:
- 由热噪声引起的差错是随机错,不可避免;
- 冲击噪声引起的差错是突发错,外部引起;
在通信过程中产生的传输差错,是由随机差错与突发差错共同构成的。
误码率Pe应该是衡量数据传输系统正常工作状态下传输可靠性的参数之一:
其中N为传输的二进制码元总数,Ne为被传错的码元数;
2. 差错检测
差错检测是通过检错码来实现的。其原理是:在发送端被传输的信息码元序列中,以一定的编码规则附加一些校验码元,接收端利用该规则进行相应的译码从而发现差错。几种常用的检错码:
- 奇偶校验码
变形:二维奇偶校验码 - Internet校验和(checksum)
- CRC冗余校验
奇偶校验码
Internet校验和(checksum)
在网络中传输数据包,为了保证传输数据的正确性,使用了 checksum来校验数据是否正确,IP首部有自己的checksum,TCP、 UDP也有自己的checksum,分别校验不同部分的数据, IP首部的 checksum用于校验IP首部的数据是否正确, TCP的checksum用于校 验TCP头、 TCP数据部分是否正确, UDP的checksum用于校验UDP 头、 UDP数据是否正确。
- 发送端: 将发送的数据以两字节为单位进行补码相加,checksum处设置为0,得到32字节的数,再将底16位和高16位相加,结果求反,即为较验和。
- 接收端:和发送端相同的算法,checksum处使用发送端的结果进行补码相加,结果求反为0x0000,表明数据传输正确,否则数据传输不正确,舍弃。
checksum计算例子:
如计算下面一段数据的checksum,数据为16进制;
45 00 00 3c 00 00 00 00 40 11 6d 36 c0 a8 2b c3 08 08 08 08 11
加粗的6d 36为checksum字段,先把checksum设0,数据分组,补0,整理完后数据如下,中间checksum设置为0,最后补1byte 0;
4500 003c 0000 0000 4011 0000 c0a8 2bc3 0808 0808 1100
计算:
500+003c+0000+0000+4011+0000+c0a8+2bc3+0808+0808+1100 = 192C8
高低16bit相加: 1 + 92C8 = 92C9
取反: ~92C9 = 6D36
最后所得数据为:
45 00 00 3c 00 00 00 00 40 11 6d 36 c0 a8 2b c3 08 08 08 08 11
CRC冗余校验
循环冗余编码(CRC)是目前应用最广、检错能力很强的一种检错码编码方法。
- 循环冗余码(CRC码,多项式编码)
110001,表示成多项式 x5 + x4 + 1 - CRC码基本思想
先在要发送的帧后面附加一个数生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(采用“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理,所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。
循环冗余编码工作原理
生成多项式G(x):
CRC校验举例:
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)。
“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。
要做到“可靠传输” 就必须再加上下一节要讲的确认和重传机制。
3. 差错纠正--可靠传输
所谓可靠,即发送什么就收到什么,在不可靠的信道上实现可靠的数据传输
停止等待ARQ协议
可靠传输的机制和模型
差错检测和确认
只要超过了一段时间还没有收到确认,就认为已发送的帧出错或丢失了,因而重传已发送过的帧。这就叫做超时重传。
超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。
数据帧和确认帧都必须进行编号。
重传、编号、确认都是由可靠传输协议实体实现的,上层用户完全感觉不到!
自动重传请求ARQ
使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。
ARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。
停止等待ARQ的信道利用率较低,还有连续ARQ协议,留待传输层一章讲述TCP协议时介绍。
数据链路层的可靠传输
实现可靠传输需要付出代价(如会降低传输效率)。
因此,应当根据链路的具体情况来决定是否需要让链路层向上提供可靠传输服务。
当链路误码率非常低时,在数据链路层可不实现可靠传输,而是由上层协议(例如,运输层的TCP协议)来完成。
但是在使用无线信道传输数据时,由于信道质量较差,在数据链路层仍需要实现可靠传输(例如使用停止等待协议)。