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

【笔记】计算机网络——数据链路层

概述

链路是从一个结点到相邻结点的物理路线,数据链路则是在链路的基础上增加了一些必要的硬件和软件实现

数据链路层位于物理层和网络层之间,它的核心任务是在直接相连的节点(如相邻的交换机,路由器)之间提供可靠且高效的数据传输

数据的流动

在这里插入图片描述

帧的流动

在这里插入图片描述

一、数据链路层的主要功能:

1.封装成帧

将网络层传递下来的数据包(IP数据报)封装成帧,添加头部和尾部信息

结构:| 帧头 | 数据(Payload) | 帧尾 |;

帧头:包含物理地址(MAC地址),控制信息(如帧类型);帧尾:包含错误检测码,头和尾的一个重要作用就是进行帧定界

帧定界(确定帧的边界,以便接收端能够正确地识别和处理数据)的方法:比特填充,字节填充,特殊字符

比特填充:比特填充是一种在帧中插入特定比特模式以实现帧定界的方法,在HDLC(高级数据链路控制)协议中,使用了标志字段来标识帧的开始和结束。标志字段的比特模式为01111110。为了防止数据中出现与标志字段相同的比特模式,当数据中连续出现5个1时,发送方会自动插入一个0,这一过程称为比特填充。接收方在收到数据时会检查比特序列,如果发现连续5个1后跟一个0,则将该0删除,以恢复原始数据。

字节填充:字节填充是在帧中插入特定的字节以实现帧定界的方法。在PPP(点对点协议)中,使用了标志字段(flag)来标识帧的开始和结束,通常为0xC0(十六进制)。为了确保数据中不会出现与标志字段相同的字节,当数据中出现与标志字段相同的字节时,发送方会插入一个转义字符(通常为0xDB),然后将该字节的值转换为另一个值。接收方在收到数据时会检查字节序列,如果发现转义字符,则将后续字节转换回原始值,并删除转义字符。

特殊字符:以太网使用前导码作为帧的开始标志。前导码是一个特定的比特模式,通常为10101010,用于同步发送方和接收方的时钟。前导码之后是帧的起始定界符(SFD,Start Frame Delimiter),其比特模式为10101011,用于明确标识帧的开始。以太网帧的结束则通过物理层的信号来标识,例如检测到信号的结束或超时机制

在这里插入图片描述

2.透明传输

透明传输是指在数据传输过程中,确保数据能够被准确地传输和接收,而不受数据内容本身的影响。换句话说,无论数据中包含什么样的比特模式或字节序列,都能够被正确地传输和处理。

方法:面向字节的数据链路使用字节填充,面向字符的数据链路使用比特填充

在这里插入图片描述

3.差错控制

在这里插入图片描述

 循环冗余校验(CRC)

工作过程

  1. 发送端

    • 将要发送的数据视为一个二进制多项式M(x)

    • M(x)左移n位(n是生成多项式的次数)。

    • 用左移后的M(x)除以生成多项式G(x),得到余数R(x)

    • R(x)附加到原始数据的末尾,形成最终的传输数据T(x)

  2. 接收端

    • 接收到数据后,将其视为一个二进制多项式T'(x)

    • T'(x)除以生成多项式G(x),检查余数是否为零。

    • 如果余数为零,认为数据无错误;否则,认为数据传输过程中出现了错误。

在这里插入图片描述

 在这里插入图片描述

 点对点PPP协议:

在这里插入图片描述

 PPP协议中帧的格式:

在这里插入图片描述

透明传输 :

面向字节的异步链路:字节填充法(插入转义字符)

在这里插入图片描述

面向比特的同步链路:比特填充法

在这里插入图片描述

差错检测:

能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。

工作状态(不是太懂)

当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。

PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。

这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机

分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。

通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

 在这里插入图片描述

 媒体接入控制(介质访问控制)————广播信道

广播信道就像一个大房间,信息会被所有人听到。媒体接入控制(MAC)就是一种规则,用来管理谁在什么时候说话,避免混乱。

数据链路层的两个子层

逻辑链路控制LLC子层,媒体接入控制MAC子层。

在这里插入图片描述

 MAC地址,IP地址以及ARP协议

