


目录
[一、😀 数据链路层](#一、😀 数据链路层)
[1-1 🍕知识连接](#1-1 🍕知识连接)
[1-2 🍔 以太网帧格式](#1-2 🍔 以太网帧格式)
[1-3 🍟 认识 MTU](#1-3 🍟 认识 MTU)
[1-4 🌭 MTU 对 IP 协议的影响](#1-4 🌭 MTU 对 IP 协议的影响)
[1-5 🍿 MTU 对 UDP 协议的影响](#1-5 🍿 MTU 对 UDP 协议的影响)
[1-6 🧂 MTU 对于 TCP 协议的影响](#1-6 🧂 MTU 对于 TCP 协议的影响)
[二:😁 局域网数据传输细节解析](#二:😁 局域网数据传输细节解析)
[2-1🥓 细节一:互斥访问局域网资源](#2-1🥓 细节一:互斥访问局域网资源)
[2-2 🥚 细节二:碰撞检测与碰撞避免](#2-2 🥚 细节二:碰撞检测与碰撞避免)
[2-3 🍳细节三:局域网的临界资源特性](#2-3 🍳细节三:局域网的临界资源特性)
[2-4🧇 细节四:碰撞域中的主机数量](#2-4🧇 细节四:碰撞域中的主机数量)
[2-5🥞 细节五:数据帧长度的选择](#2-5🥞 细节五:数据帧长度的选择)
[2-6🧈 查看硬件地址和 MTU](#2-6🧈 查看硬件地址和 MTU)
[三:😂 ARP协议:IP地址和MAC地址的"翻译官"](#三:😂 ARP协议:IP地址和MAC地址的“翻译官”)
[3-1 🍞为啥需要ARP?](#3-1 🍞为啥需要ARP?)
[3-2 🥐 IP地址和MAC地址的关系](#3-2 🥐 IP地址和MAC地址的关系)
[3-3 🥨 ARP协议是啥?](#3-3 🥨 ARP协议是啥?)
[3-4🥯 ARP的工作过程](#3-4🥯 ARP的工作过程)
[3-5🥖 为啥ARP很重要?](#3-5🥖 为啥ARP很重要?)
[3-6 🫓 ARP 协议的工作流程](#3-6 🫓 ARP 协议的工作流程)
[3-7🧀 ARP缓存的作用](#3-7🧀 ARP缓存的作用)
[3-8 🥗 ARP 数据报的格式](#3-8 🥗 ARP 数据报的格式)
[3-9🥙 ARP的局限性](#3-9🥙 ARP的局限性)
[四:😃 ARP 欺骗原理](#四:😃 ARP 欺骗原理)
[4-1🥪 步骤一 攻击者伪造ARP响应](#4-1🥪 步骤一 攻击者伪造ARP响应)
[4-2 🌮 步骤二 攻击者截获数据](#4-2 🌮 步骤二 攻击者截获数据)
[4-3🌯 步骤三 攻击者转发数据(可选)](#4-3🌯 步骤三 攻击者转发数据(可选))
📖前言
- 在计算机网络的分层架构中,数据链路层作为连接物理层与网络层的关键纽带,承担着将原始物理信号转化为可信赖数据传输单元的核心职责,是局域网通信与跨网络数据转发的基础保障。从以太网帧的规范封装到最大传输单元(MTU)对上层协议的约束,从局域网内资源的有序共享到碰撞问题的精准管控,数据链路层的每一项技术细节都直接决定了网络通信的稳定性与效率。而地址解析协议(ARP)作为数据链路层与网络层之间的"桥梁",解决了IP地址到物理MAC地址的映射难题,是实现跨设备通信的关键协议。与此同时,ARP协议的设计特性也使其面临安全风险,ARP欺骗成为网络攻击中窃取数据、中断通信的常见手段。
- 本文将从数据链路层的核心概念入手,深入解析以太网帧格式、MTU及其对上层协议的影响;随后聚焦局域网数据传输的关键细节,剖析资源访问、碰撞处理等核心机制;接着系统阐述ARP协议的工作原理、流程及缓存机制,并分析其局限性;最后详解ARP欺骗的实现原理。通过层层递进的讲解,帮助读者构建数据链路层与ARP协议的完整知识体系,理解网络通信的底层逻辑与安全风险。
一、😀 数据链路层
1-1 🍕知识连接
🔗 传输层协议提供一种策略保证通信的稳定性 ;网络层协议提供一种能力保证可以进行通信 。数据链路层是用于两个设备(同一种数据链路节点)之间进行传递。
🆕 网络通信中,主机 A 向 主机 B 发送数据时,并不是直接将报文发送到目标主机,而是会经过很多台路由器的转发!要在一台一台路由器之间不断的跳转。跨网络转发的本质是进行多次的子网转发! 所以路由器就要先保证在同一个网段中相互之间可以进行转发。
🛜 局域网中以太网是常用技术。"以太网" 不是一种具体的网络,而是一种技术标准 ;既包含了数据链路层的内容, 也包含了一些物理层的内容。例如: 规定了网络拓扑结构,访问控制方式,传输速率。以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN 等。
⬇️ 在以太网中发送数据是以以太网帧的格式进行发送的 ⬇️
1-2 🍔 以太网帧格式
🎶 以太网的帧格式如下所示:
- 源地址 和 目的地址 是指网卡的 硬件地址 (也叫 MAC 地址), 长度是 48 位, 是在网卡出厂时固化的;
- 6 字节目标地址:MAC 地址 是6字节,所以 目标地址是 6 字节。
- 6 字节源地址 :MAC 地址 是6字节,所以 源地址是 6 字节。
- 2 字节帧协议类型 字段有三种值, 分别对应 IP、 ARP、 RARP ;
- 帧末尾是 4字节 CRC 校验码。
对于这个以太网协议我们依然需要解决两个问题:
- 如何解包?
以太网帧采用的是定长报头,进行解包就直接去除定长的报头与报尾结构即可
- 如何分用?
这里我们模拟一下局域网通信的过程:
- 在局域网中有若干主机 ABCD...,主机 A 此时向 G 发送信息。主机A 就先把 MAC 帧先填好目的地址与源地址:
- 主机A 将这个 MAC 帧放到网络中,其他主机的的数据链路层会先获取到 MAC 帧,因为报头是定长,可以快速取到报头,判断是否是发送给自己的报文, 如果发现不是自己的报文, 那么在数据链路层这个报文就被丢弃了。许多的 MAC 帧之间会发生碰撞,越长的数据越容易产生碰撞,所以数据链路层才有 MTU 限制 一次发送的大小!
- 同样的也有最小数据帧限制 MSS,对于不够的数据,会填充垃圾数据,那么会影响报文长度,这也就是为什么IP协议要带总长度字段!
- 随着主机数的增加,每台主机处理的 MAC 帧就会越来越多,出现大面积的碰撞。通信成功的概率就越来越小(这也是人数密集的地方网络差的原因)。
- 这里会涉及到交换机:交换机会把不同的主机划分成不同的区域!交换机对于所有主机的数据都可以收到,其转发的数据对象就是数据帧,所以也是工作在数据链路层!
- 交换机会对数据帧进行分析,将数据帧发放到对应的区域,这样可以很好的优化碰撞发生的概率!有效管理数据帧的扩散范围。
1-3 🍟 认识 MTU
- MTU 相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制.
- 以太网帧中的数据长度规定最小 46 字节, 最大 1500 字节, ARP 数据包的长度不够 46 字节, 要在后面补填充位;
- 最大值 1500 称为以太网的最大传输单元 (MTU ),不同的网络类型有不同的 MTU;
- 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU 了, 则需要对数据包进行 分片 (fragmentation);
- 不同的数据链路层标准的 MTU 是不同的;
1-4 🌭 MTU 对 IP 协议的影响
📚 由于数据链路层 MTU 的限制, 对于较大的 IP 数据包要进行分包.
- 将较大的 IP 包分成多个小包, 并给每个小包打上标签;
- 每个小包 IP 协议头的 16 位标识(id) 都是相同的;
- 每个小包的 IP 协议头的 3 位标志字段中, 第 2 位置为 0, 表示允许分片, 第 3 位来表示结束标记(当前是否是最后一个小包, 是的话置为 1, 否则置为 0);
- 到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;
- 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是 IP 层不会负责重新传输数据;
1-5 🍿 MTU 对 UDP 协议的影响
🦈 让我们回顾一下 UDP 协议:
- 一旦 UDP 携带的数据超过 1472 (1500 - 20(IP 首部) - 8(UDP 首部)), 那么就会在网络层分成多个 IP 数据报.
- 这多个 IP 数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果 UDP 数据报在网络层被分片, 整个数据被丢失的概率就大大增加了.
1-6 🧂 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)
- 所以 TCP 中的滑动窗口内的内容是一段一段发的!!!
二:😁 局域网数据传输细节解析
2-1🥓 细节一:互斥访问局域网资源
💥 为了避免局域网中数据碰撞的问题,要保证任何时刻只有一台主机在使用局域网资源。
原因:
当两台以上的主机同时发送数据时,数据包会在传输介质(如以太网电缆)上相互干扰,导致数据碰撞。碰撞的结果是数据包损坏,接收方无法正确解析数据,从而导致传输失败。
解决方案:
🎁 为了防止数据碰撞:
- 主机在发送数据之前,会先监听传输介质,检查是否有其他主机正在发送数据。
- 如果传输介质空闲,主机可以开始发送数据。
- 在发送数据的过程中,主机还会持续监听传输介质。如果检测到冲突(即有其他主机同时发送数据),则立即停止发送,并发出一个"冲突信号",通知其他主机发生了冲突。
通过这种方式,确保了在同一时刻,只有一个主机能够成功发送数据,从而避免了数据碰撞。
2-2 🥚 细节二:碰撞检测与碰撞避免
如果发生了碰撞,涉及碰撞的主机会采取以下措施:
- 停止发送:一旦检测到碰撞,主机立即停止发送数据,以避免进一步的数据损坏。
- 随机延迟后重发:主机进入"退避"状态,等待一个随机的时间间隔后再尝试重新发送数据。这个随机延迟时间是根据二进制指数退避算法 计算的,目的是减少再次碰撞的可能性。
- 让出网络资源:在退避期间,主机不会占用网络资源,从而为其他主机提供发送数据的机会。
重要性:
🐦 这种机制不仅避免了数据碰撞,还通过随机延迟和重试机制,提高了网络资源的利用率,确保了网络的高效运行。
2-3 🍳细节三:局域网的临界资源特性
🔗 局域网可以被视为一个 临界资源,因为在同一时刻,只能有一台主机向局域网发送数据。这与操作系统中的 互斥(Mutex) 概念非常相似。互斥机制确保了在多线程或多进程环境中,只有一个线程或进程能够访问共享资源,从而避免了资源竞争和数据损坏。
2-4🧇 细节四:碰撞域中的主机数量
在一个碰撞域中,主机的数量对网络性能有显著影响。
主机数量越少越好:
- 减少碰撞概率:主机数量越少,同时发送数据的概率就越低,从而减少了碰撞的可能性。
- 提高传输效率:较少的主机意味着更少的冲突检测和退避操作,数据传输效率更高。
- 降低延迟:较少的主机竞争网络资源,减少了数据传输的延迟。
结论:
🐣 在一个碰撞域中,主机数量越少越好。为了提高网络性能,可以通过划分多个碰撞域(如使用交换机)来减少每个域中的主机数量。
2-5🥞 细节五:数据帧长度的选择
在单台主机中,发送数据帧时,数据帧的长度对网络性能也有重要影响。
数据帧长度越长越好?
- 优点 :较长的数据帧可以减少单位数据的传输开销(如帧头和帧尾的开销),提高传输效率。
- 缺点 :如果数据帧过长,一旦发生碰撞,整个数据帧都会丢失,需要重新发送,这会增加传输延迟和网络负载。
数据帧长度越短越好?
- 优点 :较短的数据帧在发生碰撞时,丢失的数据量较少,重新发送的开销较小。
- 缺点 :如果数据帧过短,单位数据的传输开销会增加,降低了传输效率。
最优选择:MTU(最大传输单元)
为了平衡传输效率和可靠性,网络协议定义了 最大传输单元(MTU) 的概念。MTU 是指在不进行分片的情况下,网络层协议能够传输的最大数据帧长度。
- 以太网的MTU:在以太网中,MTU 通常为1500字节。这个长度是在传输效率和可靠性之间经过优化的平衡点。
- 其他网络技术:不同的网络技术可能有不同的 MTU 值 ,例如,一些高速网络技术(如Jumbo Frames)支持更大的 MTU 值,以提高传输效率。
结论:
数据帧长度并不是越长越好,也不是越短越好。选择合适的MTU值可以在传输效率和可靠性之间取得最佳平衡。
2-6🧈 查看硬件地址和 MTU
使用 ifconfig 命令, 即可查看 ip 地址, mac 地址, 和 MTU;
三:😂 ARP协议:IP地址和MAC地址的"翻译官"
3-1 🍞为啥需要ARP?
☝️ 大家都知道,咱们在局域网里通信,真正用到的其实是 MAC地址,而不是 IP地址。就好比你寄快递,虽然你写的是收件人的名字(IP地址),但快递员真正用到的是收件人的地址(MAC地址)。因为快递员(网络设备)是按照地址来送快递的,而不是名字。
3-2 🥐 IP地址和MAC地址的关系
IP地址是网络层的地址,它负责在互联网上找到目标设备,就像快递单上的收件人名字。而MAC地址是数据链路层的地址,它负责在局域网里找到目标设备,就像快递单上的详细地址。
问题来了:我们发消息的时候,只知道对方的IP地址,但实际发送数据的时候,必须得用到MAC地址。这就需要一个"翻译官",把IP地址翻译成MAC地址。这个"翻译官"就是ARP协议。
3-3 🥨 ARP协议是啥?
ARP 全名叫"地址解析协议"(Address Resolution Protocol)。它的任务就是把IP地址翻译成MAC地址。ARP协议很特别,它不是单纯的数据链路层协议,也不是纯粹的网络层协议,而是介于两者之间的一个协议。它就像一个"中间人",帮IP地址和MAC地址"牵线搭桥"。
3-4🥯 ARP的工作过程
假设主机A想给主机C发消息,过程是这样的:
(1)🐦查询MAC地址
主机A会先在自己的ARP缓存里查一查,看看有没有主机C的MAC地址。ARP缓存就像是一个"小本本",记录了之前查询过的IP地址和对应的MAC地址。如果找到了,直接用这个MAC地址发消息就行。
(2)🐦发送ARP请求
如果主机A没找到主机C的MAC地址,它就会广播一个ARP请求。这个请求就像是在局域网里喊一嗓子:"嘿,谁的IP地址是主机C的IP地址?告诉我你的MAC地址!"这个请求会发给局域网里的所有设备。
(3)🐦主机C响应
主机C收到这个请求后,会回复一个ARP响应:"嘿,我就是主机C,我的MAC地址是......"这个响应是直接发给主机A的。
(4)🐦更新ARP缓存
主机A收到主机C的响应后,就会把主机C的IP地址和MAC地址记录到自己的ARP缓存里,下次再发消息就不用再广播请求了。
3-5🥖 为啥ARP很重要?
ARP 协议在局域网里非常重要,因为它解决了IP地址和MAC地址之间的转换问题。没有ARP,主机A就找不到主机C的MAC地址,也就没法在局域网里发消息了。ARP就像是局域网里的"导航仪",帮数据找到正确的路径。
3-6 🫓 ARP 协议的工作流程
- 源主机发出 ARP 请求,询问"IP 地址是 192.168.0.1 的主机的硬件地址是多少", 并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示广播);
- 目的主机接收到广播的 ARP 请求,发现其中的 IP 地址与本机相符,则发送一个 ARP 应答数据包给源主机,将自己的硬件地址填写在应答包中;
- 每台主机都维护一个 ARP 缓存表,可以用 arp -a 命令查看。 缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下次还要发 ARP 请求来获得目的主机的硬件地址
bash$ arp -a
想一想,为什么要有缓存表? 为什么表项要有过期时间而不是一直有效?
再想一想, 结合我们刚才讲的工作流程, ARP 的数据报应该是一个什么样的格式?
3-7🧀 ARP缓存的作用
ARP缓存就像是一个"备忘录",记录了之前查询过的IP地址和MAC地址。这样做的好处是,下次再发消息的时候,就不需要再广播请求了,直接用缓存里的MAC地址就行。这不仅提高了效率,还减少了网络上的广播流量。
3-8 🥗 ARP 数据报的格式
注意到源 MAC 地址、 目的 MAC 地址在以太网首部和 ARP 请求中各出现一次, 对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
硬件类型指链路层网络类型,1 为以太网;
协议类型指要转换的地址类型,0x0800 为 IP 地址;
硬件地址长度对于以太网地址为 6 字节;
协议地址长度对于和 IP 地址为 4 字节;
op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答。
3-9🥙 ARP的局限性
ARP协议虽然很方便,但也有一些局限性。比如,它只能在局域网内工作,不能跨网络使用。另外,ARP请求是广播的,可能会被恶意设备监听,导致安全问题。所以,ARP协议虽然强大,但也要注意保护好自己的网络环境。
四:😃 ARP 欺骗原理
4-1🥪 步骤一 攻击者伪造ARP响应
假设你和你的朋友在一个局域网里聊天,你的电脑(A)想给朋友的电脑R)发消息。正常情况下,你的电脑会广播一个ARP请求:"谁的IP是主机R?告诉我你的 MAC 地址。"然后主机R会回复它的MAC地址。
但是,如果这时候有一个"坏蛋"(攻击者M)想捣乱,它会伪造一个ARP响应,假装自己是主机 R,把自己的 MAC 地址发给你。你的电脑收到这个伪造的响应后,就会把攻击者的 MAC 地址当作主机 R 的 MAC 地址,记到自己的 ARP 缓存里。
4-2 🌮 步骤二 攻击者截获数据
当你开始给主机R 发消息的时候,你的电脑会把数据包发到攻击者的 MAC地址上,因为你的ARP缓存里记录的是攻击者的MAC地址。这样一来,攻击者就可以截获你的数据包,看到你发给主机R的内容。
4-3🌯 步骤三 攻击者转发数据(可选)
攻击者拿到你的数据包后,可以选择直接丢弃,也可以把数据包转发给主机R。如果它选择转发,主机R会收到你的消息,但完全不知道中间被攻击者截获了。这样,攻击者就完成了一个中间人攻击,既可以窃听你们的对话,还可以篡改数据。
📖提炼与总结
- 本文围绕数据链路层核心机制与ARP协议展开,构建了从底层通信原理到安全风险的完整知识框架。在数据链路层部分,核心聚焦以太网帧的规范封装与MTU的关键作用------MTU作为数据帧传输的长度限制,直接决定了IP、UDP、TCP等上层协议的数据分片策略,是保障数据传输效率与完整性的基础。
- 局域网传输细节中,核心矛盾集中于"临界资源共享"与"碰撞风险控制":由于局域网资源的独占性,需通过互斥访问机制避免冲突,同时借助碰撞检测与避免技术降低传输错误;而碰撞域内主机数量的控制、数据帧长度的优化(以MTU为最优标准),均是平衡传输效率与稳定性的关键策略。
- ARP协议作为"IP-MAC地址翻译官",其核心价值在于解决跨设备通信中的地址映射难题:通过"请求-响应"机制动态获取目标MAC地址,并利用缓存减少重复查询开销。但协议的无验证特性也带来局限性,为ARP欺骗提供了可乘之机。ARP欺骗的核心原理是通过伪造ARP响应包篡改目标主机的ARP缓存,实现数据截获或通信中断,是局域网安全的主要威胁之一。
- 整体而言,数据链路层的规范传输是网络通信的基础,ARP协议是实现跨设备通信的关键纽带,而二者的特性又共同决定了局域网的通信效率与安全风险。理解这些核心机制,是排查网络故障、构建安全网络环境的核心前提。
结束语
以上是我对于【Linux网络编程】「数据链路层 & ARP 具体过程 & ARP 欺骗」的理解
感谢您的三连支持!!!













