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

计算机网络 TCP/IP体系 数据链路层

一. 数据链路层的基本概念

数据链路层主要负责节点之间的通信,确保从物理层接收到的数据能够准确无误地传输到网络层。
在这里插入图片描述
数据链路层使用的信道主要有以下两种类型:

  1. 点对点信道: 这种信道使用一对一的点对点通信方式。
  2. 广播信道: 这种信道使用一对多的广播通信方式, 必须使用共享信道协议来协调这些主机的数据发送。

二. 数据帧

帧是数据链路层传输的基本单位,它是封装了特定信息的数据包。

帧的结构:

  1. 目的地址:接收方的物理地址(MAC地址)。
  2. 源地址:发送方的物理地址。
  3. 类型/长度:标识帧内数据的类型或长度。
  4. 数据字段:实际要传输的数据。
  5. 帧检验序列(FCS):用于检测传输过程中可能出现的错误,通常是一个基于CRC(循环冗余校验)计算的结果。
    在这里插入图片描述

2.2 封装成帧

当数据从高层向下传递到达数据链路层时,会被添加上必要的头部信息和尾部信息,形成一个完整的帧。在这里插入图片描述

2.3 透明传输

帧的透明传输是指在网络通信中,数据链路层能够确保任何类型的数据都能被正确无误地从发送方传输到接收方,而不会因为数据的内容或格式导致传输失败。为了实现帧的透明传输通常采用字符填充技术。

字符填充的工作原理:

  1. 定义特殊字符:
    • 起始标志(Start Flag):用于表示一个帧的开始。
    • 结束标志(End Flag):用于表示一个帧的结束。
    • 转义字符(Escape Character, ESC):用于指示下一个字符是一个特殊字符,而不是普通数据的一部分。
  2. 数据处理:
    • 当数据中出现了与起始标志或结束标志相同的字符时,发送方会在该字符前面插入一个转义字符。
    • 同样,如果数据中出现了与转义字符相同的字符,也需要在其前面插入一个转义字符。
  3. 接收处理:
    • 接收方在接收到数据时,会检查每个字符。
    • 如果遇到转义字符,则将下一个字符视为特殊字符处理,即移除转义字符并保留后面的字符。

在这里插入图片描述

2.4 差错检测

差错检测是数据通信中的一种技术,用于发现传输过程中可能出现的错误。这些错误可能是由于信号干扰、噪声、信号衰减或其他物理因素引起的。差错检测的主要目的是确保接收方能够识别出传输过程中发生的数据损坏,并采取相应的措施来处理这些错误。

常见的差错检测方法:

  1. 奇偶校验(Parity Check):
    • 原理:在数据中添加一个额外的位(奇偶位),使得整个数据中1的数量为奇数或偶数。
    • 类型:单比特奇偶校验只能检测奇数个错误,不能检测偶数个错误。
    • 优点:简单易实现。
    • 缺点:检测能力有限,无法定位错误的具体位置。
  2. 校验和(Checksum):
    • 原理:将数据分成若干段,对每段进行求和运算,最后将结果作为校验和附加到数据末尾。
    • 优点:比奇偶校验更强大,能检测更多的错误类型。
    • 缺点:仍然可能存在漏检的情况。
  3. 循环冗余校验(CRC, Cyclic Redundancy Check):
    • 原理:使用多项式除法生成一个固定长度的校验码,附加到数据末尾。
    • 优点:检测能力强,能够检测出大多数类型的错误,包括多位错误。
    • 缺点:计算复杂度较高,但现代硬件已经能够高效地实现CRC计算。
  4. 海明码(Hamming Code):
    • 原理:通过在数据中插入多个校验位,使得每个数据位都被多个校验位覆盖,从而能够检测并纠正单比特错误。
    • 优点:既能检测又能纠正错误。
    • 缺点:增加了数据的冗余度,适用于对可靠性要求极高的场合。

2.5 MAC地址

MAC地址是一种用于唯一标识网络设备的硬件地址。每个网络接口控制器都有一个唯一的MAC地址,它在数据链路层用于网络通信。

  • MAC地址的特点
    1. 唯一性:MAC地址在全球范围内是唯一的,确保了每个网络设备在局域网中都有一个独特的标识。
    2. 固定性:MAC地址通常是出厂时由制造商写入网络接口控制器的ROM中,不可更改(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)。
  • MAC地址的格式
    一个标准的MAC地址由6个字节(48位)组成,通常表示为12个十六进制数字,中间用冒号或连字符分隔。例如:
    00:1A:2B:3C:4D:5E
    00-1A-2B-3C-4D-5E

2.6 MTU最大传输单元

以太网帧中的数据长度规定最小46字节, 最大1500字节, ARP数据包的长度不够46字节, 要在后面补填充位; 最大值1500称为以太网的最大传输单元(MTU), 不同的网络类型有不同的MTU。
在这里插入图片描述