在这里插入图片描述

MAC地址

使用点对点信道的数据链路层不需要使用地址,使用广播信道的数据链路层必须使用地址来区分各主机

   在这里插入图片描述

 广播信道的数据链路层必须使用地址(MAC)

在这里插入图片描述

单播MAC地址

在这里插入图片描述

主机B将单播帧发送出去,主机A和C都会收到该单播帧

主机A的网卡发现该单播帧的目的的MAC地址与自己的MAC地址不匹配,丢弃该帧

主机C的网卡发现该单播帧的目的的MAC地址与自己的MAC地址匹配,接受该帧

广播 MAC地址

在这里插入图片描述

 主机B讲该广播帧发送出去,主机A和C都会收到该广播帧,发现该帧首部中的目的地址字段的内容是广播地址,就知道该帧是广播帧,主机A和主机C都接受该帧,并将该帧交给上层处理

多播MAC地址

在这里插入图片描述

主机A将该多播帧发送出去,主机B,C,D都会收到该多播帧

主机B和C发现该多播帧的目的MAC地址在自己的多播组列表中,主机B和C都会接受该帧

主机D发现该多播帧的目的MAC地址不在自己得多播组列表中,则丢弃该多播帧
给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址

IP地址

IP地址属于网络层的范畴,不属于数据链路层的范畴

在这里插入图片描述

从网络体系结构中看IP地址与MAC地址

在这里插入图片描述

 数据包转发过程中IP地址与MAC地址变化情况

在这里插入图片描述

 在这里插入图片描述

可以看出在数据包转发过程中MAC地址在不断的改变,那么我们如何不断得到新的目标MAC地址呢?

ARP协议(地址解析协议)

在这里插入图片描述

 在这里插入图片描述

相关文章:

【笔记】计算机网络——数据链路层

概述 链路是从一个结点到相邻结点的物理路线,数据链路则是在链路的基础上增加了一些必要的硬件和软件实现 数据链路层位于物理层和网络层之间,它的核心任务是在直接相连的节点(如相邻的交换机,路由器)之间提供可靠且…...

Rust语言介绍和猜数字游戏的实现

文章目录 Rust语言介绍和猜数字游戏的实现cargo是什么使用Rust编写猜数字 Rust语言介绍和猜数字游戏的实现 Rust语言是一种系统编程语言,核心强调安全性、并发性以及高性能,由类似于C/C的底层控制能力,性能也非常接近,Rust有一些…...

STM32-汇编

学习arm汇编的主要目的是为了编写arm启动代码,启动代码启动以后,引导程序到c语言环境下运行。换句话说启动代码的目的是为了在处理器复位以后搭建c语言最基本的需求。因此启动代码的主要任务有: 初始化异常向量表; 初始化各工作模…...

利用通义灵码AI在VS Code中快速开发扫雷游戏:Qwen2.5-Max模型的应用实例

引言 随着人工智能技术的不断进步,开发过程中的自动化程度也在逐步提高。阿里云推出的通义灵码AI程序员,作为一款创新型的智能编程助手,现已全面上线并兼容VS Code、JetBrains IDEs等多种开发环境。本文将介绍如何利用最新的Qwen2.5-Max模型…...

202503执行jmeter压测数据库(ScyllaDB,redis,lindorm,Mysql)

一、Mysql 1 、 准备MySQL 连接内容 2 、 下载连接jar包 准备 mysql-connector-java-5.1.49.jar 放到 D:\apache-jmeter-5.6.3\lib\ext 目录下面; 3 、 启动jmeter ,配置脚本 添加线程组---》JDBC Connection Configuration---》JDBC Request---》查看结果树。 1)测…...

【QT 多线程示例】两种多线程实现方式

文章目录 多线程实现方式一:继承QThread类方式二: 使用QObject::moveToThread()方法 多线程实现 在Qt中,实现多线程编程有两种常见的方式,它们分别是通过继承QThread类和使用QObject::moveToThread()方法。 方式一:继…...

excel文件有两列,循环读取文件两列赋值到字典列表。字典的有两个key,分别为question和answer。将最终结果追加到json文件

