图木舒克市网站建设_网站建设公司_过渡效果_seo优化
2026/1/19 9:52:08 网站建设 项目流程

【Linux网络】数据链路层 - 指南

网络转发,本质是在子网和子网之间进行转发。学习IP协议,本质上是消除“B → C,为什么先到路由器F?”这类路径选择问题。要把数据从主机B传送到主机C,必须先将数据从主机B交给路由器F。

在这里插入图片描述
那么同一个子网中,一个主机怎么把数据交给另一台主机?其实就是局域网通信的疑问!这就需要数据链路层来解决这个问题

在这里插入图片描述

文章目录

  • 1. 认识以太网
    • 1.1 什么是以太网
    • 1.2 以太网帧格式
    • 1.3 认识MTU
  • 2. ARP协议
    • 2.1 引入ARP协议
    • 2.2 ARP协议的作用
    • 2.3 ARP数据报的格式
    • 2.4 ARP协议的工作流程
    • 2.5 ARP欺骗

1. 认识以太网

1.1 什么是以太网

以太网(Ethernet)”代表的是一整套通信技术规范,用于指导设备在局域网(LAN)中如何互相通信。这就像普通话是一种“语言标准”,来自不同地方的人只要都说普通话,就能交流。因此,你许可用以太网标准组建家庭网络、公司网络,甚至数据中心网络,它们都是不同的“具体网络”,但都遵循以太网标准。

它主要规范了:

一个实际存在的网络。就是换句话说,以太网 = 一套规则,而不

以太网的核心工作机制:CSMA/CD
早期共享式以太网启用一种称为 CSMA/CD(载波侦听多路访问/冲突检测)​ 的协议来管理网络访问。其工作方式通俗来讲就是“先听后发、边发边听、冲突退避”:

随着以交换机为核心的星型网络成为主流,每个设备独享一条链路,冲突基本被避免,CSMA/CD的作用也随之减弱,但其作为以太网的基础协议仍被保留。

拓扑结构的演变:从总线到星型
以太网的物理布局(拓扑)经历了要紧演变:

以太网的发展史也是其速度和介质不断升级的历史,下面的表格清晰地展示了这一历程。

以太网类型标准速率常用传输介质最大网段长度(典型)
标准以太网​IEEE 802.310 Mbps同轴电缆 (10Base5/2), 双绞线 (10Base-T)500米 (10Base5), 100米 (10Base-T)
快速以太网​IEEE 802.3u100 Mbps双绞线 (100Base-TX), 光纤 (100Base-FX)100米 (TX), 2000米 (FX多模)
千兆以太网​IEEE 802.3z/ab1000 Mbps双绞线 (1000Base-T), 光纤 (1000Base-LX/SX)100米 (T), 5公里 (LX单模)
万兆以太网​IEEE 802.3ae10 Gbps光纤40公里 (ER单模)

为什么以太网能成为绝对主流?(与令牌环网等对比)

vs. 令牌环网(IBM主导):

vs. 无线LAN(Wi-Fi):


