数据链路层使用的信道主要有以下两种类型:
1)点对点信道. 这种信道使用一对一的点对点通信方式;
2)广播信道. 这种信道使用一对多的广播通信方式, 因此过程比较复杂. 广播信道上连接的主机很多, 因此必须使用专用的共享信道协议来协调这些主机的数据发送.
3.1 使用点对点信道的数据链路层
3.1.1 数据链路和帧
链路(link): 是指一条无源的点到点的物理线路段, 中间没有任何其他的交换结点. 一条链路只是一条通路的一个组成部分.
数据链路 (data link): 在链路上, 使用了一些软硬件(最常用的是适配器即网卡) 来实现特定的通信协议, 这样的链路称为数据链路.
帧: 将收发两方的数据链路层视为直接通信, 这两端传输的数据的基本单元称为帧.
3.1.2 三个基本问题
数据链路层协议有许多种, 但是有三个基本问题则是共同的. 这三个基本问题是:
1)封装成帧
所谓封装成帧, 就是在一段数据 (这段数据的长度不能大于 MTU(Maximum Transmission Unit,MTU) 的首尾分别添加首部和尾部, 使其称为一个帧. 首部和尾部的作用就是进行帧定界.
控制字符 SOH(Start Of Head)放在一帧的最前面, 表示帧首部的开始. 另一个控制字符 EOT(End Of Transmission)放在帧的最后边, 表示帧的结束.
2)透明传输
透明传输解决的问题是处理帧中数据段出现的 EOT 字符. 如果数据段里面的与 EOT 相同的字符被识别为了 EOT, 那么这帧数据就识别错误了.
解决方法分为: 字符填充 (异步网络中) 或比特填充(同步网络中).
发送端的数据链路层在数据中的控制字符前面插入转义字符 ESC(其十六进制编码是 1B). 接收端的数据链路层在将数据发送给网络层之前会删除插入的转义字符. 如果转义字符也出现在数据中, 那么
应该在转义字符前面插入一个转义字符 ESC. 当接收端收到连续的两个转义字符时, 就删除前面的一个.
3)差错控制
数据在传输过程中可能会产生比特差错: 1 可能变成 0 而 0 也可能变成 1.
在一段时间内, 传输错误的比特占所传输比特总数的比率称为误码率(Bit Error Rate). 误码率与信噪比有很大关系.
为了保证数据传输的可靠性, 必须采用各种差错检测措施.
在数据链路层传送的帧中, 广泛使用了 循环冗余检验 (Cyclic Redundancy Check, CRC) 技术.
该技术的原理:
在发送端, 先把数据划分为组. 假定每组 k bit.
假定待传送的数据 M = 101001 (K=6), 我们在 M 后面再添加 n 位 用于差错检验的冗余码.
冗余码的求法: 首先收发双方约定一个 N+1 位的二进制数 P, 用 M*2^n (相当于将 M 左移 n 位), 除法运算得到的 n 位余数将被作为冗余码.
当接收方收到数据, 就将数据除以 P, 如果余数为 0 说明没有发生差错, 否则说明发生差错.
实例: 设定 M = 101110,P = 1001, 求得的冗余码为 011.
应当注意, 仅仅使用循环冗余检验, 只能做到无差错接受, 即 凡事接受的帧, 我们都能以无限接近 1 的概率认为这个帧在传输过程中没有产生差错. 但是, 循环冗余检验处理不了丢帧.
也就是说, 使用 CRC, 能够实现无比特差错的传输, 但不保证可靠传输. 可靠传输包括: 帧的不重复, 不丢失, 不失序.
3.2 点对点协议 PPP
3.2.1 PPP 协议的特点
对于点对点的链路, 目前使用最广泛的数据链路层协议是 PPP(point-to-point protocol).
PPP 协议应该满足的要求:
简单;
封装成帧 --- 选定特殊的字符作为帧定界符;
透明性;
支持多种网络层协议;
支持多种类型的链路;
具有差错检验 --- 能够对接收到的帧进行检测, 丢弃有差错的帧;
能够检测链路的连接状态;
有明确的 MTU;
使通信的网络层能够互相知道, 配置对方的网络层地址;
可以协商所使用的数据压缩算法.
PPP 协议的三个组成部分:
一个将 IP 数据报封装到串行链路的方法;
链路控制协议 LCP(Link Control Protocol)
网络控制协议 NCP(Network Control Protocol)
3.2.2 PPP 协议的帧格式
PPP 帧的首部和尾部分别为 4 个字段和 2 个字段. 所有 PPP 帧的长度都是整数字节
标志字段 F=0x7E
地址字段 A=0xFF, 地址字段实际上并不起作用
控制字段 C=0x03
透明传输问题:
当 PPP 用在同步传输链路时, 协议规定采用硬件来完成比特填充(和 HDLC 的做法一样).
当 PPP 用在异步传输时, 就使用一种特殊的字符填充法.
比特填充的规则:
当信息字段中出现了 0X7E, 就把 0X7E 变为两个字节: 0X7D 和 0X5E.
当信息字段中出现了 0X7D, 就把 0X7D 变为两个字节: 0X7D 和 0X5D.
3.3 使用广播信道的数据链路层
3.3.1 局域网的数据链路层
局域网的主要特点:
网络属于一个单位
地理范围和站点数量有限
局域网的主要优势: 具有广播功能, 从一个站点可以方便地访问网内资源. 链接在局域网内的各种软硬件资源可以被任意主机共享.
数据链路层的两个子层:
逻辑链路控制子层(Logical Link Control,LLC)------------- 几乎不用
媒体接入控制子层(Medium Access Control,Mac)--------- 主流
数据链路层的具体实现设备 --- 适配器:
适配器 (Adaptor) 又称为网络接口板或者网络接口卡.
适配器的重要功能:
进行数据的串行 / 并行转换;
进行数据的缓存;
在操作系统安装设备驱动程序;
实现以太网协议.
3.3.2 以太网的 Mac 层
1)Mac 层的硬件地址
在局域网中, 硬件地址又称为物理地址或者, Mac 地址. 这个地址有 48 位. 需要注意的是, 如果主机或者路由器安装有多个适配器, 那么就有多个地址.
Mac 地址的前 24 位 (6 个字节) 是厂家的组织标识符, 后 24 位是产品标识符, 必须保证生产出的适配器没有重复的 Mac 地址.
适配器检查 Mac 地址:
适配器每当从网络上接收到一个 Mac 帧, 就会去检查这个帧里的 Mac 地址. 如果不是自己的地址就直接丢弃. 如果是自己的 Mac 地址就收下, 再进行后续处理.
发往本站的帧包括以下三种:
单播帧(一对一)
广播帧(一对全部)
多播帧(一对多)
2)Mac 帧格式
前 8 个字节是帧前同步码.
3.4 以太网的扩展
3.4.1 在物理层扩展以太网
1)使用光纤扩展, 将主机通过一根光纤和一对光纤调制解调器连接到远端的集线器.
2)使用集线器扩展, 通过使用集线器, 可以构建更大的, 星型结构的以太网.
3.4.2 在数据链路层扩展以太网
1) 在数据链路层扩展以太网是更常用的办法;
2)早期使用网桥在数据链路层扩展以太网, 现在使用的是交换机.
网桥根据 Mac 帧的目的地址对其进行转发和过滤.
以太网交换机的特点和与集线器的区别:
)交换机实际上相当于多接口的网桥;
)交换机每一个接口都链接一个主机或者一个交换机;
)集线器工作在物理层, 交换机工作在数据链路层;
)不会像集线器那样广播数据, 而是会解析 Mac 帧, 发现帧有问题就过滤掉, 如果没有问题就根据 Mac 帧的目的地址对其进行转发.
来源: http://www.bubuko.com/infodetail-3717172.html