【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)

文章目录

  • [第三章 数据链路层](#第三章 数据链路层)
    • [3.1 数据链路层概述](#3.1 数据链路层概述)
    • [3.2 封装成帧](#3.2 封装成帧)
    • [3.3 差错检测](#3.3 差错检测)
      • [3.3.1 奇偶校验](#3.3.1 奇偶校验)
      • [3.3.2 循环冗余校验](#3.3.2 循环冗余校验)

第三章 数据链路层

3.1 数据链路层概述

数据链路层是计算机网络体系结构中的一层,位于物理层和网络层之间。它负责在相邻节点之间传输数据,并提供可靠的数据传输。

数据链路层的主要功能包括:

帧封装:将由网络层传递下来的数据分割成较小的数据帧(Frame),并为每个帧添加首部和尾部,以便在物理介质上进行传输。

物理地址寻址:通过媒体访问控制(MAC)地址,也称为物理地址或硬件地址,唯一标识网络中的设备。数据链路层使用MAC地址来确定数据帧的发送和接收方。

媒体访问控制:协调不同设备在共享媒体上的访问,以避免冲突和碰撞。常见的媒体访问控制方法包括载波监听多路访问/碰撞检测(CSMA/CD)和载波监听多路访问/碰撞避免(CSMA/CA)。

错误检测与纠正:通过添加校验位或循环冗余检测(CRC)等机制,在数据帧中包含冗余信息,以便接收方可以检测到传输过程中引入的错误并进行纠正。

流量控制:通过使用滑动窗口等技术,控制发送方和接收方之间的数据流量,以确保接收方能够正确接收和处理数据。

链路管理:建立、维护和释放链路连接,包括链路的建立、认证、授权和关闭等操作。

概述

数据链路层的三个重要问题:封装成桢,差错检错,可靠传输

3.2 封装成帧

封装成桢 是指数据链路层给上层交付的协议数据单元添加桢头和桢尾使之称为桢。

  • 桢头和桢尾中包含着重要的控制信息。
  • 桢头和桢尾的作用之一就是桢定界。
桢定界

透明传输 是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

  • 面向字节的物理链路使用字节填充(或称为字符填充)的方法实现透明传输。
  • 面向比特的物理链路使用比特填充的方法实现透明传输。
例题

3.3 差错检测

3.3.1 奇偶校验

奇偶校验:在待发送的数据后面添加 1 位奇偶校验码,使整个数据(包括所添加的校验位在内)中"1"的个数为奇数(奇校验)或偶数(偶校验)。

奇偶校验的漏检率很高,通常不采用。

3.3.2 循环冗余校验

收发双方约定好一个 生成多项式 G(x)。

发送放基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输的后面一起传输。

例题
例题

检错码 只能检测出桢在传输过程中出现了差错,但并不能定位错误,因此 无法纠正错误。

循环冗余校验 有很好的的检错能量(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层。

在计算机网络中通常采用我们后续课程中将要讨论的 检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的桢,这取决于数据链路层向上提供的是可靠传输服务还是不可靠传输服务。

相关推荐
BingoGo19 小时前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack19 小时前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack3 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1233 天前
matlab画图工具
开发语言·matlab
dustcell.3 天前
haproxy七层代理
java·开发语言·前端
norlan_jame3 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone3 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc