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

【探索Linux】P.44(数据链路层 —— 以太网的帧格式 | MAC地址 | MTU | ARP协议)

在这里插入图片描述

阅读导航

  • 引言
  • 一、认识以太网
  • 二、以太网的帧格式
  • 三、MAC地址
  • 四、MTU
  • 五、ARP协议
  • 温馨提示

引言

在深入探讨了网络层的IP协议之后,本文将带领读者进一步深入网络的底层——数据链路层。我们将详细解析以太网的帧格式,这是数据链路层传输数据的基本单元,它规定了数据包的组织方式和传输规则。同时,我们将探究MAC地址,即媒体访问控制地址,它是网络设备的唯一标识符,对于设备间的识别和通信至关重要。此外,我们还将讨论MTU,即最大传输单元,它定义了网络设备能够处理的最大数据包大小,直接影响网络的传输效率和性能。最后,我们将深入了解ARP协议,即地址解析协议,它通过将IP地址映射到MAC地址,确保了网络层和数据链路层之间的无缝连接。通过这些关键概念的深入分析,我们将更全面地理解数据链路层在网络通信中的基础作用,以及它如何支撑整个网络架构的稳定运行。

一、认识以太网

以太网(Ethernet)是一种局域网技术,它定义了包括物理层和数据链路层的一套标准,用于在网络设备之间传输数据。以下是以太网的一些关键特点和组成部分(后面我们会详细介绍):

  1. 帧格式:以太网使用帧作为数据传输的基本单位。一个以太网帧包括多个部分,如目的地址、源地址、类型或长度字段、数据载荷以及帧检验序列(FCS)。

  2. MAC地址:每个以太网设备都有一个唯一的48位(或64位)地址,称为MAC地址。它用于在局域网内唯一标识设备。

  3. MTU(最大传输单元):以太网的MTU通常为1500字节,这是以太网帧可以传输的最大数据量。超过这个大小的数据需要进行分片处理。

  4. 交换机和集线器:以太网网络中使用交换机和集线器来连接不同的设备。交换机可以智能地转发帧到正确的目的地,而集线器则广播帧到所有端口。

  5. 速率和双工模式:以太网支持不同的传输速率,包括10 Mbps、100 Mbps(Fast Ethernet)、1 Gbps(Gigabit Ethernet)以及10 Gbps(10 Gigabit Ethernet)等。此外,它还支持全双工或半双工模式。

  6. 物理介质:以太网可以使用多种物理介质,如双绞线(包括非屏蔽双绞线UTP和屏蔽双绞线STP)、光纤和同轴电缆。

二、以太网的帧格式

以太网帧是数据链路层传输的基本单位,其结构相对固定,包含多个关键字段。以下是以太网帧的主要组成部分:
在这里插入图片描述

  1. 前同步码:用于接收端适配器同步时钟频率,由7个字节组成,其中1和0交替出现。

  2. 帧开始定界符:1个字节,前6位是1和0交替,最后两位是连续的1,表示帧信息即将开始。

  3. 目的地址:6个字节(48比特),用于标识接收帧的网络适配器的物理地址,即MAC地址。

  4. 源地址:同样是6个字节的MAC地址,标识发送帧的网络适配器。

  5. 类型:2个字节,用于标识上层协议的类型,例如0x0800表示IP协议。

  6. 数据:也称为有效载荷,是交付给上层的数据。以太网帧的数据长度最小为46字节,最大为1500字节,这个最大值也被称为最大传输单元(MTU)。

  7. 帧检验序列(FCS):4个字节,用于通过循环冗余校验(CRC)检测帧在传输过程中是否出现错误。

以太网帧的这种结构确保了数据在局域网内的可靠传输,并且能够适应不同网络环境的需求。帧格式的设计允许网络适配器检查数据的完整性和目的地,从而确保数据正确无误地到达预定的接收者。

三、MAC地址

