计算机网络(8)数据链路层之子层

上一篇已经讲到数据链路层可以分为两个子层,这次将重点讲解子层的作用和ppp协议

数据链路层的子层

数据链路层通常被分为两个子层:

  1. 逻辑链路控制子层(LLC,Logical Link Control):
    • LLC子层负责在数据链路层与网络层之间建立逻辑连接。它处理与网络层的交互,提供帧的封装和差错控制。LLC子层使得数据链路层能够支持多种网络协议。
  2. 介质访问控制子层(MAC,Medium Access Control):
    • MAC子层负责控制对物理介质的访问。它通过协议来决定如何在共享的通信媒介上调度数据的发送。MAC子层使用硬件地址(MAC地址)来进行数据帧的目标定位,并解决冲突。
    • 典型的MAC协议有:CSMA/CD(以太网)、CSMA/CA(Wi-Fi)等。

我们将主要讲解MAC子层

MAC子层(Media Access Control Sublayer)

MAC子层(介质访问控制子层)是数据链路层的一个重要组成部分,主要负责控制不同设备对共享通信介质(如以太网或无线电波)的访问。MAC子层位于数据链路层的较低部分,在逻辑链路控制(LLC)子层之下,具体负责帧的封装和传输。

MAC子层的主要功能

  1. 介质访问控制

    • MAC子层决定何时允许设备发送数据,以避免在共享介质上发生数据冲突。常见的访问控制机制包括CSMA/CD(载波侦听多路访问/碰撞检测,用于有线网络)和CSMA/CA(载波侦听多路访问/碰撞避免,用于无线网络)。
  2. 帧封装与解封装

    • MAC子层将来自LLC子层的数据进行帧封装(添加MAC地址、帧控制信息和校验码),并在接收到数据帧时解封装以传递给上层。
  3. 地址控制

    • MAC子层使用硬件地址(MAC地址)识别网络设备。每个设备的MAC地址是唯一的,MAC子层使用这些地址确保数据帧能够到达正确的目标设备。
  4. 错误检测

    • 在数据传输过程中,MAC子层通过帧尾的校验和(如CRC)来检测数据是否被损坏。虽然MAC子层不负责纠正错误,但它可以识别并丢弃损坏的帧,确保只有正确的数据传输给上层。
  5. 流量控制

    • MAC子层通过流量控制协议避免发送方过多发送数据,以防止接收方超出处理能力。通过流量控制,MAC子层可以有效地避免网络拥塞,确保数据流稳定。

MAC子层的典型协议

  • 以太网(Ethernet)
    • 使用CSMA/CD协议实现介质访问控制,适用于有线局域网。
  • 无线局域网(WLAN)
    • 使用CSMA/CA协议,通过“请求发送”(RTS)和“清除发送”(CTS)机制避免无线信道冲突,适用于Wi-Fi网络(如IEEE 802.11)。
  • 令牌环网(Token Ring)
    • 使用令牌传递机制,每个设备只能在拿到令牌时发送数据,适用于一些工业和大型企业网。

MAC子层的典型数据帧结构

在不同协议中,MAC帧结构可能有所不同,但通常包括以下几个部分:

  1. 帧头(Header):包含目标和源MAC地址、帧类型、帧控制信息等。
  2. 数据字段(Data Field):包含要传输的数据,即来自上层的报文。
  3. 帧尾(Trailer):通常包含校验和(如CRC),用于错误检测。

帧定界(Framing)

帧定界是一种在数据链路层中对数据进行划分的方法。它将从网络层接收到的报文分割成可在物理链路上传输的“帧”。帧定界不仅将数据分隔成可以管理的单元,还通过附加的信息(如头部和尾部)使接收端能识别每个帧的开始和结束。

帧定界的作用

帧定界的主要作用包括:

  1. 数据分隔:将连续的数据流分隔为一个个独立的帧。
  2. 错误检测:每个帧可以包含错误检测机制(如CRC校验),以便在数据传输中发现并处理错误。
  3. 同步通信:在传输过程中,帧定界帮助接收方知道每个帧的开始和结束,从而确保数据准确地分隔开来。
  4. 流量控制:通过帧定界,接收方可以对帧进行接收确认或请求重传,避免数据丢失或网络拥塞。

常见的帧定界方法

帧定界在数据链路层中常用两种方法:位导向方法字节导向方法。这两种方法各有特点,适用于不同的协议和传输需求。以下是它们的详细介绍:


1. 位导向方法(Bit-oriented Method)

位导向方法通过特定的位序列来标记帧的开始和结束,适用于不局限于字节边界的数据流。常用的位导向方法有比特填充

帧结构示例

在HDLC协议中,位导向方法的帧通常包含以下几个部分:

  • 比特填充
    • 在帧的开头和结尾使用一个特定的位序列标记帧边界。例如,HDLC(高级数据链路控制协议)使用 01111110 位序列作为帧的开始和结束标记。
    • 为了避免数据中的 01111110 被误识别为帧边界,当帧数据中出现五个连续的 1 时,自动填充一个 0 位,以确保不会出现六个连续的 1
    • 接收方在检测到五个 1 后会自动删除这个填充的 0,从而还原原始数据。
  • 标志位(Flag):每个帧以01111110开始和结束,指示帧的边界。
  • 地址字段(Address):用于标识目标节点的地址。
  • 控制字段(Control):包含用于控制流量的指令和帧类型信息。
  • 信息字段(Information):即帧的实际数据,长度可以是可变的。
  • 校验字段(FCS - Frame Check Sequence):用于检测帧中的错误,常采用CRC(循环冗余校验)技术。
  • 结束标志位(Flag):与开始标志位相同,为01111110
  • 也可以这样分:
  • 起始和结束序列,头部序列(header)包含地址字段和控制字段。主体(body),以及CRC.
  • 优点:位导向方法更加灵活,不局限于字节边界,可以支持不同类型的数据。
  • 应用:适用于 HDLC 和 PPP(点对点协议)等。

2. 字节导向方法(Character-oriented Method)

字节导向方法通过特定的字节序列来标记帧的开始和结束边界,适用于以字符为单位的数据传输。常见的字节导向方法有字符填充

  • 字符填充

    • 通过特殊字符(如STX表示帧开始,ETX表示帧结束)来标记帧的边界。
    • 如果数据中出现了这些特殊字符,则添加转义字符(如DLE),以避免误识别。
    • 例如,若帧中的内容含有STXETX,则在前面加一个DLE,接收方在遇到DLE时会跳过这个字符的特殊含义,从而正确解码数据。
  • 优点:字节导向方法实现简单,适用于以字节为单位的协议。

  • 应用:适用于传统的面向字符的数据链路层协议,如BSC(位同步通信)协议。


字节导向协议(Byte-Oriented Protocol)是一类基于字节的通信协议,通常用于字符数据的传输和通信。它们采用字节(或字符)为单位进行数据划分,并通过特定的控制字符或字节模式来标识消息边界和帧结构。

字节导向协议的主要特点

  • 基于字符:每一个数据单元(或帧)由多个字节组成,通过控制字符来定义边界。
  • 帧定界:通过在数据流中插入特殊控制字符来标识帧的开始和结束。
  • 字符填充:当数据中包含与控制字符相同的字节时,协议会在数据中插入额外的转义字符,以区分真实的控制字符和数据内容。

常见的字节导向协议

  1. BISYNC(Binary Synchronous Communication)协议

    • IBM开发的早期通信协议,用于在同步环境中进行字符通信。
    • 使用控制字符SYN(同步字符)、SOH(起始字符)、ETX(结束字符)来标识帧边界。
    • 数据中出现控制字符时使用转义字符DLE(Data Link Escape)来避免冲突。
      SYNSYNSOHHeaderSTXBodyETXCRC

  2. PPP(Point-to-Point Protocol)这个很重要

    • 主要用于互联网接入和广域网连接中的链路层协议。
    • PPP将数据分为一系列帧,使用标志字段01111110(0x7E)来标识帧的开始和结束。
    • 如果数据中出现0x7E,则使用字节填充(插入一个转义字符)避免干扰。

PPP(Point-to-Point Protocol,点对点协议)是一种链路层协议,通常用于在点对点的链路上建立直接连接,如通过电话线、光纤等实现的广域网(WAN)连接。PPP广泛应用于互联网接入,例如拨号网络、DSL、以及一些移动网络连接。其帧格式设计为简洁可靠,以便支持数据封装和错误检测。

PPP帧格式

PPP帧格式包括以下字段:

字段长度描述
标志字段(Flag)1 字节表示帧的开始和结束,值为0x7E
地址字段(Address)1 字节固定为0xFF,表示广播地址。
控制字段(Control)1 字节固定为0x03,用于指定无编号信息帧。
协议字段(Protocol)1-2 字节指示封装的数据类型,如IP、LCP等。
信息字段(Information)变长封装的实际数据,不同于PPP控制信息。
FCS字段(Frame Check Sequence)2 或 4 字节帧校验序列,用于错误检测。

