【计算机网络-数据链路层】以太网、MAC地址、MTU与ARP协议

news2025/5/11 22:34:23

  📚 博主的专栏

🐧 Linux   |   🖥️ C++   |   📊 数据结构  | 💡C++ 算法 | 🅒 C 语言  | 🌐 计算机网络

上篇文章:传输层-TCP协议TCP核心机制与可靠性保障

下篇文章: 网络IP层

摘要:本文系统剖析数据链路层的核心机制,详解以太网技术标准及其帧结构,阐述MAC地址的作用与唯一性,并模拟局域网通信中帧转发与碰撞域的处理逻辑。通过MTU(最大传输单元)对IP、UDP、TCP协议的影响,解释数据分片与重组原理及网络性能优化策略。同时,探讨交换机划分碰撞域的原理与自学习功能,以及ARP协议如何通过广播与应答实现IP与MAC地址的动态映射,保障网络通信的精准性。全文覆盖数据链路层与网络层的关键交互,为理解局域网通信提供全面视角。

目录

数据链路层

认识以太网

以太网帧格式

mac帧是如何解包的?定长报头的策略

如何分用?根据类型字段(0800是IP数据报,就交给IP层,还有0806,8035)

认识 MAC 地址

认识 MTU

交换机--划分碰撞域

MTU 对 IP 协议的影响

MTU 对 UDP 协议的影响

MTU 对于 TCP 协议的影响

MSS 和 MTU 的关系

ARP 协议

ARP 协议的作用

ARP 协议的工作流程

ARP 数据报的格式​编辑


数据链路层

用于两个设备(同一种数据链路节点)之间进行传递.

对比理解 "数据链路层" 和 "网络层"

数据链路实现某一个区间(一跳)内的通信,而IP实现直至最终目标地址的通信(点对点),同一个网段(局域网)相互之间要实现转发,能直接通信。

认识以太网

• "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;

• 例如以太网中的网线必须使用双绞线; 传输速率有 10M, 100M, 1000M 等;

• 以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN 等;

以太网帧格式

以太网的帧格式如下所示

• 源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址), 长度是 48 位,是在网卡出厂时固化的;

• 帧协议类型字段有三种值,分别对应 IP、 ARP、 RARP;

• 帧末尾是 CRC 校验码。 

mac帧是如何解包的?定长报头的策略

如何分用?根据类型字段(0800是IP数据报,就交给IP层,还有0806,8035)

认识 MAC 地址

• MAC 地址用来识别数据链路层中相连的节点;

• 长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如:

08:00:27:03:fb:19)

• 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址)

模拟一次局域网通信,A想和G通信:报文会发给所有在局域网上的主机,发给B的时候,经过报头将和有效载荷分离,对比MAC帧的过程,由于目的MAC并不是MACB,因此在B的数据链路层就将报文丢弃,其他的也同理。G收到后报头后经过相同的过程,最后得到数据。

在局域网中,任何时候只允许一台主机在局域网中发送消息,一个局域网就叫做一个碰撞域,一旦发生碰撞,两主机之间执行碰撞避免算法(保证自己对临界资源的独占性),底层也会对数据帧进行重传。一个局域网中主机越多发生碰撞的概率越高。一旦局域网中,有大量主机发生碰撞,要缓解问题,需要用到交换机。数据帧的长度和碰撞概率的关系,越长越容易碰撞。因为越长,使用子网数据发送的周期更长。因此需要规定MTU。

认识 MTU

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

• 以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 数据包的长度不够 46 字节,要在后面补填充位;

• 最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

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

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

交换机--划分碰撞域

交换机转发的对象也是数据帧(交换机是数据链路层的设备),交换机内部有一套自己的算法,有接口,将一个子网划分成两个区域,当A发送数据时,交换机也会收到,并且会将数据帧转发给目的mac地址。也会记录A的mac地址,其他的主机在通信时,也会将数据帧交给交换机,交换机记录他们的mac地址,并且存下转发报文的地址,将子网划分成两个区域,有自学习功能。

未来,交换机收到报文后,就会识别,看目的地址是否在某一侧再做转发,比如说交换机收到报文A要到E,就不会将报文转发给C、D、G等,以此来减少碰撞,提高效率,A发消息的时候,C也能发。交换机也能碰撞检测,一边发生碰撞他就不会再转发了。

MTU 对 IP 协议的影响

由于数据链路层 MTU 的限制, 对于较大的 IP 数据包要进行分包