1.2 以太网帧格式

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

  1. 前导码与帧起始定界符(图中未显示,但实际存在)
  • 长度:8字节(通常不算是“帧”的正式部分,但在物理层传输时必不可少)。

  • 作用

    • 前7字节:交替的 1 和 0(10101010...),用于时钟同步,使接收方网卡能够调整其接收时序,与发送方的信号同步。

    • 最后1字节:帧起始定界符(10101011),标志着同步序列的结束,下一字节就是真正的帧开始(目标MAC地址)。

  1. 目的MAC地址
  • 长度:6字节(48位)。

  • 作用:指明该帧的接收者。能够是一个单播地址(某台具体设备的网卡)、一个组播地址(一组设备)或广播地址FF:FF:FF:FF:FF:FF,所有设备)。

  • 关键:交换机根据此地址决定将帧从哪个端口转发出去。

  1. 源MAC地址
  • 长度:6字节(48位)。

  • 作用:指明该帧的发送者。必须是发送网卡的单播地址。接收方据此知道是谁发来的帧,以便回复。

  1. 类型
  • 长度:2字节。

  • 作用:这是Ethernet II帧的关键标识字段,用于指明帧内“数据”字段中承载的上层协议是什么

  • 常见值:

    • 0x0800:表示数据部分是IPv4 数据包

    • 0x0806:表示素材部分是ARP 请求/应答报文

    • 0x86DD:表示数据部分是IPv6 数据包

    • 0x8100:表示带有 802.1Q VLAN 标签的帧

  • 注意:在早期的IEEE 802.3标准中,这个字段被称为“长度”,指后续数据字段的字节数。但Ethernet II用“类型”来区分,更具灵活性。当这个值大于0x0600(十进制1536)时,就被解释为“类型”,因为数据长度不可能超过1500字节。这是两者兼容的关键。

  1. 数据与填充
  • 长度46 ~ 1500 字节。这是以太网帧的有效载荷部分。

  • 最小46字节:这个限制源于早期的CSMA/CD机制。为了保证冲突检测能正常工作,整个帧(从目的MAC到FCS)必须不小于64字节(14+46+4=64)。如果上层传来的数据本身不足46字节,链路层会自动在后面添加填充字节(全0)以满足长度要求。

  • 最大1500字节:这是以太网的最大传输单元。如果IP包太大,网络层(IP协议)就必须对其进行分片。

  • 内容:承载着上层(网络层及以上)的完整协议资料单元,如IP数据包。

  1. 帧校验序列
  • 长度:4字节(32位)。

  • 作用:用于错误检测结果与接收到的FCS不符,就说明帧在传输过程中发生了比特错误,该帧会被就是。发送方根据从“目的MAC地址”到“数据与填充”字段的所有内容,通过CRC算法计算出一个值,填入FCS字段。接收方用同样的算法重新计算,若直接丢弃,不会上传给上层协议。这是一个很可靠的检错机制。

如何分离报头和有效载荷?

分离报头和有效载荷依赖于以太网帧格式固定这一特点。接收方通过读取固定长度的报头,就能确定有效载荷的起始位置。

分离的关键在于固定的就是报头各字段的长度,接收方像拆解一个结构固定的包裹一样,按顺序取出相应部分即可。

如何分用?

“分用”是指接收方在剥离以太网报头后,如何决定将有效载荷(数据部分)交给哪个上层协议去处理。该过程完全依赖于报头中的 “类型”字段。

  • 如果 “类型”字段值 = 0x0800 -> 这表示数据部分是一个 IP 数据报。网卡驱动程序会将有效载荷交给操作系统内核中的 IP 协议模块​ 处理。

  • 如果 “类型”字段值 = 0x0806 -> 这表示数据部分是一个 ARP 请求/应答。有效载荷会被交给操作系统内核中的 ARP 协议模块​ 处理。

  • 如果 “类型”字段值 = 0x8035 -> 这表示数据部分是一个 RARP 请求/应答。有效载荷会被交给 RARP 协议模块​ 处理。


1.3 认识MTU

MTUMaximum Transmission Unit 的缩写,即 最大传输单元数据链路层的帧(如以太网帧)其材料载荷部分所能承载的上层协议数据的最大长度。就是。它指的

为什么以太网的标准MTU是1500字节?
这是一个历史与技术权衡的结果。早期的共享式以太网为了有效检测冲突(CSMA/CD机制),规定了以太网帧的长度最小为64字节,最大为1518字节。从一个完整的以太网帧(1518字节)中,减去帧首部(目的MAC+源MAC+类型,共14字节)和帧尾部校验序列(4字节),剩下承载IP数据包的最大空间就是 1518 - 18 = 1500字节。这个值作为标准被RFC规定下来,并沿用至今。

巨型帧
,巨型帧尚未成为国际标准,需要网络路径上的所有设备都支持并配置相同的巨型帧大小才能正常工作。就是在高速数据中心网络中,1500字节的MTU可能显得效率低下,因为每个数据包的处理开销是固定的。为此,出现了巨型帧技术,允许MTU值大幅增加,通常可达9000字节。这减少了数据包数量,降低了协议处理开销,提升了大块数据传输的吞吐量。但要求注意的

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

