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

概述

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

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

数据的流动

在这里插入图片描述

帧的流动

在这里插入图片描述

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

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协议(地址解析协议)

在这里插入图片描述

 在这里插入图片描述

 

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

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

相关文章

ngx_url_t

定义在 src/core/ngx_inet.h typedef struct {ngx_str_t url;ngx_str_t host;ngx_str_t port_text;ngx_str_t uri;in_port_t port;in_port_t default_port;in_port_t …

搜广推校招面经五十四

美团推荐算法 一、手撕Transformer的位置编码 1.1. 位置编码的作用 Transformer 模型没有显式的序列信息(如 RNN 的循环结构),因此需要通过位置编码(Positional Encoding)为输入序列中的每个位置添加位置信息。位置…

网络爬虫【爬虫库urllib】

我叫不三不四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲爬虫 urllib介绍 Urllib是Python自带的标准库,无须安装,直接引用即可。 Urllib是一个收集几个模块来使用URL的软件包,大致具备以下功能。 ● urlli…

LabVIEW棉花穴播器排种自动监测系统

一、项目背景与行业痛点 1. 农业需求驱动 我国棉花主产区,种植面积常年超250万公顷,传统人工播种存在两大核心问题: 效率瓶颈:人均日播种面积不足0.5公顷,难以匹配规模化种植需求; 精度缺陷:人…

解决diffusers加载stablediffusion模型,输入prompt总是报错token数超出clip最大长度限制

1. StableDiffusion1.5 在加载huggingface中的扩散模型时,输入prompt总是会被报错超过clip的最大长度限制。 解决方案:使用compel库 from diffusers import AutoPipelineForText2Image import torch import pdb from compel import Compeldevice torc…

jmeter配件元素

jmeter配件元素 CSV Data Set Config名词解释测试场景Recycle on EOF:False配置测试结果 Recycle on EOF:True配置测试结果 Sharing mode:All Threads配置测试结果 Sharing mode:Current thread group配置测试结果 Sharing mode:Current thread配置测试结果 HTTP Header Manage…

Navicat SqlServer 设置自增主键

Navicat是一款优秀的数据库管理工具&#xff0c;可以连接很多类型的数据库。使用它可以极大的提高工作效率。 Navicat 不能设置SqlServer自增字段&#xff0c;只能通过sql语句来实现 建表时设置 create table <表名> ( <字段1-主键> int identity (1,1) primar…

Elasticsearch搜索引擎 3(DSL)

Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;语句来定义查询条件&#xff0c;其JavaAPI就是在组织DSL条件。 1.DSL查询 叶子查询&#xff08;Leaf query clauses&#xff09;&#xff1a;在特定的字段里查询特定值&#xff0c;属于简单…

final 在 java 中有什么作用?

final 在 java 中有什么作用&#xff1f; 修饰变量 修饰基本数据类型变量&#xff1a; 当用final修饰基本数据类型变量时&#xff0c;该变量就变成了常量&#xff0c;其值在初始化后不能被改变。 final int num 10; // num 20; // 这行代码会导致编译错误&#xff0c;因…

Dubbo/Hession2序列化Immutable类型的集合异常问题

问题排查 根据堆栈信息可见&#xff0c;dubbo使用默认的hession2进行序列化时出现了异常&#xff0c;异常堆栈根原因为&#xff1a;null array 位于java.util.CollSer#readResolve方法中&#xff0c;即在序列化集合时&#xff0c;集合数组为空。 向上追溯jdk.internal.ref…

目标检测任务,如何区分两个相近似的目标

首先&#xff0c;要了解清楚检测的场景下&#xff0c;肉眼能否区分出目标的差异性。 如果可以区分&#xff0c;那观察数据周围背景的差异是否较大&#xff0c;可以先通过添加样本来提升模型的检测精度。添加样本时一定要注意&#xff0c;样本标注的准确性&#xff0c;样本的丰…

Java面试黄金宝典1

1. 8 种基本数据类型 整数类型 byte&#xff1a; 它是最小的整数类型&#xff0c;占用 1 个字节&#xff08;8 位&#xff09;。在一些对内存使用要求极高的场景&#xff0c;比如嵌入式系统开发、数据传输时对数据量有严格限制的情况&#xff0c;会使用 byte 类型。例如&#x…

OSGEarth

OSGEarth 基于 OpenSceneGraph 构建的一个扩展库&#xff0c;专门用于地球科学和地理信息系统&#xff08;GIS&#xff09;数据的可视化。它允许开发者创建逼真的三维地球模型&#xff0c;并在其上展示各种地理空间数据。 高端一点的表述 基于三维引擎osg开发的三维数字地球…

Word 小黑第34套

对应大猫34 设置第二页水印&#xff0c;取消第一页的&#xff1a;取消第二页页眉链接&#xff0c;删除第一张水印图片&#xff08;delete&#xff09; 调整水印图片&#xff1a;点开页眉页脚 双击图片 可以调整 邮件合并 -创建标签 横标签数3 竖标签5 表布局 -查看网格线 插…

2.5.1 io_uring

文章目录 2.5.1 io_uring1. 对比1. select、poll、epoll 对比表格2. 关键特性说明&#xff1a;3. 应用场景 2. 异步io1. 频繁copy2. 如何做到线程安全 3. io_uring1. 实现2. 关键点&#xff1a;3. 问题1. Reactor 与 Proactor 的三点不同2. epoll 与 io_uring 的区别 2.5.1 io_…

K8S学习之基础三十六:node-exporter部署

Prometheus v2.2.1 ​ 编写yaml文件&#xff0c;包含创建ns、configmap、deployment、service # 创建monitoring空间 vi prometheus-ns.yaml apiVersion: v1 kind: Namespace metadata:name: monitoring# 创建SA并绑定权限 kubectl create serviceaccount monitor -n monito…

为什么“连接断开可能导致锁未释放”

目录 两种典型场景可能导致锁未及时释放1. **数据库未及时检测到连接断开**2. **应用程序未正确处理事务** 为什么说“可能因连接断开导致死锁”&#xff1f;如何避免此类问题&#xff1f;总结 在大多数数据库实现中&#xff0c;如果持有锁的连接&#xff08;或会话&#xff09…

【实战指南】基于DevExpress轻量化主题实现WPF应用性能升级

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

【C++多线程】C++异步线程池提交任务的写法和解释

// 提交任务到线程池 template<class F, class... Args> auto ThreadPool::enqueue(F&& f, Args&&... args) -> std::future<typename std::result_of<F(Args...)>::type> {using return_type typename std::result_of<F(Args...)>…

CSS 属性选择器详解

CSS 属性选择器详解 引言 CSS(层叠样式表)是网页设计中的重要组成部分,它用于控制网页元素的样式和布局。属性选择器是CSS选择器的一种,它允许开发者根据元素的特定属性来选择和样式化元素。本文将详细讲解CSS属性选择器的概念、语法以及常用属性选择器的使用方法。 一、…