上一章节:物理层:https://blog.csdn.net/pcwl1206/article/details/83857243
本文篇幅较长,可以根据目录快速定位!
第三章:数据链路层
一、数据链路层基本概念及基本问题
1.1、基本概念
1.1.1 数据链路层使用的信道类型:
(1)点对点信道:这种信道使用一对一的点对点通信方式;
(2)广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享通道协议协调这些主机的数据发送。
1.1.2 链路与数据链路
(1)链路(link):是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。
(2)数据链路(data link):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方式是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的作用。
1.1.3 下面这张图显示的是H1向H2发送数据:
1.1.4 帧
数据链路层传送的是帧。帧是数据链路层的协议单元。
1.2、三个基本问题
数据链路层要解决的三个基本问题是:封装成帧、透明传输与差错控制。
1.2.1 封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。首部和尾部的一个重要作用就是进行帧定界。
说明:MTU(Maximum Transfer Unit):最大传输单元,数据部分长度的上限(1500个字节)
1.2.1.1 用控制字符进行帧定界的方法举例
计算机在收取数据的时候,必须包括帧的开始符和结束符,如果少了任何一个则认为数据不完整,直接丢弃,不接收。
1.2.2 透明传输
用字节填充法解决透明传输的问题:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入字符“ESC”。
字节填充(byte stuffing)或字符填充(character stuffing):接收端的数据链路层将数据送往网络层之前删除插入的转义字符。如果转义字符也出现在数据中,那么应该在转义字符前插入一个转义字符。当接收端连续收到连续的两个转义字符时,就删除其中的前面的一个。
对于发送者和接收者并不知道加了ESC转义字符,所以叫做透明传输。
1.2.3 差错控制
传输过程中可能会产生比特差错:1可能会变成0,而0也可能变成1。
在一段时间内,传输错误的比特占所传输比特总数的比率为误码率BER(Bit Error Rate),误码率和信噪比有很大的关系。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用的是循环冗余检验CRC。使用CRC循环冗余差错技术只能做到无差错接收,即凡是接收到数据链路层的帧都没有传输差错。
二、两种情况下的数据链路层
2.1、使用点对点信道的数据链路层
我们知道,互联网用户通常都需要连接到某个ISP才能接入到互联网。点对点(PPP:Point-to-Point Protocol)协议才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
2.1.1 PPP协议应该满足和不需要满足的要求如下表所示:
应该满足的要求 | 不需要满足的要求 |
---|---|
简单---这是首要的要求 | 纠错 |
封装成帧 | 流量控制 |
透明性 | 序号 |
多种网络层协议 | 多点线路 |
多种类型链路 | 半双工或单工链路 |
差错检测 | ......... |
检测连接状态 | |
最大传输单元 |