【计算机网络】第三章 数据链路层

news2026/5/7 19:37:45
3.1 数据链路层的基本概念数据链路层使用的两种信道类型点对点信道这种信道使用一对一的点对点通信方式。广播信道这种信道使用一对多的广播通信方式因此过程比较复杂。 广播信道上连接的主机很多 因此必须使用专用的共享信道协议来协调这些主机的数据发送。3.1.1 数据链路和帧链路(link)就是从一个节点到相邻节点的一段物理线路而中间没有任何其他的交换节点。一条链路只是一条通路的一个组成部分。数据链路(data link)除了物理线路还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上就构成了数据链路。现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。3.1.2 三个基本问题⑴封装成帧封装成帧(framing)就是在一段数据的前后分别添加首部和尾部然后就构成了一个帧。首部和尾部的一个重要作用就是进行帧定界。接收方必须正确识别每个帧的开始和结束。每一种链路层协议都规定了帧的数据部分长度的上限即最大传送单元MTU(Maximum Transfer Unit, MTU).⑵透明传输我们希望数据链路层提供的是一种“透明传输” 的服务即对上层交给的传输数据没有任何限制 就好像数据链路层不存在一样。字节填充法对于面向字符的物理链路使用字节填充(byte stuffing)或字符填充(character stuffing)方法。发送端的数据链路层在数据中出现的标记字符前面插入一个转义字符(例如也用一种特殊的控制字符“ESC)。在接收端的数据链路层对转义字符后面出现的标记字符不再被解释为帧定界符并且在将数据送往网络层之前删除这个插入的转义字符。如果转义字符也出现在数据当中那么解决方法仍然是在转义字符的前面插入一个转义字符。当接收端收到连续的两个转义字符时就删除前面的一个。零比特填充法当物理链路提供的是面向比特的传输服务时(物理链路传送连续的比特流) 帧定界标志可以使用某个特殊的比特组合例如后面将要介绍的PPP协议所使用的01111110”。由于帧的长度不再要求必须是整数个字节可以采用开销更小的比特填充(Bit Stuffing)来实现透明传输。在发送端只要发现有5个连续1则立即填入一个0。接收端对帧中的比特流进行扫描。每当发现5个连续1时就把这5个连续1后的一个O删除。⑶差错控制在传输过程中可能会产生比特差错:1可能会变成0而0也可能变成1。在一段时间内传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。误码率与信噪比有很大的关系。为了保证数据传输的可靠性在计算机网络传输数据时必须采用各种差错检测措施。差错检测不是100%可靠 可能漏掉某些差错但是非常少较长的EDC字段通常有更好的检测性能循环冗余校验CRC在数据链路层传送的帧中广泛使用循环冗余校验CRC的检错技术。设原始数据D为d位二进制数如果要产生r位CRC校验码R事先选定一个r1位二进制位模式G(称为生成多项式收发双方提前商定)G的最高和最低位为1将原始数据D乘以2ʳ(相当于在D后面添加r个0),产生dr位二进制位模式用G对该位模式做模2除法得到余数R(r位不足r位前面用0补齐)即为CRC校验码。在接收端把接收到的数据除以同样的除数生成式G(模2运算)然后检查得到的余数即进行CRC检验。若得出的余数R0,则判定这个帧没有差错就接受。若余数R≠0,则判定这个帧有差错就丢弃。只要经过严格的挑选并使用位数足够多的除数G那么出现检测不到的差错的概率就很小很小。在数据后面添加上的冗余码称为帧检验序列FCS(Frame Check Sequence)。循环冗余校验CRC和帧检验序列FCS并不等同。CRC是一种常用的检错方法而FCS是添加在数据后面的冗余码。FCS可以用CRC这种方法得出但CRC并非用来获得FCS的唯一方法。❶要发送的数据为1101011011。采用CRC的生成多项式P(X)X⁴X1。试求应添加在数据后面的余数。❷若要发送的数据在传输过程中最后一个1变成了0即变成了1101011010问接收端能否发现 ❸若要发送的数据在传输过程中最后两个1都变成了0即变成了1101011000问接收端能否发现 ❹采用CRC检验后数据链路层的传输是否就变成了可靠的传输4不是可靠传输。CRC仅能实现差错检测无法纠正错误同时CRC 无法检测出所有错误当错误位的组合恰好是生成多项式的倍数时无法检测概率极低此外 CRC不具备帧序号、确认重传等机制无法解决丢帧、重复帧的问题因此不能实现可靠传输。可靠传输需要结合差错纠正、确认重传、流量控制等机制共同实现。使用CRC这样的差错检测技术只能检测出帧在传输中出现了差错并不能纠正错误。虽然任何差错检测技术都无法做到检测出所有差错但通常我们认为:凡是接收端数据链路层通过差错检测并接受的帧我们都认为这些帧在传输过程中产生差错的概率几乎为零。要想纠正传输中的差错可以使用冗余信息更多的纠错码进行前向纠错。通过纠错码能检测数据中出现差错的具体位置从而纠正错误。这种方法开销非常大。通常采用接下来可靠传输的确认重传机制来纠正传输中的差错或者仅仅是丢弃检测到差错的帧由上层协议去解决数据丢失的问题。3.1.3 流量控制与可靠传输机制⑴停止等待协议普通流程(有差错检验)❶超时重传❷确认丢失❸确认迟到/提前超时比特交替协议发送方流程比特交替协议接收方流程停等协议的信道利用率可靠传输的机制⑵滑动窗口协议Go-back-N(回退N帧)协议选择重传协议3.2 点对点协议PPP在通信线路质量较差的年代能实现可靠传输的高级数据链路控制(High-level Data Link Control,HDLC)成为了当时比较流行的数据链路层协议。HDLC是一个比较复杂的协议实现了滑动窗口协议并可支持点对点和点对多点两种连接方式。对于现在误码率已非常低的点对点有线链路HDLC已很少使用了 而简单得多的点对点协议(Point-to-Point Protocol,PPP)则是目前使用最广泛的点对点数据链路层协议。3.2.1 PPP协议的特点3.2.2 PPP协议的帧格式⑴ 各字段意义PPP有一个2个字节的协议字段当协议字段为0×0021时PPP帧的信息字段就是IP数据报。若为0×C021,则信息字段是PPP链路控制协议(LCP)数据。若为0x8021,则表示这是网络控制协议(NCP)数据。⑵透明传输问题当PPP用在SDH等面向比特的同步传输链路时协议规定采用硬件来完成比特填充。当PPP用在面向字符的异步传输时使用一种特殊的字符填充法 其转义符定义为0×7D。3.2.3 PPP协议的工作状态3.3 使用广播信道的数据链路层广播信道可以进行一对多的通信能很方便且廉价地连接多个邻近的计算机因此曾经被广泛应用于局域网之中。由于用广播信道连接的计算机共享同一传输媒体因此使用广播信道的局域网被称为共享式局域网。虽然交换式局域网在有线领域已完全取代了共享式局域网但无线局域网仍然使用的是共享媒体技术。用广播信道连接多个站点(可以是主机或路由器) 一个站点可以方便地给任何其他站点发送数据但必须解决如果同时有两个以上的站点在发送数据时共享信道上信号冲突的问题。因此共享信道要着重考虑的一个问题就是如何协调多个发送站点对一个共享传输媒体的占用即媒体接入控制(Medium Access Control,MAC)或多址接入(Multiple Access)问题3.3.1 局域网的数据链路层网络为一个单位所拥有且地理范围和站点数目均有限。(局域网最主要特点)最初主要用来连接一个单位内部的计算机方便地共享所有连接在局域网上的各种硬件、软件和数据资源。现在局域网将各种企业、机构、校园中的大量用户接入到互联网中网络中大部分的信息资源都集中在这些局域网中。LLC子层可以为不同类型的网络层协议提供不同类型的数据传输服务例如无确认无连接服务、面向连接的可靠传输服务或带确认的无连接服务。由于以太网在有线局域网市场中已取得了垄断地位因此目前逻辑链路控制子层LLC(即802.2标准)在有线局域网中的作用并不大。很多厂商生产的适配器(网卡)上就仅装有MAC协议而没有LLC协议。适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。在适配器中必须装有对数据进行缓存的存储芯片。在计算机的操作系统安装设备驱动程序。适配器实现局域网数据链路层和物理层的协议。适配器接收和发送各种帧时不使用计算机的CPU这时CPU可以处理其他任务。当适配器收到有差错的帧时就把这个帧丢弃而不必通知计算机。当适配器收到正确的帧时它就使用中断来通知该计算机并交付给协议栈中的网络层。发送IP数据报时由协议栈把IP数据报向下交给适配器组装成帧后发送到局域网。MAC地址当多个站点连接在同一个广播信道上要想实现两个站点的通信则每个站点都必须有一个唯一的标识即一个数据链路层地址。在每个发送的帧中必须携带标识接收站点和发送站点的地址。由于该地址用于媒体接入控制因此被称为MAC地址。MACMedia Access Control地址是网络设备的唯一硬件标识符通常由48位二进制数12位十六进制组成用于在局域网LAN中识别设备。它由IEEE分配固化在网卡或网络接口中分为前24位厂商代码和后24位设备序列号。802.3标准为局域网规定了一种48位的全球地址固化在适配器(网卡)的ROM中(因此又被称为硬件地址)。实际上这个地址仅仅是一个适配器的标识符它并不能告诉我们这个计算机所在的位置。MAC地址与IP地址的区别MAC是物理层标识IP是网络层逻辑地址MAC全局唯一IP可动态分配互联网中全球唯一。所有的适配器都至少应当能够识别单播和广播地址有的适配器可用编程方法识别组地址(多播地址)。当操作系统启动时它就把适配器初始化使适配器能够识别某些组地址(多播地址)。只有目的地址才能使用广播地址和组地址(多播地址)。3.3.2 共享式以太网以太网采用较为灵活的无连接的工作方式即不必先建立连接就可以直接发送数据。适配器对发送的数据帧不进行编号也不要求对方发回确认。这样做的理由是局域网信道的质量很好因通信质量不好产生差错的概率是很小的。当目的站收到有差错的数据帧时就把帧丢弃其他什么也不做。对有差错帧是否需要重传则由高层来决定。但以太网并不知道这是重传帧而是当作新的数据帧来发送。总线上只要有一个站点在发送数据总线的传输资源就被占用。因此在同一时间只能允许一个站点发送数据否则各站点之间就会互相干扰结果大家都无法正常发送数据。共享式以太网使用CSMA/CD媒体接入控制协议来协调总线上各站点的工作。3.3.3 CSMA/CD协议冲突(碰撞)检验退避重传3.3.4 以太网的信道利用率成功发送一个帧需要占用信道的时间是T₀τ,比这个帧的发送时间要多一个单程端到端时延τ。这是因为当一个站发送完最后一个比特时这个比特还要在以太网上传播。在最极端的情况下发送站在传输媒体的一端而比特在媒体上传输到另一端所需的时间就是τ。要提高以太网的信道利用率就必须减小τ与T₀之比。在以太网中定义了参数a它是以太网单程端到端时延τ与帧的发送时间T₀之比:aτ/T₀a越大表明争用期所占的比例增大每发生一次碰撞就浪费许多信道资源 使得信道利用率明显降低。参数a的值应当尽可能小些3.3.5 使用集线器的星形拓扑10BASE-T的通信距离稍短每个站到集线器的距离不超过100m。这种10Mb/s速率的无屏蔽双绞线星形网的出现既降低了成本又提高了可靠性。10BASE-T双绞线以太网的出现是局域网发展史上的一个非常重要的里程碑它为以太网在局域网中的统治地位奠定了牢固的基础。3.3.6 以太网的帧格式⑴以太网V2的MAC帧格式第四个字段是数据字段其长度在46~1500字节(46字节是这样得出的: 最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度)。当数据字段的长度小于46字节时MAC子层就会在数据字段的后面加入一个整数字节的填充字段以保证以太网的MAC帧长不小于64字节。⑵帧间最短字节帧间最小间隔为9.6 μs ,相当于96 bit 的发送时间。一个站在检测到总线开始空闲后还要等待9.6 μs 才能再次发送数据。以太网不需要使用帧结束定界符也不需要使用字节填充或比特填充技术来保证透明传输。帧间间隔用于接收方检测一个帧的结束同时也使得所有其它站点都能有机会平等竞争信道并发送数据。⑶IEEE 802.3标准规定的MAC帧格式3.4 扩展的以太网3.4.1 在物理层扩展以太网使用的是共享式集线器(工作在物理层)3.4.2 在数据链路层扩展以太网⑴网桥用网桥仍是n个碰撞域用集线器则变为一个⑵透明网桥⑶以太网交换机3.4.3 虚拟局域网VLAN3.5 以太网的演进

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2592448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…