MTU对UDP协议的影响
让我们回顾一下UDP协议:

首先UDP 协议本身非常简单,它不供应分片、重传等复杂机制,因此当数据大小超过路径 MTU 时,其带来的影响是直接且显著的。

MTU对于TCP协议的影响
让我们再回顾一下TCP协议:

与 UDP 的“被动”不同,TCP 作为面向连接的可靠传输协议,通过主动协商机制来规避 IP 分片。

MSS和MTU的关系
在这里插入图片描述
查看硬件地址和MTU

在这里插入图片描述
使用ifconfig命令,即可查看ip地址、mac地址和MTU;


2. ARP协议

2.1 引入ARP协议

关于MAC地址和局域网通信原理,其实我们在之前的文章网络传输基本流程中就已经介绍过了

在这里插入图片描述
问题1:主机A为什么要把数据交给主机E?
在局域网中,数据帧是以MAC地址作为目标地址进行转发的。主机A发送数据时,会根据路由表或ARP表确定下一跳设备。如果主机E在同一局域网内,则直接发送;倘若不在同一网段,则发送给默认网关(如路由器),由路由器负责转发。但图中主机E与主机A在同一局域网,因此主机A直接将数据帧的目标MAC地址设置为MacE,通过广播或单播方式发送。

结论:主机A把数据交给主机E,是因为路由协议或ARP协议确定了主机E是目标主机,且位于同一局域网内,可以直接通信。


问题2:

最初局域网是一个“碰撞域”,同一时刻只能发送一个数据帧,所以以太网是一个共享资源,同时也是一个临界资源

那么应用以太网的时候时间越长越好,还是越短越好?
这里的“采用时间”许可理解为单个设备一次占用信道进行传输的持续时间。并非越长越好,也非越短越好,而是需要一个平衡点。

结论:理想情况是让设备在一次信道占用中,发送一个长度适中的帧(如标准以太网MTU 1500字节对应的帧),从而在传输效率和信道共享公平性之间取得最佳平衡。

主机A发送数据帧越长越好,还是越短越好?
对于单个主机发送的数据帧长度,同样需要权衡。

结论:在共享式以太网中,适中的帧长是最优选择。以太网标准将最大传输单元(MTU)定为1500字节,正是这种权衡的结果——在保证较高传输效率的同时,不至于因帧过长而对网络延迟和冲突代价产生过大负面影响
。如果应用资料很大,会在网络层(IP)进行分片,而不是在资料链路层采用超长帧。

越少越好?就是材料帧越多越好,还
对于传输固定总量的数据,帧的数量取决于帧的长度。

结论:对于给定的数据总量,在可能的情况下,应优先选择数量较少但长度适中的标准帧,而不是大量的小帧或少量巨大的帧。这能使整体吞吐量最大化。操作系统和协议栈通常会尽量封装接近MTU大小的数据包来优化性能。


问题3:网络层运用IP地址进行寻址,但数据在数据链路层实际传输时,依赖的是MAC地址(物理地址)。如果主机A只知道主机E的IP地址,而不知道其MAC地址,如何发送?

所以局域网通信时就需一种局域网协议,把IP地址转换为对应的MAC地址——ARP协议(地址解析协议)

因而真正在网络物理层上流动的数据是数据帧


2.2 ARP协议的作用

一个介于信息链路层和网络层之间的协议就是虽然我们在这里介绍ARP协议,但是需要强调,ARP不是一个单纯的数据链路层的协议,而
在这里插入图片描述
和ARP协议类似的协议也有,就比如ICMP协议、IGMP协议等,不单纯属于网络层协议

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

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
  • 数据包先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  • 因此在通讯前必须获得目的主机的硬件地址;

ARP协议的核心任务是完成网络层地址(IP地址)​ 到数据链路层地址(MAC地址)​ 的动态映射。由于IP地址是逻辑地址,用于在网络层进行全局寻址,而数据在物理网络中传输时,最终依赖的是数据链路层的MAC地址来定位具体设备。ARP正是沟通这两层之间的“翻译官”。