各字段详细说明

  1. 标志字段(Flag)

    • 该字段用于标识PPP帧的开始和结束,采用固定值0x7E01111110)。
    • PPP接收方通过该字段来区分帧的边界,并将每帧独立识别。
  2. 地址字段(Address)

    • 通常固定为0xFF,表示广播地址。
    • 在PPP协议中,点对点链路不需要具体的设备地址,因为只有两个通信方。
  3. 控制字段(Control)

    • 固定值为0x03,用于表示无编号的信息帧(Unnumbered Information Frame)。
    • 指定PPP不使用数据链路层编号和确认机制。
  4. 协议字段(Protocol)

    • 该字段指定封装的协议类型(如IP、IPv6、LCP等)。
    • 协议字段长度可以是1或2字节,其中常见协议类型包括:
      • 0x0021:IP协议。
      • 0xC021:链路控制协议(LCP)。
      • 0x8021:网络控制协议(NCP)。
  5. 信息字段(Information)

    • 包含实际的用户数据或控制数据。
    • PPP不对信息字段的长度做严格限制,但通常会受到最大传输单元(MTU)约束。
    • 若数据部分不足以填满最小帧长度,可以通过填充(padding)方式完成。
  6. FCS字段(Frame Check Sequence)

    • 用于错误检测,通过循环冗余校验(CRC)算法生成。
    • 默认情况下为2字节,也可以配置为4字节,以提供更强的错误检测能力。
FLAGADDRESSCONTROLPROTOCOLPAYLOADCHECKSUMFLAG

不要忘记flag用于标识帧的起始和结束

3.DNP3(Distributed Network Protocol)

  • 广泛应用于电力和水资源管理等工业自动化控制系统中。
  • DNP3使用0x0564作为帧的起始字符,标记帧结构并区分数据和控制信息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文5—《基于改进YOLOv5s的轻量化金银花识别方法》文献阅读分析报告

论文报告:基于改进YOLOv5s的轻量化金银花识别方法 论文报告文档 基于改进YOLOv5s的轻量化金银花识别方法 论文报告文档摘要国内外研究现状国内研究现状国外研究现状 研究目的研究问题使用的研究方法试验研究结果文献结论创新点和对现有研究的贡献1. 目标检测技术2. …

雷池waf安装并部署防护站点

雷池waf安装并部署防护站点 最低配置要求 操作系统:Linux 指令架构:x86_64 软件依赖:Docker 20.10.14 版本以上 软件依赖:Docker Compose 2.0.0 版本以上 最小化环境:1 核 CPU / 1 GB 内存 / 5 GB 磁盘 写在前面 本文…

2024第四次随堂测验参考答案

从第四次开始答案会以c语言提供&#xff0c;自行了解&#xff0c;学习 6-1 报数 报数游戏是这样的&#xff1a;有n个人围成一圈&#xff0c;按顺序从1到n编好号。从第一个人开始报数&#xff0c;报到m&#xff08;<n&#xff09;的人退出圈子&#xff1b;下一个人从1开始报…

开源 - Ideal库 - 常用枚举扩展方法(二)

书接上回&#xff0c;今天继续和大家享一些关于枚举操作相关的常用扩展方法。 今天主要分享通过枚举值转换成枚举、枚举名称以及枚举描述相关实现。 我们首先修改一下上一篇定义用来测试的正常枚举&#xff0c;新增一个枚举项&#xff0c;代码如下&#xff1a; //正常枚举 in…

如何平滑切换Containerd数据目录

如何平滑切换Containerd数据目录 大家好&#xff0c;我是秋意零。 这是工作中遇到的一个问题。搭建的服务平台&#xff0c;在使用的过程中频繁出现镜像本地拉取不到问题&#xff08;在项目群聊中老是被人出来&#x1f605;&#xff09;原因是由于/目录空间不足导致&#xff0…

(附项目源码)Java开发语言,监督管家APP的设计与实现 58,计算机毕设程序开发+文案(LW+PPT)

摘要 随着互联网的快速发展和智能手机的普及&#xff0c;越来越多的用户选择通过移动应用程序进行事项设定、提醒通知和事项打卡。监督管家APP作为一个专注于事项设定、提醒通知、事项打卡的监督管理平台&#xff0c;具有广泛的应用前景和商业价值。本研究旨在构建一个功能丰富…

ffmpeg+D3D实现的MFC音视频播放器,支持录像、截图、音视频播放、码流信息显示等功能

一、简介 本播放器是在vs2019下开发&#xff0c;通过ffmpeg实现拉流解码功能&#xff0c;通过D3D实现视频的渲染功能。截图功能采用libjpeg实现&#xff0c;可以截取jpg图片&#xff0c;图片的默认保存路径是在C:\MYRecPath中。录像功能采用封装好的类Mp4Record实现&#xff0c…

