数据链路层协议之以太网协议

news/2024/5/10 17:27:28

以太网协议是通过网线/光纤进行通信。这和通过wifi(无线),通过移动流量(4G/5G)通信不一样。以太网,横跨数据链路层和物理层

一.以太网数据帧格式

包括了帧头+载荷(IP数据报)+帧尾。

1.目的地址 源地址

分别都是六个字节。这里的地址不是IP地址,而是mac地址。由于mac地址是6个字节,所以比IP地址大了2^16倍,所以即使IP地址不够用了,mac地址也是充足的。一般来说,每一格网卡出厂时,其中的mac地址就写死了,不能够修改。所以mac地址也可以作为一台网络设备的身份标识。一个网卡对应一个mac地址

cmd中查看mac地址,通常是用16进制表示的,每个字节之间用-或:来分割

mac和IP的各自用途

IP协议立足全局,完成整个通信路径的规划过程

以太网关注局部,强调响铃两个设备之间的通信过程

比如我要回老家,就是从A到B。传输层关注的就是A和B这两个起始位置;网络层关注的是A->C->B还是A->D>B,也就是要选择哪一条路径,但是无论选哪条,IP数据报中的源IP和目的IP都是不变的;数据链路层则关注相邻节点如何转发。假设在网络层选择了A>C>B这条路,那么数据链路层就会确定下来:A>C做飞机,C>B坐火车。

然后在A>C过程中,数据报的源IP目的IP分别是AB,而原mac目的mac则是A C;在C>B过程中数据报的源IP目的IP分别是AB,而原mac目的mac则是C B

2.类型

类型描述了载荷中的数据是啥样的数据。类型字段占两个字节

也就是描述了上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议。若字段为0x0806,表示ARP协议;字段为0x8035,表示RARP

ARP与RARP两种协议不是传输业务数据的,而是辅助转发的协议。我们知道,像交换机这样的设备,收到以太网数据帧后,要进行转发(就是刚才举的例子,A>c>B,到了C之后要进行转发),此过程需要能够根据mac地址来判断走哪个网口(这个网口指的就是物理意义上插网线的扣,而不像IP协议中路由器走哪个网络接口是抽象概念)。那么具体如何转发?交换机内部就有一个数据结构转发表(就相当于是一个简单的hash表),表如何构造?就是通过ARP协议来生成的

3.数据

放的就是要传输的有效数据

4.CRC

其实就是校验和。

二.MTU

1.认识MTU

MTU相当于发快递时对包裹尺寸的限制,这个限制时不同的数据链路对应的物理层产生的限制。

以太网帧中的数据长度最小规定为46字节,最大不超过1500字节。

然而ARP数据报的长度不够46字节,只有28个字节,所以要在后面补填充位18个字节

同理RARP也是28字节,也要补18位。

如果一个数据包从以太网路由到拨号链路上,数据包的长度大于拨号链路的MTU了,就需要对数据包进行分片

不同的数据链路层标准的MTU是不同的

2.MTU对IP协议的影响

由于数据链路层MTU的限制(最小就得是46字节,最大也就1500字节),就要对较大的IP数据包进行分包(因为IP协议中数据上限是64kb,也就是1024*64=2^16字节,所以大的IP数据包会远超1500字节)。

分包就是将一个大的数据包分为若干个小的数据包,每个小包的16位标识(id)都是相同的;

每个小包的三位标志位字段中,第二位是0标识允许分片,第三位表示结束标记(0就是说当前不是最后一个包,1表示当前就是最后一个包);

到达对端后就会对这些小包进行重组,拼装到一起后再返回给传输层;


http://www.mrgr.cn/p/00487841

相关文章

MFC标签设计工具 图片控件上,移动鼠标显示图片控件内的鼠标xy的水平和垂直辅助线要在标签模板上加上文字、条型码、二维码 找准坐标和字体大小 源码

需求:要在标签模板上加上文字、条型码、二维码 找准坐标和字体大小 我生成标签时,需要对齐和 调文字字体大小。这工具微调 能快速知道位置 和字体大小。 标签设计(点击图片,上下左右箭头移动 或-调字体) 已经够用了,滚动条还没完…

mac-git上传至github(ssh版本,个人tokens总出错)

第一步 git clone https://github.com/用户名/项目名.git 第二步 cd 项目名 第三步 将本地的文件移动到项目下 第四步 git add . 第五步 git commit -m "添加****文件夹" 第六步 git push origin main 报错: 采用ssh验证 本地文件链接公钥 …

循序渐进丨MogDB 对 Oracle DBLink兼容性增强

本特性自 MogDB 5.0.0版本开始引入,支持 Oracle DBLink语法,可以使用符号访问 Oracle 数据库中的表。 示 例 01 环境准备 MogDB 环境 已安装 MogDB 数据库。已安装oracle_fdw插件,具体安装方法参见oracle_fdw安装文档https://docs.mogdb.io/…

flask各种版本的项目,终端命令运行方式的实现

目录 写在前面 一、Flask项目的基本结构 二、使用终端命令运行Flask项目 1. 安装Flask 2. 创建Flask应用 3. 配置FLASK_APP环境变量 4. 运行Flask应用 5. 访问Flask应用 三、Flask CLI的其他功能 1. 创建Flask应用 2. 运行开发服务器 3. 清理缓存文件 4. 运行单元…

45.跳跃游戏||