2.3 ARP数据报的格式

在这里插入图片描述
一个ARP数据包是嵌套在以太网帧中传输的。整个结构可以分为两大部分:以太网帧头​ 和 ARP信息部分。

  1. 以太网帧头(共14字节)
    这是用于数据链路层传输的封装头。
  1. ARP数据部分(共28字节)
    ARP协议真正的载荷,包含了地址解析所需的全部信息。就是这

2.4 ARP协议的工作流程

在这里插入图片描述
第一阶段:ARP 请求(广播)

  1. 触发与查询缓存
  • 触发:如图所示,路由器R准备发送一个IP数据包给IP地址为IPE的主机。但数据链路层传输需要MAC地址,而路由器R只知道目标IP(IPE),不知道其MAC地址。

  • 查询ARP缓存:路由器R首先会查询本地的ARP缓存表(一个存储了近期IP-MAC映射关系的表)。如果表中已有IPE对应的MAC地址,则直接启用,无需后续步骤。否则必须发起ARP请求。

  1. 构造并广播ARP请求包
  • 构造请求:路由器R会构造一个ARP请求数据包。这个包的核心信息是:

    • 发送方IP:路由器R自己的IP(假设为IPX)。

    • 发送方MAC:路由器R自己的MAC地址。

    • 目标IP:要查询的IPE。

    • 目标MAC:此处填充全零(00:00:00:00:00:00),因为这就是要询问的内容。

  • 封装与广播:将此ARP请求包封装到一个以太网帧中。该帧的目标MAC地址被设置为特殊的广播地址(FF:FF:FF:FF:FF:FF)。这意味着,该帧会被发送到局域网内的每一台主机(主机A、B、C、D、E都会收到)。

在这里插入图片描述

第二阶段:ARP 应答(单播)

  1. 接收与检查
  • 局域网内所有主机都会接收到这个广播帧。

  • 每台主机都会查看ARP请求包中的“目标IP”字段。

  • 主机A、B、C、D发现“目标IP”(IPE)与自己的IP地址不匹配,于是丢弃该数据包。这正是图片中它们“无动于衷”的原因。

  1. 目标主机响应
  • 准备响应。就是主机E的IP地址就是IPE。它识别出该请求是询问自己的,于
  1. 构造并发送ARP应答包
  • 构造应答:主机E会构造一个ARP应答包。这个包含有了所请求的信息:

    • 发送方IP:主机E的IP地址(IPE)。

    • 发送方MAC:主机E的MAC地址(这就是路由器R想要的信息!)。

    • 目标IP:路由器R的IP地址(IPX)。

    • 目标MAC:路由器R的MAC地址(从收到的请求包中获知)。

  • 单播回应:主机E将这个ARP应答包封装到一个以太网帧中,并直接发送给路由器R(使用路由器R的MAC地址作为目标地址),而不再是广播。

在这里插入图片描述

最终步骤:缓存与通信
6. 更新ARP缓存

  • 路由器R收到主机E的应答后,获得了IP地址IPE对应的MAC地址。

  • 它会将这条IP-> MAC的映射关系记录到自己的ARP缓存表中,并设置一个奏效时间(例如20分钟)。这样,在后续一段时间内与主机E通信时,就无需再次广播询问了。

  1. 正常数据传输
  • 此时,路由器R已经知道了主机E的MAC地址。它就可能将最初要发送的那个IP数据包(内容是“你好”)封装成以太网帧,正确发送给主了

注意:使用 arp -a命令可查看arp缓存表

障碍:IP-> MAC的映射关系记录到自己的ARP缓存表中,是有一个时间段来记录的,为什么不永久记录下来呢?

网络中的设备(如笔记本电脑、手机)可能会更换网络接口卡(MAC地址随之改变)、更换位置(IP地址可能变化)或直接离线。永久记录会导致过时、错误的映射,使通信失败。永久保存所有映射关系会导致ARP缓存表无限膨胀,占用大量内存,并降低查询速度。