• 将较大的 IP 包分成多个小包, 并给每个小包打上标签;

• 每个小包 IP 协议头的 16 位标识(id) 都是相同的;

• 每个小包的 IP 协议头的 3 位标志字段中, 第 2 位置为 0, 表示允许分片, 第 3 位来表示结束标记(当前是否是最后一个小包, 是的话置为 0, 否则置为 1);

• 到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;

• 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是 IP 层不会负责重新传输数据;

MTU 对 UDP 协议的影响

让我们回顾一下 UDP 协议:

• 一旦 UDP 携带的数据超过 1472(1500 - 20(IP 首部) - 8(UDP 首部)), 那么就会在网络层分成多个 IP 数据报.

• 这多个 IP 数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果 UDP 数据报在网络层被分片, 整个数据被丢失的概率就大大增加了

MTU 对于 TCP 协议的影响

让我们再回顾一下 TCP 协议:

• TCP 的一个数据报也不能无限大, 还是受制于 MTU. TCP 的单个数据报的最大消息长度, 称为 MSS(Max Segment Size);

• TCP 在建立连接的过程中, 通信双方会进行 MSS 协商.

• 最理想的情况下, MSS 的值正好是在 IP 不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的 MTU).

• 双方在发送 SYN(握手的时候) 的时候会在 TCP 头部写入自己能支持的 MSS 值.

• 然后双方得知对方的 MSS 值之后, 选择较小的作为最终 MSS.

• MSS 的值就是在 TCP 首部的 40 字节变长选项中(kind=2)

MSS 和 MTU 的关系


ARP 协议

虽然我们在这里介绍 ARP 协议, 但是需要强调, ARP 不是一个单纯的数据链路层的协

议, 而是一个介于数据链路层和网络层之间的协议;但是arp是由链路层自动完成的,是属于数据链路层的 

ARP 协议的作用

ARP 协议建立了主机 IP 地址 和 MAC 地址 的映射关系.

• 在网络通讯时,源主机的应用程序知道目的主机的 IP 地址和端口号,却不知道目的主机的硬件地址;

• 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;

• 因此在通讯前必须获得目的主机的硬件地址

ARP 协议的工作流程

先广播,再mac正常通信

任何主机:

1.可能会收到arp应答

2.可能会收到arp请求

每一台主机都是一个协议栈,要发送arp请求的时候,需要重新封装mac帧。

封装好mac帧,再把mac帧放到局域网中:局域网中,所有主机都会收到这个报文。

假如现在主机B拿到了数据帧:先看oper字段发现是arp请求,又看dstIP字段,发现这个报文dstIP并不是给他的,在arp层将arp请求丢弃。其余同理

主机E收到数据帧,得到arp请求协议,先看oper是arp请求,再看dstIP是和E的IP是匹配的,因此就受理了这个请求。因此在自己的arp层构建好arp应答,再重新封装mac帧,因此再对arp应答添加报头,目的mac地址,源mac地址,帧类型(0806),再将该mac帧放到局域网。 

这时候,经过广播除了R的其他主机将在mac帧就丢弃掉这个报文,因为此时的目的mac地址不再是FFF....而是确切 的macR。因此在主机R收到mac帧之后,将报头和数据先分开,在arp层仍然是先看oper,发现是arp应答,再看dstIP,确认是自己,此时主机R再直接提取,拿到IPE的ip地址以及mac地址。再封装mac帧,就可以单发给主机E,而不是再广播。

注意:为什么mac层还要再封装源mac,目的mac,这是因为arp层和mac层不是同一层,这里有解耦的作用,在逻辑上他们彼此看不到。但他们的作用是不同的,mac帧报头中的源mac,目的mac是用来做局域网通信的,是有功能性的,来做地址标识的。arp层中的就是数据,数据巧合了是mac地址而已。

• 源主机发出 ARP 请求,询问“IP 地址是 192.168.0.1 的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示 广播);

目的主机接收到广播的 ARP 请求,发现其中的 IP 地址与本机相符,则发送一个 ARP 应答数据包给源主机,将自己的硬件地址填写在应答包中;

• 每台主机都维护一个 ARP 缓存表,可以用 arp -a 命令查看。 缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下次还要发 ARP 请求来获得目的主机的硬件地址

ARP在每个子网都有,但是不会横跨网络

ARP 数据报的格式

• 注意到源 MAC 地址、 目的 MAC 地址在以太网首部和 ARP 请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。

