计算机网络-数据链路层

基本概念

数据链路和链路

链路:指的是从一个节点到相邻节点的一段物理线路,且中间没有任何其他的交换节点

数据链路:传输数据时,除了一条物理线路,还需要一些必要通信协议来控制这些传输。

数据链路层的三个基本问题:
  • 封装成帧

    • 基本概念

      数据链路层在接收端,将网络层交下来的数据报封装为数据帧,发送到链路上。在接收端,将接收到的数据帧中的数据报取出并且上交给网络层。

      网络层协议数据单元就是 IP数据报, 数据链路封装成的帧,在物理层变成数字信号在链路上传输。

      如上图,不考虑物理层,简单的认为,数据帧通过数据链路通过节点A发送到节点B。

    • 封装

    • 封装成帧,就是在将网络层的IP数据报的前后分别添加首部尾部,这样就构成了一个帧。

    • 不同的数据链路层协议的帧的首部和尾部包含的信息有明确的规定,帧的首部和尾部有帧开始符帧结束符,称为帧定界符。接收端收到物理层传过来的数字信号读取到帧开始字符一直到帧结束字符,就认为接收到了一个完整的帧。在数据传输中出现差错时,帧定界符的作用更加明显。

    • MTU:每一种数据链路层协议都规定了所能够传送的帧的数据部分长度的上限–即最大传输单元MTU(Maximum Transfer Unit),以太网的MTU为1500个字节

  • 透明传输

    帧的开始符为SOH (start of head),是ASCII字符表中的,对应的16进制是0x01,结束符为EOT (End of Transmission),也是ASCII字符表中。当传输二进制数据,很可能在数据部分出现和结束符相同的编码,那么为了避免提前结束,那么就需要用转义字符ECS,来告诉接收端的数据链路层,这里不是真正的结束符号。其他需要转义的字符也是也是如此。

  • 差错控制

    为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用一些差错检测措施。目前比较广泛的是CRC。这部分位于数据帧的尾部:FCS部分。FCSCRC的余数。如果无差错结束,这部分在接收端的数据链路层的数据帧中自动去掉。


以太网

以太网是一种计算机局域网组网技术。

以太网最短帧

为了能够检测到正在发送的帧在总线上是否产生冲突,以太网的帧不能太短,如果太短就有可能检测不到自己发送的帧产生了冲突。经过计算最短的帧是64字节

这就意味着以太网发送数据帧如果前64字节没有检测出冲突,后面发送的数据就一定不会发生冲突。换句话说,如果发生碰撞,就一定在发送前64字节之内。由于一旦检测出冲突就立即终止发送,这时发送的数据一定小于64字节,因此凡是长度小于64字节的帧都是由于冲突而异常终止的无效帧,只要收到了这种无效帧,就应当立即将其终止。

MAC数据帧格式

从网络层来的是 IP 数据报,数据链路层分别在添加上:目标MAC地址,源MAC地址,类型(ip数据报的类型),以及在结尾处添加了差错控制部分fcs。物理层在以太网的MAC数据帧上添加8字节数据。

当数据字段的长度小于46字节时,数据链路层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64字节,接收端还必须能够将添加的字节去掉。

之所以是46个字节,是因为"目标MAC地址、源MAC地址以及类型分别占6,6,2个字节",64-18=46。

  • 无效帧MAC帧

    • 帧的长度不是整数个字节。
    • 用收到的帧检验序列FCS查出有差错。
    • 收到帧的MAC客户的数据字段的长度不在46-1500字节之间。考虑到MAC帧首部和尾部的长度共有18字节,可以得出有效的MAC帧长度为64-1518字节之间。

    对于检查出的无效MAC帧就简单地丢弃, 以太网不负责重传丢弃的帧。是否重传是上层应用层的任务,比如TCP会重新传输,而UDP不会重新传输。

以太网的信道利率用

利用率是指的发送数据的时间占整个时间的比例。

MAC层的硬件地址 (MAC地址)

MAC地址,也叫硬件地址,一共48位:前24位是厂家 后面24位厂家自己指定

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

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

相关文章

【架构】客户端优化

这篇文章总结一下服务器网关及之前部分的优化,如客户端的优化,CDN/DNS等。 这里我们先谈一谈客户端缓存优化的手段。一般我们后端在说到缓存,第一时间想到的往往是redis,其实缓存在架构层次还有很多其他可以实现的地方&#xff0…

度言软件介绍

度言软件管理员操作后台 https://www.duyansoft.com企业后台为公司管理员操作后台,共计有七个功能版块 控制台 成员管理——员工管理 成员管理——员工管理(添加员工) 成员管理——团队管理 公司管理员可以新建/编辑/删除团队&#xff0c…

SSM整合快速学习

目录 步骤: 一、环境搭建 1.创建JdbcConfig配置类 2.创建JdbcConfig配置类 3.创建MybatisConfig配置类 4.创建jdbc.properties 5.创建SpringMVC配置类 6.创建Web项目入口配置类 二、功能模块开发 步骤1:创建数据库及表 步骤2:编写模型类 步骤3:编写Dao接…

Java面试题--JVM大厂篇之Java中Parallel GC的调优技巧与最佳实践

目录 引言: 正文: 1. 理解Parallel GC的工作原理 2. 常见痛点与解决方案 痛点一:长时间暂停 痛点二:频繁的Minor GC 痛点三:内存溢出 3. 调优参数推荐 4. 实战经验分享 结束语: 引言:…

定时任务-xxl-job