MAC地址是网络设备在局域网中进行通信的基础,是确保数据包正确传输的关键。随着技术的发展,MAC地址的使用和管理也在不断地演进和改进。

  1. 定义:MAC地址是网络设备硬件的一部分,通常存储在网络接口卡(NIC)的只读存储器(ROM)中。

  2. 长度:MAC地址的标准长度是48位,也就是6个字节。这6个字节通常表示为12个十六进制数,格式如00:1A:2B:3C:4D:5E

  3. 唯一性:理论上,每个MAC地址都是独一无二的。IEEE负责全球MAC地址的分配,确保每个地址的唯一性。

  4. 结构:MAC地址的前24位(3字节)是组织唯一标识符(OUI),由IEEE分配给不同的制造商。

    • 后24位(3字节)由制造商自行分配,确保同一制造商生产的设备地址的唯一性。
  5. 地址类型

    • 单播地址:地址字段的最低位为0,用于标识特定的单个设备。
    • 组播地址:地址字段的最低位为1,用于标识一组设备。
    • 广播地址:所有位都设置为1(例如FF:FF:FF:FF:FF:FF),用于标识同一网络内的所有设备。
  6. 使用场景:在以太网中,MAC地址用于以太网帧的目的地址和源地址字段,确保数据能够正确地发送到目标设备。

  7. 隐私和安全性:由于MAC地址具有唯一性,它可能被用于跟踪设备。为了保护隐私,一些设备和操作系统支持更改或随机化MAC地址。

  8. 虚拟化技术:在虚拟化环境中,虚拟机(VM)可以有自己的虚拟MAC地址,这些地址由虚拟化软件管理。

  9. 地址冲突:如果两个设备具有相同的MAC地址,这将导致地址冲突,影响网络通信。这种情况相对罕见,因为地址由IEEE严格控制。

  10. 扩展:随着技术的发展,MAC地址的使用已经扩展到无线网络和其他类型的网络技术中,例如Wi-Fi。

四、MTU

MTU,即最大传输单元,是网络技术中一个重要的概念,它指的是在特定网络层上可以传输的最大数据包大小。以下是MTU的详细介绍:

  1. 基本概念

    • MTU定义了在不进行分片的情况下,可以传输的最大数据包大小。这个大小包括了数据包的头部和有效载荷。
  2. 影响因素:MTU的大小受到网络介质、网络设备、操作系统和协议栈等因素的影响。

  3. 以太网MTU:在以太网中,标准MTU大小是1500字节,这意味着以太网帧的数据部分最大可以是1500字节。

  4. 分片与重组:如果数据包的大小超过了MTU,它将需要在网络层被分片成更小的片段进行传输。接收端需要能够重新组装这些分片。

  5. 路径MTU发现(PMTUD):PMTUD是一种用于确定两个网络节点之间路径上最小MTU的机制,以避免分片。IPv4使用ICMP消息来实现PMTUD。

  6. 配置MTU:网络管理员可以根据网络环境和需求手动配置MTU的大小。在某些情况下,自动协商MTU大小也是可能的。

  7. MTU与性能:较大的MTU可以减少分片和重组的需要,从而提高网络性能。然而,如果MTU设置得过大,可能会导致数据包在网络中的传输效率降低。

  8. MTU与协议:不同的网络协议可能有不同的MTU要求。例如,IPv6的最小MTU是1280字节,而IPv4没有最小MTU的要求。

  9. MTU与网络安全:过大的MTU可能会被用于网络攻击,如分片攻击,因此在某些情况下可能需要限制MTU的大小。

  10. MTU与无线网络:在无线网络中,MTU可能会设置得更小,以减少传输错误和重传的可能性,提高无线网络的效率和可靠性。

  11. MTU与网络设备兼容性:在设计网络时,需要确保所有网络设备和链路都支持相同的MTU大小,以避免数据包被丢弃。

MTU的设置和管理是网络优化和故障排除中的一个重要方面。正确配置MTU可以提高网络的效率和性能,同时减少网络问题的发生。

五、ARP协议

