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

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

文章目录

第三章 数据链路层

3.1 数据链路层概述

3.2 封装成帧

3.3 差错检测

3.3.1 奇偶校验

3.3.2 循环冗余校验





第三章 数据链路层

3.1 数据链路层概述


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


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


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


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


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


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


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


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

微信截图_20231016154011.png

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

3.2 封装成帧

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

  • 桢头和桢尾中包含着重要的控制信息。
  • 桢头和桢尾的作用之一就是桢定界。
  • 微信截图_20231016154033.png
  • 透明传输 是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
  • 面向字节的物理链路使用字节填充(或称为字符填充)的方法实现透明传输。
  • 面向比特的物理链路使用比特填充的方法实现透明传输。
  • 微信截图_20231016154130.png

3.3 差错检测

3.3.1 奇偶校验

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

微信截图_20231016154143.png

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

3.3.2 循环冗余校验

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

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

微信截图_20231016154237.png


微信截图_20231016154248.png

微信截图_20231016154258.png

微信截图_20231016154307.png

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

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

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


相关文章
|
5天前
【计算机网络】第三章 数据链路层(可靠传输)
【计算机网络】第三章 数据链路层(可靠传输)
|
5天前
|
缓存 网络协议 网络架构
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
11 1
|
5天前
|
存储 监控 网络协议
【计算机网络】第三章 数据链路层(虚拟机与局域网)
【计算机网络】第三章 数据链路层(虚拟机与局域网)
13 2
|
21天前
|
安全 Linux 虚拟化
网络名称空间在Linux虚拟化技术中的位置
网络名称空间(Network Namespaces)是Linux内核特性之一,提供了隔离网络环境的能力,使得每个网络名称空间都拥有独立的网络设备、IP地址、路由表、端口号范围以及iptables规则等。这一特性在Linux虚拟化技术中占据了核心位置🌟,它不仅为构建轻量级虚拟化解决方案(如容器📦)提供了基础支持,也在传统的虚拟机技术中发挥作用,实现资源隔离和网络虚拟化。
网络名称空间在Linux虚拟化技术中的位置
|
21天前
|
安全 Linux 网络虚拟化
Linux网络名称空间和Veth虚拟设备的关系
在讨论Linux网络名称空间和veth(虚拟以太网对)之间的关系时,我们必须从Linux网络虚拟化的核心概念开始。Linux网络名称空间和veth是Linux网络虚拟化和容器化技术的重要组成部分,它们之间的关系密不可分,对于构建隔离、高效的网络环境至关重要。😊
|
19天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
42 6
|
18天前
|
网络协议 Linux Python
Python网络编程基础(Socket编程)epoll在Linux下的使用
【4月更文挑战第12天】在上一节中,我们介绍了使用`select`模块来实现非阻塞IO的方法。然而,`select`模块在处理大量并发连接时可能会存在性能问题。在Linux系统中,`epoll`机制提供了更高效的IO多路复用方式,能够更好地处理大量并发连接。
|
9天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
3天前
|
网络协议 算法 Linux
【Linux】深入探索:Linux网络调试、追踪与优化
【Linux】深入探索:Linux网络调试、追踪与优化
|
2天前
|
网络协议 JavaScript Linux
Linux常用网络指令(下)
Linux常用网络指令(下)
10 0