• 硬件类型指链路层网络类型,1 为以太网;

• 协议类型指要转换的地址类型,0x0800 为 IP 地址;

• 硬件地址长度对于以太网地址为 6 字节;

• 协议地址长度对于和 IP 地址为 4 字节;

• op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答

 结语:

       随着这篇博客接近尾声,我衷心希望我所分享的内容能为你带来一些启发和帮助。学习和理解的过程往往充满挑战,但正是这些挑战让我们不断成长和进步。我在准备这篇文章时,也深刻体会到了学习与分享的乐趣。    

         在此,我要特别感谢每一位阅读到这里的你。是你的关注和支持,给予了我持续写作和分享的动力。我深知,无论我在某个领域有多少见解,都离不开大家的鼓励与指正。因此,如果你在阅读过程中有任何疑问、建议或是发现了文章中的不足之处,都欢迎你慷慨赐教。

        你的每一条反馈都是我前进路上的宝贵财富。同时,我也非常期待能够得到你的点赞、收藏,关注这将是对我莫大的支持和鼓励。当然,我更期待的是能够持续为你带来有价值的内容

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

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

相关文章

Kafka 与 RabbitMQ、RocketMQ 有何不同?

一、不同的诞生背景,塑造了不同的“性格” 名称 背景与目标 产品定位 Kafka 为了解决 LinkedIn 的日志收集瓶颈,强调吞吐与持久化 更像一个“可持久化的分布式日志系统” RabbitMQ 出自金融通信协议 AMQP 的实现,强调协议标准与广泛适…

【MATLAB源码-第277期】基于matlab的AF中继系统仿真,AF和直传误码率对比、不同中继位置误码率对比、信道容量、中继功率分配以及终端概率。

操作环境: MATLAB 2022a 1、算法描述 在AF(放大转发)中继通信系统中,信号的传输质量和效率受到多个因素的影响,理解这些因素对于系统的优化至关重要。AF中继通信的基本架构由发射端、中继节点和接收端组成。发射端负…

webRtc之指定摄像头设备绿屏问题

摘要:最近发现,在使用navigator.mediaDevices.getUserMedia({ deviceId: ‘xxx’}),指定设备的时候,video播放总是绿屏,发现关闭浏览器硬件加速不会出现,但显然这不是一个最好的方案; 播放后张这样 修复后 上代码 指定…

2023年03月青少年软件编程(图形化)等级考试四级编程题

求和 1.准备工作 (1)保留舞台中的小猫角色和白色背景。 2.功能实现 (1)计算1~100中,可以被3整除的数之和; (2)说出被3整除的数之和。 标准答案: 参考程序&…

ensp的华为小实验

1.先进行子网划分 2.进行接口的IP地址配置和ospf的简易配置,先做到全网小通 3.进行ospf优化 对区域所有区域域间路由器进行一个汇总 对区域1进行优化 对区域2.3进行nssa设置 4.对ISP的路由进行协议配置 最后ping通5.5.5.5

ragflow报错:KeyError: ‘\n “序号“‘

环境: ragflowv 0.17.2 问题描述: ragflow报错:KeyError: ‘\n “序号”’ **1. 推荐表(输出json格式)** [{"},{},{"},{} ]raceback (most recent call last): May 08 20:06:09 VM-0-2-ubuntu ragflow-s…

FHE与后量子密码学

1. 引言 近年来,关于 后量子密码学(PQC, Post-Quantum Cryptography) 的讨论愈发热烈。这是因为安全专家担心,一旦有人成功研发出量子计算机,会发生什么可怕的事情。由于 Shor 算法的存在,量子计算机将能够…

CSS: 选择器与三大特性

标签选择器 标签选择器就是选择一些HTML的不同标签&#xff0c;由于它们的标签需求不同&#xff0c;所以CSS需要设置标签去选择它们&#xff0c;为满足它们的需求给予对应的属性 基础选择器 标签选择器 <!DOCTYPE html> <head><title>HOME</title>…

M0基础篇之ADC

本节课使用到的例程 一、Single模式例程基本配置的解释 在例程中我们只使用到了PA25这一个通道&#xff0c;因此我们使用的是Single这个模式&#xff0c;也就是我们在配置模式的时候使用的是单一转换。 进行多个通道的测量我们可以使用Sequence这个模式。 二、Single模式例程基…

OSPF综合实验实验报告