ARP(地址解析协议)是一种用于将网络层的IP地址解析为数据链路层的MAC地址的协议。ARP在IPv4网络中非常关键,因为它允许设备在同一个局域网内进行通信。以下是ARP数据报的基本格式:
在这里插入图片描述

  1. 硬件类型:指定使用的网络接口类型,例如以太网。

  2. 协议类型:指定ARP请求或应答中包含的协议地址类型,对于IPv4是0x0800。

  3. 硬件地址长度:指定硬件地址(MAC地址)的长度,对于以太网是6个字节。

  4. 协议地址长度:指定协议地址(IP地址)的长度,对于IPv4是4个字节。

  5. 操作码:指定ARP数据报是请求(1)还是应答(2)。

  6. 发送方硬件地址:发送ARP请求或应答的设备的MAC地址。

  7. 发送方协议地址:发送ARP请求或应答的设备的IP地址。

  8. 目标硬件地址:对于ARP请求,这个字段通常为空或为未知;对于ARP应答,是被请求设备的MAC地址。

  9. 目标协议地址:需要解析的IP地址,ARP请求中是目标设备的IP地址,ARP应答中是确认的IP地址。

在ARP请求中,发送方不知道自己要通信的目标设备的MAC地址,但知道其IP地址。ARP请求会被广播到局域网内的所有设备,目标IP地址对应的设备会识别自己并回复一个ARP应答,其中包含其MAC地址。这样,发送方就可以将IP地址映射到MAC地址,并进行后续的数据通信。

温馨提示

感谢您对博主文章的关注与支持!如果您喜欢这篇文章,可以点赞、评论和分享给您的同学,这将对我提供巨大的鼓励和支持。另外,我计划在未来的更新中持续探讨与本文相关的内容。我会为您带来更多关于Linux以及C++编程技术问题的深入解析、应用案例和趣味玩法等。如果感兴趣的话可以关注博主的更新,不要错过任何精彩内容!

再次感谢您的支持和关注。我们期待与您建立更紧密的互动,共同探索Linux、C++、算法和编程的奥秘。祝您生活愉快,排便顺畅!

相关文章:

【探索Linux】P.44(数据链路层 —— 以太网的帧格式 | MAC地址 | MTU | ARP协议)

阅读导航 引言一、认识以太网二、以太网的帧格式三、MAC地址四、MTU五、ARP协议温馨提示 引言 在深入探讨了网络层的IP协议之后,本文将带领读者进一步深入网络的底层——数据链路层。我们将详细解析以太网的帧格式,这是数据链路层传输数据的基本单元&am…...

<数据集>航拍行人识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:7482张 标注数量(xml文件个数):7482 标注数量(txt文件个数):7482 标注类别数:1 标注类别名称:[people, pedestrian] 序号类别名称图片数框数1people5226385602pedes…...

在 Windows 10 系统上部署 Medusa

先决条件 在安装 Medusa 之前,你需要确保已经安装了以下工具: Node.js: Medusa 需要 Node.js v16 或更高版本。你可以从 Node.js 官网下载并安装。Git: Git 用于从 GitHub 获取 Medusa 的源代码。你可以从 Git 官网下载并安装。PostgreSQL: Medusa 使用…...

Linux进程 (冯诺依曼体结构 管理 PCB 进程状态 僵尸进程 孤儿进程 运行阻塞挂起状态 进程优先级)

文章目录 一.冯诺依曼体系结构冯诺依曼结构能干什么? 二.操作系统概念结构图(不完整)为什么要有操作系统? 尝试理解操作系统管理结构图(完整)总结: 三.进程进程是什么?PCB为什么要有PCB? Linux中的PCB进程的task_struc…...

《LlamaIndex 之美》-01-LLM、Prompt、Embedding基础入门

在基于数据构建任何 LLM 应用程序时,选择合适的大型语言模型 (LLM) 是您需要考虑的首要步骤之一。 LLM 是 LlamaIndex 的核心组成部分。它们可以作为独立模块使用,也可以插入到其他核心 LlamaIndex 模块(索引、检索器…...

C++ 智能指针简单介绍及用法

C 智能指针简单介绍及用法 智能指针是 C11 引入的一个非常实用的特性,旨在自动管理动态分配的内存,避免内存泄漏和悬空指针问题。主要有三种类型的智能指针:std::unique_ptr、std::shared_ptr 和 std::weak_ptr。下面是对它们的详细介绍&…...

k8s笔记之创建Istio Gateway规则

创建Istio Gateway 背景如何创建Istio Gateway规则配置方式rewrite重写路径直接去除match,默认都转发到一个服务路由规则多种配置方式实践(即开头的完整版) 涉及的命令补充注意事项 背景 为什么需要使用到Istio Gateway?充当k8s服…...

NAND行业回归盈利:AI与云存储需求驱动

市场概览 根据Yole Group于2024年6月25日发布的市场报告,经过五个季度的亏损之后,NAND闪存行业在2024年第一季度(1Q24)实现了盈利回归。这一转变主要得益于企业级固态硬盘(SSD)领域的强劲需求增长&#xf…...

【限免】频控阵雷达:概念、原理与应用【附MATLAB代码】

​微信公众号:EW Frontier QQ交流群:949444104 主要内容 PDA、FDA MATLAB代码 %---------------------------------------- %功能:FDA和相控阵天线方向图 %版本:ver1.0 %时间:2017.11.1 %--------------------------------------- clear all; clc; disp…...

从0开始搭建vue + flask 旅游景点数据分析系统( 六):搭建后端flask框架

这一期开始开发header部分,预期实现两个目标: 创建 Flask 项目导入旅游数据后端实现旅游数据的查询 1 python 环境 & 开发环境 python 安装和pycharm安装需要去网上找包,建议python使用3.8 或者3.9版本 2 新建项目 我们新建一个文件…...

学习硬件测试04:触摸按键+PWM 驱动蜂鸣器+数码管(P62~P67、P71、P72)

一、触摸按键 1.1理论讲解 1.1.1实验现象 触摸按键 1 单击与长按,控制 LED1;触摸按键 2 单击与长按,控制 LED2;触摸按键 3 单击与长按,控制 LED3;触摸按键 4 单击与长按,控制继电器; 1.1.2硬件电路 是原理图上触摸…...

JS原型链

JS的原型链 文章目录 JS的原型链前言一、原型是什么?二、原型链总结 前言 在使用数组或对象中的方法时,你是不是会感觉很奇怪,为什么仅仅是创建了一个数组或是对象,就能够使用它提供的方法呢?JS是怎么做到的呢&#x…...

《Java初阶数据结构》----5.<二叉树的概念及使用>

前言 大家好,我目前在学习java。之前也学了一段时间,但是没有发布博客。时间过的真的很快。我会利用好这个暑假,来复习之前学过的内容,并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区…...

git查看记录详解

文章目录 git查看记录查看文件修改列表查看修改差异友好的查看修改记录结合多个选项查看记录示例输出 git查看记录 使用 git log 你不仅可以查看提交记录,还可以通过一些选项查看文件的修改列表、修改差异,并以更友好的方式查看修改记录。以下是一些常用…...

检索增强生成RAG系列10--RAG的实际案例

讲了很多理论,最后来一篇实践作为结尾。本次案例根据阿里云的博金大模型挑战赛的题目以及数据集做一次实践。 完整代码地址:https://github.com/forever1986/finrag.git 本次实践代码有参考:https://github.com/Tongyi-EconML/FinQwen/ 目录 …...

程序员自我提升的全面指南

程序员自我提升的全面指南 1. 技术基础巩固重要性实践方法 2. 技术栈拓展重要性实践方法 3. 软技能提升重要性实践方法 4. 实践与项目经验重要性实践方法 5. 持续学习与职业规划重要性实践方法 6. 代码质量与优化重要性实践方法 7. 思维与创新能力重要性实践方法 8. 健康与心理…...

【golang】Golang手写元组 tuple | golang tuple

Golang手写元组 tuple 1、源码 如下: package tupletype Tuple[T any, U any] struct {First TSecond U }// zip combines elements of two slices into a slice of pairs (tuples), which is useful for combining related data. func Zip[T any, U any](slice…...

golang中struct的tag -简记

今天 简单整理一下,关于golang中struct的tag type User struct {UId int gorm:"column:uid;type:bigint;unique_index;not null;comment:用户id"Name string json:"name"Age int bson:"age"From string binding:"requi…...

分布式领域扩展点设计稿

分布式领域扩展点设计稿 背景坐标设计理念设计图Quick Start相关组件 背景 随着交易业务和基础知识的沉淀,愈发觉得扩展点可以在大型交易分布式架构中可以做更多的事情。 经过一个月的思考,决定将 单点领域扩展点(savior-ext) 从…...

玩转微信公众号变现:从新手到专家的全攻略

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…...

JVM: 方法调用

文章目录 一、介绍二、方法调用的原理1、静态绑定2、动态绑定(1)介绍(2)原理 一、介绍 在JVM中,一共有五个字节码指令可以执行方法调用: invokestatic: 调用静态方法。invokespecial:调用对象…...

测试面试宝典(四十一)—— 接口自动化的优缺点

接口自动化测试的优点: 1. 提高测试效率:能够快速执行大量的测试用例,节省了手动测试重复执行的时间和人力成本。 2. 尽早发现问题:可以在软件开发的早期阶段介入,有助于及时发现接口层面的缺陷,降低修复…...

“火炬科企对接”先进计算产业推进会 | 麒麟信安受邀参加,并签署开源生态合作协议

7月30日,“火炬科企对接”先进计算产业推进会在长沙隆重召开。大会由工业和信息化部火炬高技术产业开发中心、湖南省科学技术厅、湖南省工业和信息化厅、湖南湘江新区管理委员会、中国邮政储蓄银行联合举办。麒麟信安与来自国内先进计算领域的专家学者,2…...

中文网址导航模版HaoWa1.3.1/模版网站wordpress导航主题

HaoWa v1.3.1由挖主题开发的一款网址导航类主题。 HaoWA主题除主体导航列表外,对主题所需的小模块都进行了开放式的HTML编辑器形式的功能配置,同时预留出默认的代码结构,方便大家在现有的代码结构上进行功能调整。 同时加入了字体图标Font …...

图欧学习资源网创站以来的更新日志(截止至2022.5.6)不完全统计

一、网站创立和初步发展 2021年10月28日创建【TUO图欧视频备份站】,当时只有【单词视频】文件夹. 小学、初中、高中、大学、四六级、专四、专八、专升本、考研、考博、托福、雅思、托业、GRE、SAT、GMAT、MBA、新概念等 数量:500个文件,60个…...

现代前端架构介绍(第二部分):如何将功能架构分为三层

远离JavaScript疲劳和框架大战,了解真正重要的东西 在这个系列的前一部分 《App是如何由不同的构建块构成的》中,我们揭示了现代Web应用是由不同的构建块组成的,每个构建块都承担着特定的角色,如核心、功能等。在这篇文章中&#…...

LeetCode Easy|【21. 合并两个有序链表】

力扣题目链接 状态:拿到本题的第一反应就是使用双指针,分别指向两个链表的开头位置。 随后的思路就是以第一条链表为基准完成插入,并且对于遍历到的每个节点都应该保存其状态。 写了一下代码后发现,我们应该以第一个节点较小的链表…...

大模型的架构参数是指定义模型基本结构和组成的各种参数,这些参数对模型的性能、训练效率和泛化能力具有重要影响。以下是对大模型架构参数的详细介绍

大模型架构参数 大模型的架构参数是指定义模型基本结构和组成的各种参数,这些参数对模型的性能、训练效率和泛化能力具有重要影响。以下是对大模型架构参数的详细介绍: 一、基本结构和组成 层数:模型的层数是指模型中全连接网络或特定结构…...

人工智能会越来越闭源——对话东北大学副教授王言治 | Open AGI Forum

作者 | Annie Xu 责编、采访 | Echo Tang 出品丨GOSIM 开源创新汇 在读期间研究方向为并不“火”的模式识别与深度学习,毕业却刚好踩上人工智能计算研究的风口……来自美国东北大学的王言治副教授深耕深度学习与大模型,前瞻性地探索大模型的本地化部署…...

【前端】(仅思路)如何在前端实现一个fc手柄,将手机作为游戏手柄设备。

文章目录 背景界面demo原型图(没错,就是它,童年回忆) 遇到的问题最终后端demo(甚至比前端逻辑更简单) 背景 突发奇想,想要在前端实现一个fc游戏手柄,然后控制电脑的nes模拟器玩玩魂斗罗。 思路很简单&…...