难题:mac帧如何经过ARP协议分离?

MAC帧的解封装
当内容帧通过网络到达一台主机的网卡时,首先在数据链路层进行处理:

  1. 剥离帧头和帧尾:MAC帧的格式是固定的。设备会读取前14个字节(包括6字节目的MAC地址、6字节源MAC地址、2字节类型字段)和最后4个字节的CRC校验码。剩下的部分就是“有效载荷”。

  2. CRC校验:使用CRC校验码检查数据在传输过程中是否出错。要是出错,帧通常会被直接丢弃。

  3. 关键决策:查看类型字段:这是决定“有效载荷”去向的关键。这个字段指明了有效载荷应该交给上层的哪个协议处理。

    • 如果类型字段是0x0800一个就是,则表示有效载荷IP数据报,数据链路层会将其交给网络层的IP协议去处理。

    • 若是类型字段是0x0806一个就是,这才表示有效载荷ARP报文,数据链路层会将其交给ARP协议处理。

所以,ARP协议的“分离”并不是ARP协议主动去剥离MAC帧,而是数据链路层在达成本职工作后,根据类型字段的指示,将数据“分用”给了ARP协议。

ARP协议的工作流程
当材料被交到ARP协议后,ARP协议会解析这个ARP报文(通常是28字节固定长度
),并根据报文中的操作码op字段)​ 来采取行动:

  1. ARP请求(op=1):这是一个广播请求。当你应该与某台设备通信但不知道其MAC地址时,会发送ARP请求。局域网上所有设备都会收到并处理此请求。

    • 如果你是接收方:检查ARP请求报文中的目标IP地址是否与自己的IP地址匹配。要是匹配,你就会将自己的MAC地址通过一个ARP应答(op=2)​ 单播回复给请求方。同时,你会将请求方的IP-MAC映射记录到自己的ARP缓存表中。

    • 如果你是无关主机:发现目标IP与自己的IP不匹配,则会丢弃这个ARP请求报文。

  2. ARP应答(op=2):这是一个单播响应。当收到ARP应答时,设备会从中获取发送方的IP地址和MAC地址,并将这个映射关系缓存起来,以便后续通信使用
    。操作系统会维护一个ARP缓存表,并设置老化时间,以防止映射信息过时。

因而,处理任何ARP(请求/应答),先看操作码OP

比较简单的,这里提一下就是RARP协议是将目标主机的mac地址,转换为IP地址,相对于ARP协议


2.5 ARP欺骗

步骤一
在这里插入图片描述
在攻击发生前,网络处于正常、可信的状态:

步骤二
在这里插入图片描述
攻击者主机M(MAC地址为 macM)依据发送伪造的ARP报文,篡改主机A和路由器R的ARP缓存。

步骤一:污染主机A的ARP缓存

步骤二:污染路由器R的ARP缓存

至此,ARP欺骗结束,主机M成功将自己“插入”了主机A与路由器R(及外部网络)的通信路径中。

步骤三
在这里插入图片描述
在ARP缓存被毒化后,所有流量都会“流经”攻击者主机M:

  1. 主机A​,它将本应发给路由器R的数据包,全部发往了就是想访问互联网,它查询ARP缓存,发现 ipR网关)对应macM。于主机M的MAC地址(macM`)

  2. 主机M截获这些数据包。此时,它能够窃听、分析甚至篡改其中的内容(例如登录密码、聊天记录)。之后,为了不中断连接引起怀疑,它通常会将这些数据包原样转发给真正的路由器R(macR)。

  3. 外部网络​的回复数据包从路由器R返回。路由器R查询自己的ARP缓存,发现 ipA(主机A)对应 macM。于是,它将回复包发往了主机M的MAC地址(macM)

  4. 主机M​ 再次截获返回的数据包,同样可以进行窃听或篡改,然后再转发给主机A。

对于通信的双方(主机A和路由器R)来说,网络连接看似正常,但他们所有的流量都在不知不觉中被一个“中间人”(主机M)全程监控和操控。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询