数据链路层的数据传递
2024-01-03 00:01:36
计算机网络 (3) 数据链路层——封装成帧、差错检测
数据链路层概述
在计算机网络中,数据链路层是OSI模型中的第二层,它位于物理层和网络层之间。数据链路层的主要作用是将网络层传递下来的数据分组封装成数据帧,并通过链路控制协议来确保数据帧在链路上可靠传输,同时利用差错检测机制来确保数据帧的完整性。
数据链路层主要功能:
-
封装成帧 :将网络层传递下来的数据分组封装成数据帧,其中包括帧头和帧尾,帧头中包含源地址、目的地址、数据长度等信息,帧尾中包含差错检测码(CRC)。
-
差错检测 :利用差错检测机制来检测数据帧在传输过程中是否发生错误。常用的差错检测方法有循环冗余校验(CRC)和奇偶校验。
-
可靠传输 :通过链路控制协议来确保数据帧在链路上可靠传输,链路控制协议可以采用滑动窗口协议、停止等待协议等。
封装成帧
数据链路层将网络层传递下来的数据分组封装成数据帧。数据帧由帧头、数据和帧尾三部分组成。帧头中包含源地址、目的地址、数据长度等信息,帧尾中包含差错检测码(CRC)。数据帧的格式如下:
+--------------+---------+---------+------------+
| 帧头 | 数据 | 帧尾 | 差错检测码 |
+--------------+---------+---------+------------+
| 源地址 | 目的地址 | 数据长度 | CRC码 |
+--------------+---------+---------+------------+
封装成帧的过程可以分为以下几个步骤:
-
将网络层传递下来的数据分组加上帧头和帧尾,形成数据帧。
-
计算数据帧的差错检测码(CRC)。
-
将数据帧发送到物理层进行传输。
差错检测
数据链路层利用差错检测机制来检测数据帧在传输过程中是否发生错误。常用的差错检测方法有循环冗余校验(CRC)和奇偶校验。
循环冗余校验(CRC)是目前最常用的差错检测方法。CRC码是在数据帧的最后添加一个校验码,校验码是由数据帧中的数据计算出来的。当数据帧到达接收端时,接收端会重新计算校验码,并与接收到的校验码进行比较。如果两个校验码一致,则说明数据帧没有发生错误;如果两个校验码不一致,则说明数据帧发生了错误。
奇偶校验是一种简单的差错检测方法。奇偶校验在数据帧的最后添加一个校验位,校验位的值是数据帧中1的个数的奇偶性。当数据帧到达接收端时,接收端会重新计算校验位,并与接收到的校验位进行比较。如果两个校验位一致,则说明数据帧没有发生错误;如果两个校验位不一致,则说明数据帧发生了错误。
可靠传输
数据链路层通过链路控制协议来确保数据帧在链路上可靠传输。链路控制协议可以采用滑动窗口协议、停止等待协议等。
滑动窗口协议是目前最常用的链路控制协议。滑动窗口协议允许发送端同时发送多个数据帧,而接收端可以同时接收多个数据帧。滑动窗口协议还采用了超时重传机制,当发送端在规定时间内没有收到接收端的确认信号时,发送端会重新发送数据帧。
停止等待协议是一种简单的链路控制协议。停止等待协议要求发送端每次只发送一个数据帧,并且在收到接收端的确认信号后再发送下一个数据帧。停止等待协议的缺点是效率较低,因为发送端必须等待接收端的确认信号才能发送下一个数据帧。
结论
数据链路层是计算机网络的重要组成部分,它负责将网络层传递下来的数据分组封装成数据帧,并通过链路控制协议来确保数据帧在链路上可靠传输,同时利用差错检测机制来确保数据帧的完整性。