import pandas as pd import json import osdef excel_to_json_append(excel_path, json_path):# 1. 读取Excel数据到字典列表df pd.read_excel(excel_path, usecols["question", "answer"])new_data [{"question": str(row["question&qu…...

以太网 MAC 帧格式

文章目录 以太网 MAC 帧格式以太网帧间隔参考 本文为笔者学习以太网对网上资料归纳整理所做的笔记,文末均附有参考链接,如侵权,请联系删除。 以太网 MAC 帧格式 以太网技术的正式标准是 IEEE 802.3,它规定了以太网传输数据的帧结…...

【PCB工艺】基础:电子元器件

电子原理图(Schematic Diagram)是电路设计的基础,理解电子元器件和集成电路(IC)的作用,是画好原理图的关键。 本专栏将系统讲解 电子元器件分类、常见 IC、电路设计技巧,帮助你快速掌握电子电路…...

docker 部署elk 设置账号密码

1. 先把 kibana 停掉 2.进入es 容器 docker exec -it 75895a078cbc /bin/bash 找到 bin 目录 执行 ./elasticsearch-setup-passwords interactive 全部设置一样的密码 ,不一样自己要记住,设置成功会输出如下内容 Changed password for user [apm_system] Chang…...

【微信小程序(云开发模式)变通实现DeepSeek支持语音】

