计算机网络-数据链路层
数据链路层属于计算机网络的低层
数据链路层使用的信道主要有以下两种类型
- 点对点信道
- 广播信道
三个基本问题
- 封装成帧
- 透明传输
- 差错检测
封装成帧
封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
首部和尾部的一个重要作用就是进行帧定界。
例子:用控制字符进行帧定界
当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。
控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束
透明传输
透明传输,要做到无论什么样的数据都能通过
存在问题
如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”
字节填充 / 字符填充
发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”
接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
差错检测
在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
误码率与信噪比有很大的关系。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施
循环冗余校验 CRC
在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。
发送端生成帧检验序列 FCS
- 在发送端,先把数据划分为组。假定每组 k 个比特。
- 假设待传送的一组数据 M = 101001(现在 k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送
- 用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
- 得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。
- 将余数 R 作为冗余码拼接在数据 M 后面发送出去
在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)
接收端 CRC检测
(1) 若得出的余数 R = 0,则判定这个帧没有差错,就接受 (accept)。
(2) 若余数 R != 0,则判定这个帧有差错,就丢弃。
但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。
只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。
无差错接受
凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错
可以认为凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受
在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输
要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
点对点协议 PPP
组成
- 一个将 IP 数据报封装到串行链路的方法。
- 链路控制协议 LCP (Link Control Protocol)。
- 网络控制协议 NCP (Network Control Protocol)。
PPP 协议的帧格式
PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。
标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。
地址字段 A 只置为 0xFF。地址字段实际上并不起作用。
控制字段 C 通常置为 0x03。
PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节
利用字节填充来达到透明传输的目的
协议字段
- 若为 0x0021,则信息字段就是 IP 数据报
- 若为 0x8021,则信息字段是网络控制数据
- 若为 0xC021,则信息字段是 PPP 链路控制数据
- 若为 0xC023,则信息字段是鉴别数据
零比特填充
PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。
在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除
PPP 协议不使用序号和确认机制的原因
- 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
- 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
- 帧检验序列 FCS 字段可保证无差错接受。
PPP 协议的工作状态
- 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
- PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
- 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
- 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。
使用广播信道的数据链路层
局域网的数据链路层
局域网最主要的特点
- 网络为一个单位所拥有;
- 地理范围和站点数目均有限。
局域网主要优点
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和残存性。
适配器
网络接口板又称为通信适配器 (adapter) 或网络接口卡 NIC (Network Interface Card),或“网卡”
适配器的重要功能:
- 进行串行/并行转换。
- 对数据进行缓存。
- 在计算机的操作系统安装设备驱动程序。
- 实现以太网协议。
以太网的MAC层
帧类型
- 单播 (unicast) 帧(一对一)
- 广播 (broadcast) 帧(一对全体)
- 多播 (multicast) 帧(一对多)
- 混杂模式