当前位置: 首页 > news >正文

计算机网络:知识点梳理及讲解(三)数据链路层

之前我们提到过:

数据链路层,是在同一链路上的两个节点之间传输数据帧(帧是被封装的数据)

现在来具体看一看

一、相关概念

链路:链路是指两台设备之间通过物理介质建立的物理连接通路

           就是只涉及物理层面连接

数据链路:数据链路是在 “链路” 的基础上,增加了数据链路层的控制规程(协议)。

                  即,“硬件 + 软件” 的完整数据传输逻辑通道

tips:早期数据通信协议叫做通信规程,因此在数据链路层,规程和协议是同义语。

帧: 是数据传输的核心单位,本质是 “经过特定格式封装的数据块”

二、三个基本问题

在数据链路层中,存在三个基本问题:封装成帧、透明传输、差错检测。

(1)封装成帧

封装成帧是指数据链路层将网络层传来的数据包 

在其前后分别添加 “帧头” 和 “帧尾”,组装成 “帧” 的过程。

那么这有什么用呢?

答:界定数据边界携带控制信息

解释:

物理层仅传输比特流,接收方无法区分 “哪段比特属于 A 数据,哪段属于 B 数据”。

而帧头和帧尾相当于 “数据的开始标记” 和 “结束标记”,帮接收方精准拆分不同帧。

这就叫界定数据边界

帧头中包含 “目标 MAC 地址(传给谁)”、“源 MAC 地址(谁发的)” 等

帧尾包含 “校验字段(数据是否出错)”

这就叫携带控制信息

知晓上述过程,我们会知道,既然是封装数据,那么数据应该越大越好

但是,每一种链路层协议都规定了数据部分长度的最大上限,这个叫最大传送单元MTU

综上,帧结构如下所示:

下面细说一下帧界定(帧如何界定数据边界)

当数据是使用ASCII码组成的文本文件时,帧定界可以使用特定的帧界定符

开始的叫SOH,具体用01(十六进制)表示,放在帧的最前面

开始的叫EOT,具体用04(十六进制)表示,放在帧的最后面

当开始传输时,如果只有开发符,没有结束符,那么就要丢弃掉这个帧。

他们的组成结构如下所示:

(2)透明传输

根据上文的封装成帧,我们知道,我们是用帧头帧尾区分开始结束

所以如果传输的数据中恰好包含帧头帧尾编码呢

这时,就涉及到了透明传输问题

透明传输是指数据链路层在传输 数据 时

无论载荷中包含什么内容(即使出现与 “帧头 / 帧尾标记” 相同的字节)

都能让接收方正确识别 “哪些是载荷数据,哪些是帧的控制标记”

不会把载荷中的特殊字节误当作帧的边界。

“透明” 的含义:对上层数据来说,链路的传输过程 “看不见”(无需关心)特殊字节的处理逻辑,数据能完整、无干扰地通过。

具体解决办法如下:

在数据中出现的SOH或EOT编码前,插入一个转义字符ESC,具体用1B(十六进制)表示

而接收端的数据链路层,只需在把接收数据送往网络层之前删除这个插入字符即可

这种方法叫做字节填充字符填充

tips:如果转义字符也出现在数据中,只需在转义字符前再插入一个转义字符

(3)差错检测

差错检测是指数据链路层在发送帧时

通过特定算法计算 “校验值” 并放入帧尾

接收方收到帧后,用相同算法重新计算校验值,对比两者是否一致

若不一致,说明帧在传输中因噪声、干扰等出现了比特错误(如 0 变成 1,1 变成 0)

丢弃该帧

这里常用校验方法叫做:循环冗余校验(CRC)

举例讲解:

已知原始数据帧为 101001,生成多项式 G (x) 对应的二进制为 1101,发送方最终发送的完整帧(原始数据 + CRC 校验码)是什么?

首先看1101有几位,很显然是4位,所以咱们需要在数据帧后补3位0

(tips:补少一位就行,例,如果是5位,则补4位0)

所以101001变成了101001000

然后列式子,让101001000除1101

(tips:这个式子叫模2运算)

