【用电脑浏览最佳】
1、数据链路层的地位
2、数据链路层信道类型
(1)点对点信道:使用一对一的点对点通信方式。
(2)广播信道:使用一对多的广播通信方式, 必须使用专用的共享信道协议来协调这些主机的数据发送。
3.1 使用点对点信道的数据链路层
3.1.1 数据链路和帧
1、链路 (link)
一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
一条链路只是一条通路的一个组成部分。
或物理链路。
2、数据链路 (data link)
把实现控制数据传输的协议的硬件和软件加到链路上,就构成了数据链路。
或逻辑链路。
典型实现:适配器(即网卡)。
3、数据链路层协议数据单元:帧
3.1.2 三个基本问题
1、封装成帧
(1)封装成帧 (framing):在一段数据的前后分别添加首部和尾部,构成一个帧。
(2)首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。
(3)最大传送单元 MTU (Maximum Transfer Unit) :规定了所能传送的帧的数据部分长度上限。
(4)用控制字符作为帧定界符
控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。
控制字符 EOT (End Of Transmission) 放在一帧的末尾,表示帧的结束。
2、透明传输
问题:如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误。
(1)透明
指某一个实际存在的事物看起来却好像不存在一样。
“在数据链路层透明传送数据”表示:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。
(2)用“字节填充”或“字符填充”法解决透明传输的问题
3、差错检测
在传输过程中可能会产生比特差错:1 -> 0, 0 -> 1。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
(1)循环冗余检验 CRC (Cyclic Redundancy Check) 原理
在发送端,先把数据划分为组。假定每组 k 个比特。
CRC 运算在每组 M 后面再添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去。一共发送 (k + n) 位。
(2)CRC 冗余码的计算
第一步,用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
第二步,得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q ,余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。
第三步,将余数 R 作为冗余码拼接在数据 M 后面,一起发送出去。这种为了进行检错而添加的冗余码常称为帧检验序列 FCS (Frame Check Sequence)。
例题:
(3)帧检验序列 FCS
在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
循环冗余检验 CRC 和帧检验序列 FCS 并不等同。 CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。 FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
(4)广泛使用的生成多项式P(X)
CRC-16 = X^16 +X^15 + X^2 + 1
CRC-CCITT = X^16 +X^12 + X^5 + 1
CRC-32 = X^32 +X^26 + X^23 + X^22 + X^16 +X^12 + X^11 +X^10 + X^8 +X^7+ X^5 +X^4 + X^2 + X + 1
(5)注意
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。
即:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
即:“凡是接收端数据链路层接受的帧均无差错”。
“无比特差错”与“无传输差错”是不同的。
可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。
传输差错可分为两大类: 比特差错。传输差错:帧丢失、帧重复或帧失序等。
在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。
要做到可靠传输,还必须再加上帧编号、确认和重传等机制。
3.2 点对点协议 PPP
3.2.1 PPP 协议的特点
对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
PPP 协议在 1994 年就已成为互联网的正式标准 [RFC 1661, STD51]。
用户到 ISP 的链路使用 PPP 协议:
1、PPP 协议应满足的需求
(1)简单 ——首要要求。
(2)封装成帧 —— 必须规定特殊的字符作为帧定界符。
(3)透明性 —— 必须保证数据传输的透明性。
(4)多种网络层协议 —— 能够在同一条物理链路上同时支持多种网络层协议。
(5)多种类型链路 —— 能够在多种类型的链路上运行。
(6)差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
(7)检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态。
(8)最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性。
(9)网络层地址协商 —— 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
(10)数据压缩协商 —— 必须提供一种方法来协商使用数据压缩算法。
2、PPP 协议的组成
三个组成部分: 一个将 IP 数据报封装到串行链路的方法。 一个链路控制协议 LCP (Link Control Protocol)。 一套网络控制协议 NCP (Network Control Protocol)。
3.2.2 PPP 协议的帧格式
1、各字段的意义
(1)首部:4 个字段
标志字段 F: 0x7E 。连续两帧之间只需要用一个标志字段。
地址字段 A:只置为 0xFF。实际上不起作用。
控制字段 C:通常置为 0x03。
协议字段。
(2)尾部:2 个字段。
(3)透明传输问题
当 PPP 用在异步传输时,使用字节填充法。
当 PPP 用在同步传输链路时,采用零比特填充法。
2、字节填充
3、零比特填充
3.2.3 PPP 协议的工作状态
1、PPP 链路初始化过程:
用户拨号接入 ISP 后,就建立了一条从用户个人电脑到 ISP 的物理连接。
用户个人电脑向 ISP 发送一系列的链路控制协议 LCP 分组(封装成多个 PPP 帧),以便建立LCP连接。
之后进行网络层配置。网络控制协议 NCP 给新接入的用户个人电脑分配一个临时的 IP 地址。
当用户通信完毕时,NCP 释放网络层连接,收回原来分配出去的IP地址。LCP 释放数据链路层连接。最后释放的是物理层的连接。
2、PPP 协议的状态图