整体架构 前端(微信小程序): 使用微信小程序云开发能力,实现录音功能。将录音文件上传到云存储。调用云函数进行语音识别和 DeepSeek 处理。界面模仿 DeepSeek,支持文本编辑。 后端(云函数 Node.js&#…...

从WebRTC到嵌入式:EasyRTC如何借助大模型提升音视频通信体验

随着人工智能技术的快速发展,WebRTC与大模型的结合正在为音视频通信领域带来革命性的变革。WebRTC作为一种开源实时通信技术,以其低延迟、跨平台兼容性和强大的音视频处理能力,成为智能硬件和物联网设备的重要技术支撑。 而EasyRTC作为基于W…...

前端样式库推广——TailwindCss

官方网址: https://tailwindcss.com/docs/installation/using-vite 中文官方文档:https://www.tailwindcss.cn/ github地址:tailwindcss 正在使用tailwindcss的网站:https://tailwindcss.com/showcase 一看github,竟然…...

Gemini分析屏幕截图时,如何处理图像模态(如界面元素、文字内容)与文本模态(用户指令)的语义对齐?

在通过Gemini大语言模型进行屏幕截图分析时,实现图像模态(界面元素/文字内容)与文本模态(用户指令)的语义对齐,需要结合多模态融合技术和领域知识。以下是具体的技术实现路径和挑战应对方案: 1.…...

【6】组合计数学习笔记

前言 关于今天发现自己连快速幂都忘记怎么写这件事 这篇博客是组合计数基础,由于大部分内容都是 6 6 6 级,所以我就给整个提高级的组合数学评了 6 6 6 级。 组合计数基础 加法原理与乘法原理 加法原理(分类计数原理)&#…...

Ai客服机器人系统源码

我将基于常见的自然语言处理库,用 Python 编写一个简单的 AI 客服机器人功能代码示例,它能处理常见问题并根据用户输入提供相应回复。 import nltk​ from nltk.chat.util import Chat, reflections​ ​ # 下载必要的NLTK数据​ nltk.download(pun…...

Redis——事务实现以及应用场景

本文介绍Redis事务相关的原理以及知识点,从redis的常用命令出发,深入理解redis在日常工作中的实际场景使用用法。 本文目录 一、Redis事务简介二、事务相关命令三、事务应用场景 一、Redis事务简介 Redis 事务本质上是一个命令队列。用户可以使用MULTI命…...

SpringBoot 第二课(Ⅰ) 整合springmvc(详解)

目录 一、SpringBoot对静态资源的映射规则 1. WebJars 资源访问 2. 静态资源访问 3. 欢迎页配置 二、SpringBoot整合springmvc 概述 Spring MVC组件的自动配置 中央转发器(DispatcherServlet) 控制器(Controller) 视图解…...

Kafka 八股文

一、基础概念 1. Kafka 是什么?它的核心组件有哪些? Kafka 的定义 Kafka 是一个 分布式流处理平台,最初由 LinkedIn 开发,后成为 Apache 顶级项目。它主要用于 高吞吐量的实时数据流处理,支持发布-订阅模式的消息传递…...

OpenHarmony 开源鸿蒙北向开发——3.配置SDK

安装、配置完成之后我们就要配置SDK。 我们创建工程后,点击右上角设置 进入设置 进入OpenHarmony SDK,选择编辑 这里配置一下SDK安装位置 点击完成 这里我们API版本勾选第一个即可 确认安装 勾选接受 这里要等一会 安装完成后,点击完成...

电子工程师转战汽车OEM主机厂之路

文章目录 1 电子工程师2 汽车系统工程师 第一篇分享一个笔者2018年的一个心得文章,回头想想从事汽车行业也小8年了,从懵懂稚嫩到所谓的老油条,也是难忘的经历,希望我的经历对从事电子行业和汽车行业的小伙伴有所帮助。 1 电子工程…...

vulhub Matrix-Breakout

1.下载靶机,打开靶机和kali虚拟机 2.查询kali和靶机ip 3.浏览器访问 访问81端口有登陆界面 4.扫描敏感目录 kali dirb 扫描 一一访问 robot.txt提示我们继续找找,可能是因为我们的字典太小了,我们换个扫描器换个字典试下,利用kali自带的最大…...

Unity3D开发AI桌面精灵/宠物系列 【二】 语音唤醒 ivw 的两种方式-Windows本地或第三方讯飞等

Unity3D 交互式AI桌面宠物开发系列【二】ivw 语音唤醒 该系列主要介绍怎么制作AI桌面宠物的流程,我会从项目开始创建初期到最终可以和AI宠物进行交互为止,项目已经开发完成,我会仔细梳理一下流程,分步讲解。 这篇文章主要讲有关于…...

三月九次前端面试复盘:当场景题成为通关密钥

三月初集中面了包括字节、美团、滴滴在内的9家公司,经历7场技术面2场Leader面后,发现如今的面试逻辑已发生根本转变。这里分享真实经历与题目,供近期求职者参考。 一、面试形态变化:从理论背诵到实战推演 1. 八股文边缘化&#…...

STM32 —— 嵌入式系统、通用计算机系统、物联网三层架构

目录 一、嵌入式系统的概念 二、通用计算机系统与嵌入式系统的比较 用途 硬件 软件 性能与功耗 开发与维护 三、嵌入式系统与物联网的关系 四、物联网的三层架构 1. 感知层(Perception Layer) 2. 网络层(Network Layer) …...

如何选择合适的 AI 模型?(开源 vs 商业 API,应用场景分析)

1. 引言 在 AI 迅猛发展的今天,各类 AI 模型层出不穷,从开源模型(如 DeepSeek、Llama、Qwen)到商业 API(如 OpenAI 的 ChatGPT、Anthropic 的 Claude、Google Gemini),每种方案都有其优势与适用…...

视频对讲系统中,强插和强拆;视频分发功能

强插和强拆 在视频对讲系统中,强插和强拆是两个具有特定功能的操作,具体含义如下: 强插功能:指在视频对讲过程中,具有更高权限的用户或管理员可以强行插入正在进行的通话或视频连接。例如,当小区保安室监控…...

C++输入输出流第一弹:标准输入输出流 详解(带测试代码)

目录 C输入输出流 流的四种状态(重点) 标准输入输出流 标准输入流 逗号表达式 1. 逗号表达式的基本规则 示例 2. 图片中的代码分析 关键点解析 3. 常见误区 误区 1:逗号表达式等同于逻辑与 && 误区 2:忽略输入…...

{瞎掰} 手机安装app问题:app签名,手机 or OS官方商店 其他非官方app源,安全防护 突破限制

以下,在华为安卓系统手机中,在安装app过程中得到的一些可能是错误的经验。 商品化 app 的收钱方式:通过商店来收钱,通过 app 本身提供的注册码功能来收钱,或是其他的收钱方式。 手机安装 app的特点 从官方商店里安装…...

鸿蒙NEXT项目实战-百得知识库05

代码仓地址,大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点: 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…...