LLM在Transformer上的改动

LLM在Transformer上的改动 1.multi-head共享1.1BERT的逻辑1.2multi-head共享 2.attention的前后网络2.1传统Transformer&#xff1a;2.2GPTJ结构&#xff1a; 3.归一化层的位置&#xff08;LayerNorm&#xff09;4.归一化层函数的选择4.1LayerNorm4.2RMSNorm 3.激活函数4.LLama…

git命令及原理

git: 目录则被称之为“树” 文件被称作 Blob 对象. git help <command>: 获取 git 命令的帮助信息 git init: 创建一个新的 git 仓库&#xff0c;其数据会存放在一个名为 .git 的目录下 git status: 显示当前的仓库状态 git add <filename>: 添加文件到暂存区 git …

scala 迭代更新

在Scala中&#xff0c;迭代器&#xff08;Iterator&#xff09;是一种用于遍历集合&#xff08;如数组、列表、集合等&#xff09;的元素而不暴露其底层表示的对象。迭代器提供了一种统一的方法来访问集合中的元素&#xff0c;而无需关心集合的具体实现。 在Scala中&#xff0c…

快速掌握——python类 封装[私有属性方法]、继承【python进阶】(内附代码)

1.类的定义 与 实例化对象 在python中使用class关键字创建一个类。 举例子 class Stu(object):id 1001name 张三def __init__(self):passdef fun1(self):pass# 实例化对象 s1 Stu() s2 Stu() print(s1.name) print(s2.name) 第一个方法 __init__是一种特殊的方法&#x…

51c自动驾驶~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/11638131 #端到端任务 说起端到端&#xff0c;每个从业者可能都觉得会是下一代自动驾驶量产方案绕不开的点&#xff01;特斯拉率先吹响了方案更新的号角&#xff0c;无论是完全端到端&#xff0c;还是专注于planner的模型&a…

BFS 算法专题(三):BFS 解决边权为 1 的最短路问题

目录 1. 迷宫中离入口最近的出口 1.1 算法原理 1.2 算法代码 2. 最小基因变化 ★★★ 2.1 算法原理 2.2 算法代码 3. 单词接龙 3.1 算法原理 3.2 算法代码 4. 为高尔夫比赛砍树 (hard) 4.1 算法原理 4.2 算法代码 1. 迷宫中离入口最近的出口 . - 力扣&#xff08;…

Flink_DataStreamAPI_执行环境

DataStreamAPI_执行环境 1创建执行环境1.1getExecutionEnvironment1.2createLocalEnvironment1.3createRemoteEnvironment 2执行模式&#xff08;Execution Mode&#xff09;3触发程序执行 Flink程序可以在各种上下文环境中运行&#xff1a;我们可以在本地JVM中执行程序&#x…

46.第二阶段x86游戏实战2-拆解自动打怪流程

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

解决C盘空间不足的三种方案

方案一&#xff1a;网上盛传的C盘磁盘碎片整理&#x1f9e9;&#xff08;原理&#xff1a;将分散的文件片段整理到相邻的磁盘区域&#xff0c;减少文件的碎片化程度&#xff09;(效果不明显) 方案二&#xff1a;把其他盘的空间给C盘 &#x1f4bd;&#xff08;效果显著&#xf…

同一套SDK 兼容第二块板卡

尽可能分开写,避免兼容性变差

计算机网络高频八股文面试题及参考答案

请简述 TCP 和 UDP 的区别&#xff1f; TCP&#xff08;传输控制协议&#xff09;和 UDP&#xff08;用户数据报协议&#xff09;是两种不同的传输层协议&#xff0c;它们有以下区别。 从连接方式上看&#xff0c;TCP 是面向连接的协议。在通信之前&#xff0c;需要通过三次握手…

前缀和算法习题篇(上)

1.一维前缀和 题目描述&#xff1a; 解法一&#xff1a;暴力解法&#xff1a;模拟 时间复杂度是O(n*q),会超时。 解法二&#xff1a;前缀和解法&#xff1a;快速求出数组中某一个连续区间的和 快速是指O(1),前缀和思想可把时间复杂度可降到O(q)。 算法思路&#xff1a; 先预处…

uniapp路由与页面跳转详解:API调用与Navigator组件实战

UniApp路由与页面跳转详解&#xff1a;API调用与Navigator组件实战 路由 uniapp页面路由为框架统一管理&#xff0c;开发者需要在page.json里面配置每个路由页面的路径及页面样式。 路由跳转 uniapp有两种页面路由跳转方式&#xff0c;调用API跳转和navigator组件跳转。 调…