一、数据链路层所使用的信道类型:
1、点对点信道->PPP协议
2、广播信道。->CSMA/CD协议
二、从层次上看数据的流动
三、数据链路和帧
链路:即物理链路,从一个结点到相邻节点的一段物理链路。
数据链路:逻辑链路,当在一条线路上传送数据时,除去必须的物理链路以外还需要一些必须的通信协议来控制数据的传输,把实现这些协议的硬件和软件加到链路上就构成了数据链路。
帧:数据链路层把网络层交下来的数据(IP数据报)构成帧发送到链路上。数据链路层进行通信时的步骤如下:
1 结点A的数据链路层把网络层交付下来的IP数据报添加首部和尾部封装成帧。
2 结点A把封装好的帧交给结点B的数据链路层。
3 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给网络层,否则丢弃该帧。
四、数据链路层的三个基本问题
1、封装成帧
为什么要将数据封装成帧?
1. 数据分割和组织
-
分割数据:网络层传递的数据包可能很大,直接传输不仅效率低下,还容易出错。封装成帧可以将大数据包分割成多个较小的帧,便于传输和管理。
-
组织数据:帧结构为数据提供了清晰的组织形式,每个帧都包含了必要的控制信息和校验机制,使得数据在传输过程中更加有序和可控。
2. 错误检测与纠正
-
错误检测:帧头和帧尾中的控制字段(如帧校验序列,FCS)用于检测数据在传输过程中是否发生了错误。如果没有封装成帧,错误检测将变得非常复杂和低效。
-
错误纠正:通过封装成帧,数据链路层可以使用各种协议(如HDLC、PPP)进行差错控制,确保数据的可靠传输。例如,接收方可以通过序列号和确认机制进行重传请求。
3. 寻址与识别
-
寻址:每个帧中包含了源地址和目的地址(如MAC地址),这些地址用于在局域网中正确标识发送方和接收方。如果没有封装成帧,每个数据包都需要额外携带这些地址信息,增加了不必要的复杂性和开销。
-
识别:帧中的控制字段(如帧类型、协议类型)帮助接收方识别数据的类型和如何处理这些数据。这在多种协议共存的环境中尤为重要。
4. 流量控制与拥塞控制
-
流量控制:通过封装成帧,数据链路层可以使用各种流量控制机制(如滑动窗口协议)来管理数据流量,防止发送方发送过快导致接收方无法处理。
-
拥塞控制:在某些情况下,封装成帧也有助于网络中的拥塞控制。例如,通过限制帧的发送速率来避免网络拥塞。
5. 协议兼容性
-
协议兼容:不同的数据链路层协议(如以太网、PPP、HDLC)有不同的帧格式和功能。通过封装成帧,不同的设备和网络可以使用统一的帧结构进行通信,确保协议的兼容性和互操作性。
6. 安全性
-
数据完整性:帧校验序列(FCS)等机制确保了数据在传输过程中的完整性,防止数据被篡改或损坏。
-
访问控制:通过帧中的地址信息,数据链路层可以实现基本的访问控制,防止未经授权的设备接入网络。
帧首部和帧尾部还有一个很重要的功能就是进行帧定界。为了提高传输效率,要求尽量让帧的数据部分长度大于帧首部和帧尾部,不过,每一种链路层协议都规定了传送帧的数据部分长度上限,即最大传送单元MTU。以太网的最大传送单元MTU的值为1500B。
2、透明传输
- 无改动传输:透明传输意味着数据在传输过程中不会被修改或丢失,保持其原始状态。这意味着数据链路层仅负责封装、传输和解封装数据,而不对数据内容本身进行任何处理。
- 无感知传输:高层协议(如网络层)不需要了解底层物理层的具体实现细节,只需关心数据是否被正确传输。
面向字节的物理链路采用字节填充的方法实现透明传输。
在帧的首部和尾部有帧定界符,帧定界符是一个特殊数值,如果在帧的数据部分恰好也包含了这个数值,那么接收方在解析数据链路层发来的帧时,就会错误的认为这就是帧的结束 。解决办法是在将帧交付给物理层之前,对帧的数据载荷中数值与针定界符相同的数据前插入转义字符,当然,如果数据载荷中出现了与转义字符数值相同的数据,就在其前面再添加一个转义字符(套娃),接收方在解析收到的帧时,再逐个剔除转义字符,从而提取出正确的数据。
面向比特的物理链路采用比特填充的方法实现透明传输
如图所示 ,这里采用0比特填充法,假设某个帧的帧首部和尾部为01111110,如果在数据载荷部分也出现了与帧首部尾部相同的位串,就无法实现透明传输,这里的解决办法是,每出现连续的5个1就在后面插入一个比特0.
差错检验:这里只介绍一下CRC循环冗余检验,具体计算步骤参考湖南科技大学计算机网络深入浅出视频课。
五、 CSMA/CD协议
CSMA/CD协议的意思是载波监听多点接入/碰撞检测