三. 点对点协议PPP

3.1 PPP协议的概念

PPP(Point-to-Point Protocol,点对点协议)是一种广泛使用的数据链路层协议,主要用于在点对点连接上提供数据传输服务。

3.2 PPP协议的功能

  1. 封装数据:将上层协议(如IP)的数据封装成适合在点对点链路上传输的帧格式。
  2. 链路配置:自动协商和配置链路参数,如最大传输单元(MTU)、认证方式等。
  3. 错误检测和纠正:通过使用循环冗余校验(CRC)来检测传输错误。
  4. 多协议支持:支持多种网络层协议,如IP、IPX等。
  5. 身份验证:提供多种身份验证方法,确保连接的安全性。
  6. 动态地址分配:支持动态分配IP地址,常用于拨号上网等场景。

3.3 PPP协议的格式

在这里插入图片描述

  • Flag:帧的开始和结束标志,固定值为 0x7E。
  • Address:目标地址,通常为 0xFF,表示广播地址。
  • Control:控制字段,通常为 0x03,表示无编号信息。
  • Protocol Field:协议字段,指示帧中携带的数据所属的协议类型。例如,0xC021表示LCP,0x8021 表示IPCP。
  • Information:数据字段,携带具体的协议数据。
  • Frame Check Sequence(FCS):帧检验序列,用于检测传输错误,通常使用CRC-16或CRC-32。

四. CSMA/CD协议

4.1 CSMA/CD的概念

CSMA/CD是一种用于局域网中的介质访问控制协议。它的主要目的是在共享介质上允许多个设备高效、可靠地传输数据,同时尽量减少数据包碰撞的可能性。

4.2 CSMA/CD的工作原理

  1. 监听介质:
    • 设备在准备发送数据之前,先监听介质,检查是否有其他设备正在传输数据。
    • 如果介质是空闲的,进入下一步;如果介质是忙的,等待一段时间后重新监听。
  2. 发送数据:
    • 如果介质是空闲的,设备开始发送数据。
    • 在发送过程中,设备继续监听介质,以检测是否发生了冲突。
  3. 检测冲突:
    • 如果在发送过程中检测到冲突,设备立即停止发送,并发送一个冲突信号。
    • 冲突信号确保所有设备都能检测到冲突,并停止发送数据。
  4. 退避和重试:
    • 发生冲突后,每个设备会随机选择一个退避时间(通常是一个随机的时隙数),并在等待这段时间后再重新尝试发送数据。
    • 如果再次发生冲突,重复上述步骤,直到数据成功发送或达到最大重试次数。
      在这里插入图片描述

4.3 CSMA/CD的优缺点

优点:

  1. 简单高效:CSMA/CD协议简单易实现,能够有效地管理共享介质上的多设备通信。
  2. 动态适应:能够动态适应网络负载的变化,通过退避机制减少冲突的发生。
    局限性:
  3. 冲突问题:在高负载情况下,冲突频繁发生,导致传输效率下降。
  4. 不适合全双工通信:CSMA/CD仅适用于半双工通信,因为全双工通信中每个设备都有独立的发送和接收通道,不需要冲突检测。

————————————————————
感谢大家观看,不妨点赞支持一下吧喵~
如有错误,随时纠正喵~


http://www.kler.cn/a/386338.html

相关文章:

  • LabVIEW大数据处理
  • c++写一个死锁并且自己解锁
  • 1.7 JS性能优化
  • 九州未来再度入选2024边缘计算TOP100
  • idea 解决缓存损坏问题
  • 【学习笔记】数据结构(七)
  • qt QLocale详解
  • 陀螺仪BMI323驱动开发测试(基于HAL库SPI通信)
  • 大数据-213 数据挖掘 机器学习理论 - KMeans Python 实现 距离计算函数 质心函数 聚类函数
  • Python使用PDF相关组件案例详解
  • 从截图到代码:screenshot-to-code开源项目实践指南
  • 内网项目,maven本地仓库离线打包,解决Cannot access central in offline mode?
  • spring boot 统一异常处理
  • 大模型学习笔记------CLIP模型解读与思考
  • Redis-07 Redis哨兵
  • 2025斯诺克器材与用品展,2025郑州台球器材展会3月举办
  • 如何利用内部开源加速创新
  • SAP_MM负库存简介
  • 基于Spring Boot的网上商品订单转手系统设计与实现,LW+源码+讲解
  • Webserver(5.2)网页服务器框架
  • Chromium127编译指南 Linux篇 - 获取Chromium源码(四)
  • 【前端】Svelte:匿名插槽与具名插槽
  • 深度学习:BERT 详解
  • Flink API 的层次结构
  • 机器学习—神经网络如何高效实现
  • 数据采集器与物联网网关的区别