然后看式子最前面是1是0,如果是1,上1,如果是0,上0

例如,图中式子最开始的是1(红圈),所以先上1(蓝圈),有了下面的1101

然后,上下数字相同则为0,不同则为1,得到1110(绿圈)

后面皆依次写下去,直到最后得到余数R为001

但此时原数已经不够位数了(黄线),所以到此为止

然后接下来,用余数R001替换掉刚才我们补的000

最后得到完整帧(原始数据 + CRC 校验码):101001001

到这里题目结束了,但后面还有过程

让最终得到的101001001除1101

如果最后得到余数R=0,则帧无差错,如果是1,则有错,应该丢掉

补充:上面提到了多项式 G (x)是怎么回事?

因为:一般不会直接给出1101,而是给一个式子,我们直接看系数即可

系数为0,则为0,系数为1,则为1

如: 就是1011

因为x的三、一、零次方的系数都是1,而二次方的系数是0


数据链路层的重要协议,针对不同信道而不同:

三、点对点协议PPP

(1)介绍

PPP(Point-to-Point Protocol,点对点协议) 是一种用于 “两台设备通过点对点链路直接通信” 的数据链路层协议,核心作用是在点对点的物理连接上,实现 “数据封装、身份认证、链路控制” 等功能。

PPP协议有三个组成部分:

  • 链路控制协议(LCP:Link Control Protocol):“建立和维护链路”
  • 认证协议:“验证对方身份,防止非法接入”
  • 网络控制协议(NCPs:Network Control Protocols):“适配上层网络协议”

(2)帧格式

PPP协议的帧格式如下:

分为三部分,首部、信息、尾部

接下来所说,基本围绕上述文中的三个问题。

对于F和E部分,叫标志字段,作为封装帧的首和尾

对于A部分,规定为0xFF(0x是十六进制意思)

对于C部分,规定为0x03

对于协议部分,若为0x0021,表示此信息处为IP数据报;若为0xC021,则表示LCP……

对于FCS部分,即写上文所说的差错检测中的余数

(3)解决办法

我们可能会有一个问题,标志字段如果出现了两个,则表示二者之间为帧。那么如果信息部分恰好也传输了跟标志字段一样的内容呢,不会误判吗?(即透明传输)

对待异步传输时(标志字段的转义符为0x7D)

解决办法:字节填充

将信息段内出现的0x7E转成(0x7D,0x5E)

将信息段内出现的0x7D转成(0x7D,0x5D)

若信息段内出现小于0x20的,则转成(0x7D,0xXX),如0x03转成(0x7D,0x03)

对待同步传输

解决办法:零比特填充

若遇到连续的5个1,则在后面加一个0

例题:

1.假设我们有一个 PPP 帧的信息字段,其原始字节序列为:0x7E 0x32 0x7D 0x1F,请进行字节填充。

答:0x7D 0x5E 0x32 0x7D 0x5D 0x1F

2.原始数据:1110111110101111110,经过零比特填充后多少?

答:111011111001011111010

四、使用广播信道的数据链路层

(1)适配器

适配器(即网卡)是数据链路层与物理层的接口

其核心作用是实现数据的 “封装 / 解封装” 和 “物理信号转换”。

MAC 地址是适配器的唯一标识,也是广播信道中 “寻址” 的核心

(2)CSMA/CD协议

数据链路层重要协议:CSMA/CD 协议(局域网广播信道所使用)

CSMA/CD即载波监听多路访问 / 冲突检测 ,是一种在局域网广播信道中使用的 MAC层协议

主要用于解决在共享广播信道上多个节点如何有序地发送数据,避免冲突,提高信道利用率

其中各部分含义如下:

CS:载波侦听 / 监听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。

MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。总线型网络

CD:碰撞检测(冲突检测),适配器边发送数据边检测信道上信号,判断自己发送数据时其他站是否也在发送数据。

五、其他

(1)局域网

