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

文章目录

  • [第三章 数据链路层](#第三章 数据链路层)
    • [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)。

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

例题
例题

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

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

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

相关推荐
传奇开心果编程1 分钟前
【Rust入门练中学】 第1课:从零开始
开发语言·学习·rust
Brilliantwxx40 分钟前
【STM32】 SPI阻塞式通信与HAL源码(串口读ID实战)
开发语言·stm32·单片机·嵌入式硬件·ecmascript
吠品1 小时前
Nginx负载均衡配置与线上故障排查的一些经验
java·开发语言·数据库
边境悍匪1 小时前
蜗牛学苑 Java 智能体学习 Day44|Vue 前端项目搭建 思维导图复盘
java·开发语言·spring boot·学习·阿里云
wuyk5551 小时前
Python实战项目01:简易记事本系统
开发语言·python
君顾12 小时前
本地城市社区家政物业联动系统源码:架构设计与派单联动实战
java·开发语言·健身房
AI编码进化论2 小时前
云IDE介绍:环境模板化、Agent上云,云IDE该怎么选
开发语言·ide·人工智能·团队开发·ai编程
晴天的雨.9922 小时前
[C++算法]盛最多水的容器(双指针算法)
开发语言·c++·算法
泡海椒2 小时前
jquick-pdf 文本元素实战:段落、行内文本、制表符用法详解
java·开发语言·pdf
“AI国潮设计-小江”3 小时前
【SDXL实战】Python自动化生成3D潮汕美食IP,附ComfyUI工作流与商用变现思路
开发语言·人工智能·python·prompt·aigc