// 定义一个名为Solution的类 class Solution {// 定义一个public方法jump,输入参数为一个整数数组nums,返回值类型为整数public int jump(int[] nums) {// 初始化跳跃次数结果变量为0int result 0;// 初始化当前覆盖的最远距离下标为0int end 0;// 初…

打造新质生产力,亚信科技2024年如何行稳致远?

引言:不冒进、不激进,稳扎稳打, 一个行业一个行业地深度拓展。 【全球云观察 | 科技热点关注】 基于以往“一巩固、三发展”的多年业务战略,亚信科技正在落实向非通信行业、标准产品、软硬一体产品和国际市场的“四…

git clone 后如何 checkout 到 remote branch

what/why 通常情况使用git clone github_repository_address下载下来的仓库使用git branch查看当前所有分支时只能看到master分支,但是想要切换到其他分支进行工作怎么办❓ 其实使用git clone下载的repository没那么简单😥,clone得到的是仓库…

自营商城私域商城的选品上货如何借助API实现自动化商品采集商品搜索无货源?

商业智能时代的来临,在线化、网络化、智能化、企业与用户的颗粒度越来越细,满足每个人的个性化要求也是未来商业的重要特征!马云曾经说过,未来的核心资源是数据,数据将成为一家企业动力源,而这一切的基础都…

重塑未来:Web3如何改变我们的数字生活

引言 随着科技的飞速发展,Web3已经成为数字时代的新潮流,其革命性的变革正在渐渐改变着我们的数字生活。本文将深入探讨Web3如何改变我们的数字生活,涉及其意义、应用场景、对未来的影响,以及我们如何适应这一变革,为…

Si24R2F+2.4GHz ISM 频段低功耗无线集成嵌入式发射基带无线

Si24R2F在原有Si24R2F的基础上:优化了射频性能、增加NTC测温、增加自动唤醒间隔、优化了蓝牙性能。在固定资产管理、冷链物流和牛羊畜牧业标签市场更具竞争力。 在原有SI24R2E做白卡/校徽的群体,在新的卡片机应用,更加推荐用SI24R2F&#xff…

学习可视化比较好用的网站Apache ECharts

Apache ECharts 是一个基于 JavaScript 的开源可视化图表库,它提供了直观、交互丰富且可高度个性化定制的数据可视化图表。这个库最初由百度团队开源,并在 2018 年初捐赠给了 Apache 基金会,成为 ASF 的孵化级项目。在 2021 年 1 月 26 日&am…

DHCP的使用。

打开服务管理器,点击方框中的添加角色和功能。 点击下一步。 点击下一步。 点击下一步。 将DHCP服务器勾选上,点击下一步。 点击下一步。 点击下一步。 点击安装。 等待安装。 点击箭头所指处。 点击,点击完成DHCP配置。 点击提交。 点击DHCP…

【C++入门】 初见,单推,与C++的第一次约会

关注小庄 顿顿解馋(ᕑᗢᓫ∗)˒ 引言:本篇博客我们开始与C的第一次约会,C是兼容c的,本篇博客我们将了解到C关键字有哪些,C命名空间,C输入与输出和缺省参数的内容,请放心食用 ~ 文章目录 一 🏠 C…

【论文速读】| 对大语言模型解决攻击性安全挑战的实证评估

本次分享论文为:An Empirical Evaluation of LLMs for Solving Offensive Security Challenges 基本信息 原文作者:Minghao Shao, Boyuan Chen, Sofija Jancheska, Brendan Dolan-Gavitt, Siddharth Garg, Ramesh Karri, Muhammad Shafique 作者单位&a…

【Selenium】隐藏元素的定位和操作|隐藏与isDisplay方法

一、selenium 中隐藏元素如何定位? 如果单纯的定位的话,隐藏元素和普通不隐藏元素定位没啥区别,用正常定位方法就行了 但是吧~~~能定位到并不意味着能操作元素(如click,clear,send_keys) 二、隐藏元素 如下图有个输入框…

【搜索引擎2】实现API方式调用ElasticSearch8接口

1、理解ElasticSearch各名词含义 ElasticSearch对比Mysql Mysql数据库Elastic SearchDatabase7.X版本前有Type,对比数据库中的表,新版取消了TableIndexRowDocumentColumnmapping Elasticsearch是使用Java开发的,8.1版本的ES需要JDK17及以上…

Amazon SageMaker + Stable Diffusion 搭建文本生成图像模型

如果我们的计算机视觉系统要真正理解视觉世界,它们不仅必须能够识别图像,而且必须能够生成图像。文本到图像的 AI 模型仅根据简单的文字输入就可以生成图像。 近两年,以ChatGPT为代表的AIGC技术崭露头角,逐渐从学术研究的象牙塔迈…

回文子串 每日温度 接雨水

647. 回文子串 力扣题目链接 如果s【i】和s【j】相同 dp【i1】【j-1】也是回文串的话 (等于true) 那么dp【i】【j】也是回文串 true 定义一个bool二维数组 遍历顺序是从下到上 从左到右 因为dp【i】【j】是通过dp【i1】【j-1】推出来的 i从最后一…

CI/CD实战-jenkins部署 3

安装 软件下载地址:Index of /jenkins/redhat/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 启动服务 安装推荐插件 不新建用户,使用admin账号登录 修改一下初始密码 新建项目测试 安装git命令 生成密钥 在gitlab中上传公钥 修改ssh 创建中…

AQS源码分析

前言 AbstractQueuedSynchronizer是抽象同步队列,其是实现同步机器的基础组件,并发包中的锁的底层就是使用AQS实现的。AQS中 维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞…