JavaEE: 数据链路层的奇妙世界

news2024/11/27 20:58:02

文章目录

  • 数据链路层
    • 以太网
      • 源地址和目的地址
    • 类型
    • 数据
      • 认识 MTU


数据链路层

以太网

以太网的帧格式如下所示:
在这里插入图片描述

源地址和目的地址

源地址和目的地址是指网卡的硬件地址(也叫MAC地址).

mac 地址和 IP 地址的区别:

  1. mac 地址使用6个字节表示,IP 地址4个字节表示.
    一般一个网卡,在出厂的时候,mac 地址就已经被分配好了,就写死了(不能改).
  2. mac 地址使用在数据链路层,用来实现两个相邻设备之间的数据转发.(微观)
    IP地址使用在网络层,立足于整个转发流程,进行路径规划.(宏观)

理论上来说,搞一套地址,也能完成宏观和微观上层次的所有工作,IP地址和mac地址留一组就可以了.但是实际上两个都留了下来,分配了不同的任务.
IP地址和mac地址,是两伙人,同一个时间段,各自独立搞出来的,两边都觉得自己的东西好,于是就综合一下,你这个地址负责这块,你那个地址负责那块就可以了~

举个例子(不考虑 NAT )
我要从西安出发,去吉林省白城市安广镇.

  1. 第一步,路径规划(网络层).
    西安 -> 北京 -> 长春 -> 白城 -> 安广
  2. 第二步,实施.
    在这里插入图片描述
    以太网数据帧里面的 mac 地址,会随着转发的过程,时刻发生改变(每经过一个交换机/路由器都会变).

类型

在这里插入图片描述

类型: 描述了载荷中是啥样的数据.

ARP 数据报 / ARP协议: 可以视为是让当前设备,获取到周围 IP 地址和 mac 地址之间的映射关系.

在IP协议路由转发的过程中,路由器会根据目标IP地址查找路由表,以确定传输数据的下一个网络接口。然后,路由器将需要转发的数据包转发给与该网络接口相连的设备,这涉及到将IP地址转换为目标设备的MAC地址。

ARP 协议就是用来建立上述的映射关系的.

当设备接入网络时,它会发送一个ARP请求广播报文,该报文中包含设备的IP地址。收到该广播报文的其他设备会检查该IP地址是否与自己的IP地址匹配,如果匹配则会返回一个ARP响应报文,其中包含设备的IP地址和MAC地址。这样,设备就可以通过ARP响应报文获得其他设备的MAC地址,从而建立通信。

数据

在这里插入图片描述
我们可以看到,数据的长度为 46 ~ 1500字节.
这里不解释46是咋来的.主要关心1500.

认识 MTU

数据链路层数据帧 的最大载荷长度,1500字节,相当于 1.5 kb.这个数字,我们把它叫做MTU.

MTU和硬件直接相关,不同的硬件设备,就对应到了不同的数据链路层协议,也就对应到了不同的 MTU .(不同的硬件设备和协议可能有不同的MTU值,本文只是拿1500字节举个例子)

以太网,其实是挺短的,1.5非常小. IP/UDP 至少还是 64kb.

此处MTU的限制,就会对上层协议产生直接影响.

最典型的就是IP协议,IP协议能拆包组包,其实IP协议的拆包组包,不是应对IP的64kb,更多的是应对MTU的限制.
当一个IP数据报,达到 1500kb 以上的时候,就会自动拆包了.


本文到这里就结束啦~

在这里插入图片描述

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

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

相关文章

论文选题没思路?用这7个GPT提示词10分钟确定论文选题

选题是论文写作的第一步,也是至关重要的一步。毕业论文选题都是让大学生头疼的大事。没有灵感、方向不清、信息太多,常常让人无从下手。现在有了ChatGPT这样的AI写作辅助工具,它可以帮你快速生成丰富的选题思路,轻松解决选题难题。…

Anaconda创建环境

目录 前言 第一步:更改环境创建位置 第二步:安装环境 前言 在我们创建多个项目的时候,有时会安装的库版本冲突,所以最好是一个项目一个环境 第一步:更改环境创建位置 新安装Anaconda后,在创建环境时环…

洛谷每日一题(P1205 [USACO1.2] 方块转换 Transformations)矩阵变换

原题目链接: P1205 [USACO1.2] 方块转换 Transformations - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 原题目截图: 思路分析: 这题目还是比较简单,模拟一下旋转变化的过程,然后注意变换的规律就行了。 读取输入…

电脑提示msvcp140.dll丢失如何解决,马上教你6种解决方法

在使用电脑时,我们可能会遇到提示缺少msvcp140.dll的错误信息。这个提示意味着我们的电脑中缺少MSVCP140.dll这个文件,它是某些程序运行所必需的。如果我们遇到这个问题,应该如何解决呢?本文将详细解析如何解决msvcp140.dll丢失的…

C. Tree Pruning【Codeforces Round 975 (Div. 1)】