一. 为什么定时任务可以定时执行 定时任务可以定时执行的原理是通过操作系统提供的定时器实现的。 以下是定时任务能够准时执行的基本原理和相关技术: 操作系统的调度器: 操作系统(如Linux、Windows等)内部都有一个调度器&#x…

electron 配置、打包 -报错解决

目录 一、配置途中遇到的问题: 二、 make 配置好后开始打包 三、Electron-builder 打包报错 一、配置途中遇到的问题: 1. 安装 yarn add electron -D 一直卡在这里失败 一直卡可以使用下面这个,然后再重新装依赖 1. 采用新的镜像地址 npm …

机械学习—零基础学习日志(高数22——泰勒公式理解深化)

核心思想:函数逼近 在泰勒的年代,如果想算出e的0.001次方,这是很难计算的。那为了能计算这样的数字,可以尝试逼近的思想。 但是函数又不能所有地方都相等,那退而求其次,只要在一个极小的范围,…

Modbus-RTU详解

目录 Modbus-RTU协议 帧结构示例 CRC16校验算法 CRC16算法的过程 modbus-rtu的使用 发送数据 接收数据 tcp网口完整实现modbus-rtu协议 使用NModbus4实现modbus-rtu协议 安装NModbus4库。 串口实现NModbus4 Modbus-RTU协议 Modbus RTU 协议是一种开放的串行协议,广…

GroupMamba实战:使用GroupMamba实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

26集 ESP32 AIchat启动代码分析-《MCU嵌入式AI开发笔记》

26集 ESP32 AIchat启动代码分析-《MCU嵌入式AI开发笔记》 这集我们分析代码如何组织起来,如何编译 先用sourceinsight把代码加进工程。 新建一个sourceinsight工程,把AI-CHAT代码加进来,之后把ESP IDF代码加进来,之后把ESP-ADF加…

大语言模型(LLM)文本预处理实战

大语言模型(LLM)文本预处理实战 文章目录 大语言模型(LLM)文本预处理实战2.1 理解词嵌入2.2 文本分词2.3 将 token 转换为 token ID2.4 添加特殊上下文 token2.5 字节对编码 (BytePair Encoding, BPE)2.6 使用滑动窗口进行数据采样…

sql注入部分总结和复现

一个端口对应一个服务 联合查询注入 所有的程序中,单双引号必须成对出现 需要从这个引号里面逃出来 在后面查询内容 ?id1 要查库名,表名,列名。但是联合查询要知道有多少列,所以通过order by 去查询 order by # 通过二分法…

Cartopy简介和安装

Cartopy 是一个开源免费的第三方 Python 扩展包,由英国气象办公室的科学家们开发,支持 Python 2.7 和 Python 3,致力于使用最简单直观的方式生成地图,并提供对 matplotlib 友好的协作接口。初学Cartopy,欢迎指正&#…

算法回忆录(3)

11. 假设有7个物品&#xff0c;它们的重量和价值如下表所示。若这些物品均不能被分割&#xff0c;且背包容量M&#xff1d;150&#xff0c;设计算法求解怎么装才能使得获取的价值最大&#xff1f;请写出伪代码。 #include <stdio.h>#define MAX_ITEMS 100 #define …

新手小白嵌入式单片机教程,ESP32

1.什么是ESP32。 ESP32是一款由乐鑫信息科技&#xff08;Espressif Systems&#xff09;推出的高度集成的低功耗系统级芯片&#xff08;SoC&#xff09;&#xff0c;它结合了双核处理器、无线通信、低功耗特性和丰富的外设&#xff0c;特别适用于各种物联网&#xff08;IoT&am…

Robot Operating System——深度解析单线程执行器(SingleThreadedExecutor)执行逻辑

大纲 创建SingleThreadedExecutor新增Nodeadd_nodetrigger_entity_recollectcollect_entities 自旋等待get_next_executablewait_for_workget_next_ready_executableTimerSubscriptionServiceClientWaitableAnyExecutable execute_any_executable 参考资料 在ROS2中&#xff0c…

python 爬虫入门实战——爬取维基百科“百科全书”词条页面内链

1. 简述 本次爬取维基百科“百科全书”词条页面内链&#xff0c;仅发送一次请求&#xff0c;获取一个 html 页面&#xff0c;同时不包含应对反爬虫的知识&#xff0c;仅包含最基础的网页爬取、数据清洗、存储为 csv 文件。 爬取网址 url 为 “https://zh.wikipedia.org/wiki/…

数据结构:基于顺序表实现通讯录系统(含源码)

目录 一、前言 二、各个功能的实现 2.1 初始化通讯录 2.2 添加通讯录数据 2.3 查找通讯录数据 2.4 删除通讯录数据 2.5 修改通讯录数据 2.6 展示通讯录数据​编辑 2.7 销毁通讯录数据 三、添加菜单和测试 四、完整源码 sxb.h sxb.c contact.h contact.c test.c 一、前…

【隐私计算篇】混淆电路之深入浅出

入门隐私计算的阶段&#xff0c;一般都会涉及对于混淆电路的学习&#xff0c;这是因为混淆电路是多方安全计算中的基础密码原语&#xff0c;也是隐私保护中重要的技术。为了帮助更好地理解混淆电路的原理&#xff0c;今天对其进行原理以及相关优化手段进行解析和分享。 1. 混淆…

不同角色路由权限配置(六)

一、启用方式 配置开启config/config.ts。同时需要 src/access.ts 提供权限配置 export default {access: {},// access 插件依赖 initial State 所以需要同时开启initialState: {}, };这里以扩展的路由配置为例&#xff0c;配置只有admin权限才能查看的页面 1、在src/acces…