OSPF综合实验实验报告 一、实验拓扑 二、实验要求 1.R5为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4作为企业边界路由器&#xff0c; 出口公网地址需要通过PPP协议获取&#xff0c;并进行chap认证 2&#xff0c;整个OSPF环境IP基于172.16.0.0/16划分&#xff1b; 3&…

vue3+ant design vue + Sortable实现多级表格列拖动

1、最近遇到个需求&#xff0c;需使用vue3ant design vue Sortable实现多级表格的表头允许用户拖拽移动。即当用户拖拽一级表头时&#xff0c;其对应的子级表头及数据应同步移动&#xff0c;并且只允许一级非固定表头允许拖拽。 2、代码 <a-table:data-source"rowDat…

基于开源链动2+1模式AI智能名片S2B2C商城小程序的分销价格管控机制研究

摘要&#xff1a;本文聚焦开源链动21模式AI智能名片S2B2C商城小程序在分销体系中的价格管控机制&#xff0c;通过解析其技术架构与商业模式&#xff0c;揭示平台如何通过"去中心化裂变中心化管控"双轨机制实现价格统一。研究显示&#xff0c;该模式通过区块链存证技术…

阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化

作者&#xff1a;裘文成&#xff08;翊韬&#xff09; 摘要 随着企业全球化业务的扩展&#xff0c;如何高效、经济且可靠地将分布在海外各地的应用与基础设施日志统一采集至阿里云日志服务 (SLS) 进行分析与监控&#xff0c;已成为关键挑战。 本文聚焦于阿里云高性能日志采集…

体育培训的实验室管理痛点 质检LIMS如何重构体育检测价值链

在竞技体育与全民健身并行的时代背景下&#xff0c;体育培训机构正面临双重挑战&#xff1a;既要通过科学训练提升学员竞技水平&#xff0c;又需严格把控运动安全风险。作为实验室数字化管理的核心工具&#xff0c;质检LIMS系统凭借其标准化流程管控与智能化数据分析能力&#…

设计模式【cpp实现版本】

文章目录 设计模式1.单例模式代码设计1.饿汉式单例模式2.懒汉式单例模式 2.简单工厂和工厂方法1.简单工厂2.工厂方法 3.抽象工厂模式4.代理模式5.装饰器模式6.适配器模式7.观察者模式 设计模式 1.单例模式代码设计 ​ 为什么需要单例模式&#xff0c;在我们的项目设计中&…

阿维塔汽车CAN总线数据适配技术解析与免破线数据采集实践

在智能电动汽车快速迭代的背景下&#xff0c;阿维塔凭借其高度集成的电子电气架构成为行业焦点。昨天我们经过实测&#xff0c;适配了该车型CAN总线数据适配的核心技术&#xff0c;从硬件接口定位、无损伤接线方案到关键动力系统数据解码进行系统性剖析&#xff0c;为智能诊断、…

用纯HTML和CSS仿写知乎登录页面

这是知乎的官方的登录页面 这是我的登录页面&#xff0c;使用 HTML CSS 进行编写。我觉得这是一个供前端新手练手的一个不错的小项目&#xff0c; 在这个系列&#xff0c;我将会用 HTML CSS 编写各大知名网站的登录界面&#xff0c;欢迎大家交流探讨。 源码展示: body{ba…

【Redis】C++如何使用redis

文章目录 1. redis客户端2. 使用通用命令3. 使用string命令3. 使用list命令4. 使用set命令5. 使用hash命令6. 使用zset命令 1. redis客户端 在前面的学习种&#xff0c;我们都是使用redis命令行客户端手动执行操作的&#xff1b;但是更多的时候&#xff0c;需要使用redis的api…

考研系列-408真题计算机组成原理篇(2010-2014)

写在前面 此文章是本人在备考过程中408真题计算机组成原理部分(2010年-2014年)的易错题及相应的知识点整理,后期复习也常常用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~ # 2010年 1.DRAM芯片的排列和编址方式 这个区别于多体交叉编址:这个可以理…

47.电压跌落与瞬时中断干扰的防护改善措施

电压跌落与瞬时中断干扰的防护改善措施 1. 电压跌落与瞬时中断的影响机理2. 解决措施 1. 电压跌落与瞬时中断的影响机理 跌落发生的常见场景如下&#xff1a; &#xff08;1&#xff09;电源插头接触不良&#xff0c;瞬态中断即刻恢复&#xff1b; &#xff08;2&#xff09;电…