C. Tree Pruning (永远不知道为什么TLE直到把初始化的memset换成for循环 题意很简单,就是找到一个深度,使得删除最少的节点且所有的叶子节点都为这个深度。 从小到大遍历可能的深度i,容易知道所有 深度大于i的节点 和所有 子树最大深度小于i…

vue出现Component name “Politic“ should always be multi-word错误

效果 原因 组件名不能为单个单词,怕和html标签混淆 解决方法 1.选择多个单词区分 2.修改package.json里的rules规则,忽略文件命名校验

详细解释:前向传播、反向传播等

详细解释:前向传播、反向传播等 在机器学习和深度学习中,**前向传播(Forward Propagation)和反向传播(Backward Propagation)**是训练神经网络的两个核心过程。理解这两个概念对于掌握神经网络的工作原理、优化方法以及模型微调技术(如LoRA、P-tuning等)至关重要。以下…

YOLO11改进|注意力机制篇|引入ELA注意力机制

目录 一、【ELA】注意力机制1.1【ELA】注意力介绍1.2【ELA】核心代码 二、添加【ELA】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【ELA】注意力机制 1.1【ELA】注意力介绍 这篇论文的作者通过分析Coordinate Attention(C…

Python中的数据可视化:从入门到进阶

数据可视化是数据分析和科学计算中的重要环节,它通过图形化的方式呈现数据,使复杂的统计信息变得直观易懂。Python提供了多种强大的库来支持数据可视化,如Matplotlib、Seaborn、Plotly等。本文将从基础到进阶,详细介绍如何使用这些…

如何构建LSTM神经网络模型

一、了解LSTM 1. 核心思想 首先,LSTM 是 RNN(循环神经网络)的变体。它通过引入细胞状态 C(t) 贯穿于整个网络模型,达到长久记忆的效果,进而解决了 RNN 的长期依赖问题。 2. 思维导图 每个LSTM层次都有三个重要的门结构…

贝尔曼公式

为什么return 非常重要 在选择哪个策略更好的时候,此时需要使用到return,比如下面三个策略的返回值。 策略1: 策略2:策略3:涉及到两个policys path How to calculate return 定义 上图定义了不同的起点下的return value 递推…

优化销售漏斗建立高效潜在客户生成策略的技巧

如何建立有效的潜在客户生成策略?建立有效潜在客户生成策略需要准确定义目标受众,利用内容营销、SEO、社交媒体、邮件营销和定向广告吸引客户,参加行业会议并跟踪分析数据。借助Zoho CRM系统,企业能够更加高效地管理客户信息&…

Windows上 minGW64 编译 libssh2库

下载libssh2库:https://libssh2.org/download/libssh2-1.11.0.zip 继续下载OpenSSL库: https://codeload.github.com/openssl/openssl/zip/refs/heads/OpenSSL_1_0_2-stable

算法讲解—最小生成树(Kruskal 算法)

算法讲解—最小生成树(Kruskal 算法) 简介 根据度娘的解释我们可以知道,最小生成树(Minimum Spanning Tree, MST)就是:一个有 n n n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n n n 个结点…

【Diffusion分割】CTS:基于一致性的医学图像分割模型

CTS: A Consistency-Based Medical Image Segmentation Model 摘要: 在医学图像分割任务中,扩散模型已显示出巨大的潜力。然而,主流的扩散模型存在采样次数多、预测结果慢等缺点。最近,作为独立生成网络的一致性模型解决了这一问…

【Python】数据可视化之聚类图

目录 clustermap 主要参数 参考实现 clustermap sns.clustermap是Seaborn库中用于创建聚类热图的函数,该函数能够将数据集中的样本按照相似性进行聚类,并将聚类结果以矩阵的形式展示出来。 sns.clustermap主要用于绘制聚类热图,该热图通…

云计算第四阶段 CLOUD2周目 01-03

国庆假期前,给小伙伴们更行完了云计算CLOUD第一周目的内容,现在为大家更行云计算CLOUD二周目内容,内容涉及K8S组件的添加与使用,K8S集群的搭建。最重要的主体还是资源文件的编写。 (*^▽^*) 环境准备: 主机清单 主机…

CUDNN下载配置

目录 简介 下载 配置 简介 cuDNN(CUDA Deep Neural Network library)是NVIDIA开发的一个深度学习GPU加速库,旨在提供高效、标准化的原语(基本操作)来加速深度学习框架(如TensorFlow、PyTorch等&#xf…

Rust 快速入门(一)

Rust安装信息解释 cargo:Rust的编译管理器、包管理器、通用工具。可以用Cargo启动新的项目,构建和运行程序,并管理代码所依赖的所有外部库。 Rustc:Rust的编译器。通常Cargo会替我们调用此编译器。 Rustdoc:是Rust的…

Java 面向对象设计一口气讲完![]~( ̄▽ ̄)~*(上)

目录 Java 类实例 Java面向对象设计 - Java类实例 null引用类型 访问类的字段的点表示法 字段的默认初始化 Java 访问级别 Java面向对象设计 - Java访问级别 Java 导入 Java面向对象设计 - Java导入 单类型导入声明 按需导入声明 静态导入声明 例子 Java 方法 J…