局域网(简称 LAN),是在某一区域内由多台计算机互联成的计算机组,使用广播信道。

  • 分类(按传输介质)

        有线局域网:常用介质为双绞线、同轴电缆、光纤。

        无线局域网:如遵循 IEEE 802.11 标准的网络。

  • 分类(按拓扑结构)

        星形网

        环形网(应用:FDDI 令牌环网)

        总线网(应用:以太网,遵循 IEEE 802.3 标准)

        树形网等

(2)集线器

集线器是一种网络设备,工作在物理层,起到信号放大和转发的作用

集线器采用广播式的工作方式。

当一个端口接收到数据时,它会把数据帧从除接收端口外的所有其他端口转发出去。

也就是说,连接在集线器上的所有设备都能收到这个数据帧,

各个设备的网卡会检查数据帧的目的 MAC 地址,

若与自己的 MAC 地址相符,则接收处理该数据帧,否则丢弃。

tips:集线器主要用于构建星型拓扑结构的局域网。在这种拓扑结构中,所有的计算机等网络设备都通过独立的线路连接到集线器上,集线器处于网络的中心位置,就像星星的中心一样 ,这种结构便于网络的组建和管理。

(3)MAC层

MAC 层,是数据链路层的一个子层

硬件地址

MAC 层负责处理 MAC 地址(硬件地址)相关的操作。

在数据链路层通信时,通过 MAC 地址来标识网络中的不同设备。比如,在以太网中,发送方的 MAC 层会在数据帧头部添加源 MAC 地址(自身网卡的 MAC 地址)和目的 MAC 地址(接收方网卡的 MAC 地址) ,接收方的 MAC 层根据目的 MAC 地址判断是否接收该数据帧。

帧格式

在发送数据时,MAC 层从网络层接收 IP 数据报,添加 MAC 帧头(包含源 MAC 地址、目的 MAC 地址等)和 MAC 帧尾(包含校验序列等),封装成 MAC 帧后交给物理层进行传输;

接收数据时,MAC 层从物理层接收信号,解封装出 MAC 帧,检查帧的正确性(通过校验序列),并将取出的 IP 数据报交给网络层。

(4)交换机

交换机是一种用于电(光)信号转发的网络设备。

它可以为接入交换机的任意两个网络节点提供独享的电信号通路。

交换机工作在数据链路层,内部有一个 MAC 地址表。

当数据帧进入交换机端口时,交换机会读取数据帧中的源 MAC 地址,

并将其与对应的端口号记录到 MAC 地址表中;接着查看目的 MAC 地址,

若 MAC 地址表中有该目的 MAC 地址对应的端口信息,就将数据帧直接转发到该端口 ;

若没有,则向除接收端口外的所有其他端口广播该数据帧,

当目的设备做出回应后,

交换机会将其 MAC 地址和端口对应关系记录到 MAC 地址表,后续通信就可以直接转发。

(5)碰撞域

碰撞域是指网络中一个或多个设备发出的数据帧可能会产生冲突的范围。

共享式网络中的碰撞域

在使用集线器的共享式以太网中,所有连接到集线器的设备都处于同一个碰撞域。

因为集线器是广播式工作,当一个设备发送数据时,其他设备都能接收到,

若多个设备同时发送就会产生冲突。

随着设备数量增加,冲突概率增大,网络效率会显著降低 。

交换式网络中的碰撞域

以太网交换机每个端口都可以看作是一个独立的碰撞域。

交换机基于 MAC 地址进行数据转发,

使得连接在不同端口的设备可以同时进行通信而不会产生冲突,

有效隔离了碰撞域,提升了网络性能。

(6)虚拟局域网

虚拟局域网(VLAN)

传统以太网中,一个物理局域网就是一个广播域

广播帧会传遍所有设备,导致带宽浪费和广播风暴。

VLAN 可将一个物理局域网划分为多个逻辑广播域

广播帧仅在所属 VLAN 内传播,大幅减少广播流量。

而不同 VLAN 间的设备默认无法直接通信(需路由器转发)。

比如企业中,财务部门设备划入 “财务 VLAN”,普通员工设备划入 “办公 VLAN”,避免非授权访问财务数据。

五、以太网

(1)概念

以太网是由 Xerox 公司创建,后联合 Intel 和 DEC 公司共同开发的基带总线局域网规范,是如今局域网领域应用最广泛的通信协议标准。

