3.1 使用点对点信道的数据链路层
数据链路和帧
链路:
是一条无源的点到点的物理线路段,中间没有任何其他的交换节点
数据链路
把用于控制数据传输的通信协议的硬件软件加到链路上,就构成了数据链路
最常见的方法是使用网络适配器(即网卡)来实现这些协议的硬件和软件
帧
数据链路层协议基本单元PDU:帧
三个基本问题
封装成帧
封装成帧(framing):在一段数据的前后分别添加首部和尾部,构成一个帧。
首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。
用控制字符作为帧定界符
SOH放在帧的最前面,表示帧的首部开始
EOT放在帧的最后面,表示帧的结束
透明传输
由于SOH和EOT是二进制的代码,如果需要传输的数据部分的二进制还有SOH或者EOT的子串,就会导致帧定界出现问题,数据传输就会出现错误
透明:指某一个实际存在的事物看起来却好像不存在一样
"在数据链路层透明传送数据”表示:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。
用字节填充(或字符填充)法解决透明传输的问题
差错检测
这里指的是比特差错检测,即传输的数据的某个比特出现了错误
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER(Bit Error Rate)
循环冗余检测CRC(Cyclic Redundancy Check)原理
- 在发送端,将数据划分为等长的组,假设长度为k
- 在发送的时候,为每组添加长度为n的冗余码,将这个长度为k+n的数据封装成帧发送出去
发送端——CRC冗余码的计算
- 假设数据为M,长度为k,冗余码的长度为n,除数为P,P的长度为n+1
- 在M后面加上n个0,然后用这个数字去除P,得到的长度为n 的余数,即CRC冗余码
这种为进行检错而添加的冗余码常称为帧检验序列FCS
接收端——CRC检验
- 用得到的数据除以事先约定的除数P,看得到的余数是不是0即可
- 如果是0,则代表传输无误
- 如果不是0,则代表发送过程出现错误,需要将帧丢弃
CRC和FCS的关系
CRC是循环冗余检验,是一种捡错方法,而FCS是添加在数据后面的冗余码
FCS可以用CRC的方法计算出,但并不是非得用CRC的方法计算
注意
CRC差错检测技术只能做到无差错接收,即接收的帧都被认为是没有在传输过程中产生错误,属于无比特差错
无比特差错和无传输差错
可靠传输:数据链路层发送端发送什么,接收端就收到什么
传输差错分为:
- 比特差错
- 传输差错:帧丢失、帧重复、帧失序等等
CRC只能实现无比特差错的传输,并不属于可靠传输
3.2 点对点协议PPP
PPP特点
互联网用户通常需要连接到某个ISP才能访问互联网,而PPP就是用于用户计算机与ISP进行通信时使用的数据链路层协议
不支持多点线路,只支持点对点通信
只支持全双工链路
需要满足的要求:
- 简单 —— 首要要求。
- 封装成帧 —— 必须规定特殊的字符作为帧定界符。
- 透明性 —— 必须保证数据传输的透明性。
- 多种网络层协议——能够在同一条物理链路上同时支持多种网络层协议。
- 多种类型链路 —— 能够在多种类型的链路上运行。
- 差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
- 检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态。
- 最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性。
- 网络层地址协商 ——必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
- 数据压缩协商——必须提供一种方法来协商使用数据压缩算法。
PPP协议的帧格式
首部:4个字段
- 标志字段F : 0x7E,连续两个帧之间只需要用一个标志字段
- 地址字段A : 只置为0xFF,无作用
- 控制字段C:通常置0x03,无作用
- 协议字段
尾部:2个字段
- FCS,用CRC计算出的检错码
- 标志字段F:0x7E
透明传输问题:
当PPP用在异步传输时,使用字节填充法
发送方:
- 将数据字段出现的每一个0x7E变成7D5E,其中7D是转义字符,5E是将0x7E异或了0x20
- 若数据字段本身存在7D,则变成7D5D,方法同上
- 将每一个ASCII码控制字符(即数值小雨0x20的字符)加上0x20,变成非控制字符,然后在前面插入转义字符0x7D
接收方:
与发送方进行相反的变换
当PPP用在同步传输时,使用零比特填充法
发送方:
再每五个连续的1后面加一个0
接收方:
删除每五个连续的1后面的一个0
PPP协议的状态图
使用广播信道的数据链路层
适配器的作用
网络接口板又称 通信适配器或网络接口卡NIC,或者网卡
主要是用来将计算机与外界互联网连接起来
适配器的重要功能:
- 进行串行/并行转换
- 对数据进行缓存
- 在计算机的操作系统安装设备驱动程序
- 实现以太网协议
并行传输:并行传输是在传输中有多个数据位同时在设备之间进行的传输.一个编了码的字符通常是由若干位二进制数表示,如用ASCII码编码的符号是由8位二进制数表示的,则并行传输ASCII编码符号就需要8个传输信道,使表示一个符号的所有数据位能同时沿着各自的信道并排的传输.
串行传输:串行传输是数据在传输中只有1个数据位在设备之间进行的传输.对任何一个由若干位二进制表示的字符,串行传输都是用一个传输信道,按位有序的对字符进行传输.串行传输的速度比并行传输的速度要慢得多,但费用低.并行传输适用距离短,而串行传输适用远距离传输。
异步传输:异步传输将比特分成小组进行传送,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接收方从不知道它们会在什么时候到达。一个常见的例子是计算机键盘与主机的通信。按下一个字母键、数字键或特殊字符键,就发送一个8比特位的ASCII代码。键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。
CSMA/CD协议的引入
最早的以太网:将许多计算机连接到一根总线上
为了实现一对一通信,将接收站的硬件地址写入帧首部中的目的地址字段中, 仅当数据帧中的目的地址与适配器硬件地址一致时,才能接收这个数据帧
缺点:多个站点同时发送时,会产生发送碰撞或冲突,导致发送失败
所以以太网采用了两种措施,来使得通信更方便
- 采用较为灵活的无连接的工作方式,不必先建立连接就可以直接发送数据,而且对发送的数据帧不进行编号,也不要求对方发回确认,提供不可靠的交付服务,同一时间只能允许一台计算机发送,使用的是CSMA/CD协议减少冲突发生
- 发送的数据使用曼彻斯特编码,方便把同步信号提取出来
CSMA/CD协议
CSMA/CD:载波监听多点接入/碰撞检测
多点接入
说明这是总线型网络,许多计算机以多点接入的方式接在一根总线上
载波监听
变发送边监听,在发送数据前和发送数据过程中,都时时刻刻检测信道
若检测到总线空闲96比特时间,就发送帧
碰撞检测
适配器边发送数据,边检测信道上的信号电压的变化情况。电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞(或冲突)
当发生碰撞后,传输的信号就发生了严重失真,无法提取有用的信息
所以一旦检测到碰撞的发生,就要立刻停止该帧的信号发送,等待一段随机时间后再次重新发送帧
为什么要进行碰撞检测
因为信号存在传播时延,对载波监听产生了影响
争用期/碰撞窗口
以太网的端到端往返时延2t称为争用期,或碰撞窗口
具体的争用期时间 = 51.2μs
发送的最短帧长64字节,即512bit,对于10Mbit/s的以太网,发送512bit的时间需要51.2μs,即争用期为51.2μs
最短帧长= 争用期 * 数据传输率
经过争用期这段时间还没检测到碰撞,才能肯定这次发送不会发生碰撞
截断二进制指数退避算法
发生碰撞的站停止发送数据后,要退避一个随机时间后在再发送数据
基本的退避时间 = 争用期
再从集合 [0, 1, 2, …, 2k-1]中随机取出一个数,记作r,其中k = min(重传次数,10),则重传退避的时延 = r * 基本退避时间
当重传16次仍不能成功时,便丢弃该帧,并向高层报告
人为干扰信号
检测到冲突后,立即停止发送数据帧,接着发送32或48比特的人为干扰信号
帧间最小间隔为9.6μs,因为载波监听是96bit
CSMA/CA
载波监听多点接入/碰撞避免
只能避免碰撞,不能检测碰撞
CSMA/CA用于无线局域网,CSMA/CD用于总线网
无线局域网不使用CSMA/CD的原因:
- 无法做到360度全面检测碰撞
- 隐蔽站
工作原理:
-
检测信道是否空闲
- 空闲,则发出RTS
- 忙,则等待
-
接收端收到RTS,将会响应CTS。此时如果收到别的用户发送的RTS,则会不进行响应
-
发送端收到CTS后,开始发送数据帧,同时预约信道,即告诉其他站点自己要传送多久数据,实现碰撞避免
-
接收端收到数据帧后,将用CRC来检验数据正确性,正确则响应 ACK帧
-
发送方收到ACK后,进行下一个数据帧的发送,如果没有收到,则进行重传,直到至规定重传次数,采用二进制退避算法来确定随机推迟时间
预约信道,ACK确认帧,RTS/CTS帧(可选)
RTS/CTS是用于解决隐蔽站的问题
MAC地址
硬件地址又称物理地址,或MAC地址
IEEE 802 标准为局域网规定了一种 48 位的全球地址(简称为地址)是指局域网上的每一台计算机中固化在适配器的 ROM 中的地址。
注意:如果连接在局域网上的主机或路由器安装有多个适配器,这样的主机或路由器就有多个“地址〞。更准确些说,这种48 位“地址”应当是某个接口的标识符。
IEEE 注册管理机构 RA 负责向厂家分配前3 个字节(即高24 位), 称为组织唯一标识符 OUI (Organizationally Unique Identifier)
厂家自行指派后 3 个字节(即低 24位),称为扩展标识符
必须保证生产出的适配器没有重复地址
无效的MAC帧
- 数据字段的长度与长度字段的值不一致
- 帧的长度不是整数个字节
- 用收到的帧检验序列 FCS 查出有差错
- 数据字段的长度不在46~1500 字节之间
- 有效的 MAC 帧长度为64~1518 字节之间
对于检查出的无效的MAC帧就简单丢弃
以太网是不负责重传丢弃的帧
以太网交换机的优点
以太网交换机可以隔离碰撞域,不能隔离广播域
集线器既不能隔离碰撞域,也不能隔离广播域,相当于是根总线