(2)特点

        使用广播信道:早期以太网基于总线拓扑结构,所有设备共享同一传输介质,数据以广播的形式发送,一个节点发送的数据帧,其他节点都能接收到,不过现代以太网多采用交换式网络拓扑,但仍保留了部分广播机制用于特定功能。

        数据传输速率高:从最初的 10Mbps 以太网,逐渐发展出 100Mbps 快速以太网、1000Mbps(千兆)以太网、10Gbps(万兆)以太网,以及更高速率的以太网标准。

        兼容性和扩展性好:以太网标准统一,不同厂商生产的以太网设备能够很好地兼容。

        成本低

(3)分类

按传输速率分类

  • 10Mbps 以太网:是以太网的早期形式,主要使用同轴电缆或双绞线作为传输介质,常用于早期的小型局域网。
  • 100Mbps 快速以太网:在 20 世纪 90 年代得到广泛应用,标准为 IEEE 802.3u,支持 UTP(非屏蔽双绞线)和光纤等传输介质。
  • 1000Mbps(千兆)以太网:标准为 IEEE 802.3z 和 IEEE 802.3ab,可使用光纤或超五类及以上的双绞线作为传输介质,适用于企业骨干网、数据中心等对带宽要求较高的场景。
  • 10Gbps(万兆)以太网及更高速率以太网:如 25Gbps、40Gbps、100Gbps 以太网等,主要应用于数据中心内部互联、城域网骨干链路等超高速数据传输场景,通常采用光纤作为传输介质。

(4)扩展以太网

早期共享式以太网依靠集线器连接设备,但所有设备处于同一碰撞域

数据冲突频发,严重制约效率。

为解决这一问题,以太网交换机应运而生,

它基于 MAC 地址精准转发数据帧,让每个端口形成独立碰撞域,

极大减少冲突,提升了网络性能。

而随着网络规模扩大,需对以太网进行拓展,

交换机凭借多端口、可级联等特性,成为扩展以太网的核心设备,

能便捷地连接更多设备,构建更庞大且高效的网络,

http://www.dtcms.com/a/529057.html

相关文章:

  • PySide6 pyside6-deploy 命令 Linux 部署
  • 网站内的搜索怎么做的学校网站建设情况报告
  • 电脑建立网站朝阳区手机网站建设服务
  • 谷歌商店下载APK教程,先下载谷歌三件套,再直接从 Google Play 下载 APK 文件?
  • Spring中事务的传播行为
  • 将镜像推送到 Docker Hub 或私有仓库
  • 做qq图片的网站吗wordpress没有链接地址
  • 面向模块的综合技术之重定时优化(六)
  • 社交模板网站建设成都青羊网站建设
  • Android 数据持久化(SharedPreferences)
  • 四、高效注意力机制与模型架构
  • 沧州做网站公司兰州网站建站
  • C++ STL:string类(1) |了解string|编码|常用接口|迭代器|算法查找|auto|范围for
  • ESP32 Linux 开发环境
  • 网站建设全国排名alexa排名前三十
  • 声乐基础知识学习
  • Redis底层原理-持久化【详细易懂】
  • 现在建网站可以拖拉式的吗深圳住房建设网站
  • 流量打不开网站怎么办营销型企业网站 网络服务
  • 如何用ps做网站ui如何在云主机上建设网站
  • 营销网站建设818gx做商城网站多少钱
  • 【C/C++】动态加载(dlopen)和直接链接 库的区别
  • 集团内部协同项目管理模式整理表
  • 基于yolov11的机场跑道异物检测系统python源码+pytorch模型+训练数据集+精美GUI界面
  • 【开题答辩全过程】以 滨海游泳馆管理系统为例,包含答辩的问题和答案
  • 阿里云网站实名认证设备租赁业务网站如何做
  • 2025年9月电子学会全国青少年软件编程等级考试(scratch图形化四级)真题及答案
  • 中国万网icp网站备案专题wordpress播放器问题
  • MATLAB图形绘制基础(一)二维图形
  • 软件开发和网站建设泰安网站设计