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

【网络】:数据链路层 —— 以太网协议

目录

数据链路层的概念

局域网技术 

以太网协议

以太网帧格式

MAC地址

MTU最大传输单元

ARP协议

ARP 协议的作用

ARP数据报的格式

ARP的工作原理


数据链路层的概念

数据链路层是OSI(开放系统互联)模型中的第二层,位于物理层和网络层之间,主要负责在直接相连的节点(如交换机、路由器、主机)之间实现可靠且高效的数据传输

  • 传输层(TCP):确保端到端的可靠传输,标识进程(端口),是应用开发的直接接口。

  • 网络层(IP):实现跨网络的逻辑寻址与路由,构建全球互联的基石。

  • 数据链路层:解决相邻节点的本地通信,屏蔽物理介质差异,确保帧的准确投递。

解释: 

  1. 网络层(IP)拥有将数据跨网络从一台主机送到另一台主机的能力,但IP并不能保证每次都能够将数据可靠的送到对端主机,因此网络层(IP)需要上层传输层(TCP)为其提供可靠性保证,比如数据丢包后传输层(TCP)可以让网络层(IP)重新发送数据,最终在传输层(TCP)提供的可靠性机制下网络层(IP)就能够保证将数据可靠的发送到对端主机。
  2. 传输层(TCP)除了对下层网络层(IP)提供可靠性机制之外,传输层(TCP)对上还提供进程到进程的服务,我们在进行套接字(socket)编程时,本质就是在使用TCP或UDP为我们提供的进程到进程的服务。
  3. 数据在网络传输时需要一跳一跳的从一台主机跳到另一台主机,最终才能将数据转发到目标主机,因此要将数据发送到目标主机的前提是,需要先将数据转发给与当前主机直接相连的下一跳主机,而两台主机直接相连也就意味着这两台主机属于同一网段,因此将数据转发到下一跳主机实际是属于局域网通信范畴的,而这实际就是链路层需要解决的问题。
  4. 网络层(IP)提供的是跨网络发送数据的能力,传输层(TCP)是为数据发送提供可靠性保证的,而数据链路层解决的则是两台相连主机之间的通信问题(同一局域网内)。

 

局域网技术 

不同局域网所采用的通信技术可能是不同的,常见的局域网技术有以下三种:

  • 以太网:基于CSMA/CD(早期)或全双工交换,使用MAC地址和帧结构(如Ethernet II格式)。

  • 令牌环网:通过“令牌”控制介质访问,设备需获得令牌才能发送数据(已逐渐被淘汰,但曾用于IBM系统)。

  • 无线局域网(Wi-Fi):基于CSMA/CA避免冲突,依赖无线接入点(AP)连接设备。

  • 其他技术:如FDDI(光纤分布式数据接口)、ATM(异步传输模式)等,但现代网络以以太网和Wi-Fi为主。

无论底层是何种局域网技术,IP层使用统一的IP地址标识设备(如192.168.1.1),IP层的核心价值:通过统一逻辑寻址(IP地址)和分层封装机制,屏蔽底层局域网技术差异,实现异构网络的互联互通。

假设数据从以太网局域网A → Wi-Fi局域网B → 令牌环网局域网C

  1. 局域网A(以太网)

    • 主机封装以太网帧头(源MAC_A,目的MAC_路由器A)。

    • 路由器A剥离以太网头,根据目的IP选择下一跳为Wi-Fi网络。

  2. 局域网B(Wi-Fi)

    • 路由器A封装Wi-Fi帧头(源MAC_路由器A,目的MAC_AP)。

    • 路由器B(连接Wi-Fi和令牌环网)剥离Wi-Fi头,根据目的IP选择下一跳为令牌环网。

  3. 局域网C(令牌环网)

    • 路由器B封装令牌环网帧头(源MAC_路由器B,目的MAC_C)。

    • 目标主机C验证帧并解封装,最终获取原始数据。

也就是说,网络中的路由器会不断去掉数据旧的局域网报头,并添加上新的局域网报头,因此数据在进行跨网络传输时,就算所需跨越的网络采用的是不同的局域网技术,最终也能够正确实现跨越。

    以太网协议

    以太网 不是一种具体的网络,以太网是由IEEE 802.3定义的一组技术标准,涵盖数据链路层(MAC子层)和物理层(传输介质、信号编码等)。

    • 数据链路层:帧格式(Ethernet II/IEEE 802.3)、MAC地址、CSMA/CD(传统半双工)。

    • 物理层:电缆类型(双绞线、光纤)、接口标准(RJ45、SFP)、传输速率(10M/100M/1000M等)。

    传输介质

    • 双绞线(如Cat5e/Cat6):用于短距离传输(百米内),成本低。

    • 光纤(单模/多模):用于长距离(千米级)或高速(10G/40G/100G以太网)。

    • 同轴电缆:早期以太网使用(10BASE5/10BASE2),已淘汰。

    以太网中所有的主机共享一个通信信道,当局域网中的一台主机发出数据后,该局域网中的所有主机都能够收到该数据。

    实际当主机A想要发数据给主机B的时候,该局域网内的其他主机也都收到了该数据,只不过除了主机B以外,其他主机识别到该数据并不是发给自己的,此时其他主机就把收到的数据丢弃了。

    也就是说,在局域网(以太网)通信时,该局域网内所有的主机在底层其实都收到了该数据,只不过经过筛选后只提交上来了发给自己的数据。

    扩展:

    • 网络抓包不仅能够抓到发送给自己的报文数据,也能抓取到发给别人的报文数据,实际就是因为在进行网络抓包时,主机将从局域网中收到的所有报文数据都向上交付了而已。
    • 网卡有一种模式叫做混杂模式,被设置为混杂模式的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。

    以太网帧格式

    以太网帧格式如下:

    具体字段如下: 

    1. 源地址(Source Address)和目的地址(Destination Address)字段

    • 长度:各占 6字节(48位)

    • 目的地址:标识数据帧的目标设备的物理地址(MAC地址)。

    • 源地址:标识发送数据帧的设备的物理地址(MAC地址)。

    2. 类型字段(Type/Length)

    • 长度2字节

    • Ethernet II 帧:标识 上层协议类型,如:

      • 0x8100:802.1Q VLAN 标签。

      • 0x86DD:IPv6 数据包。

      • 0x0806:ARP 请求/应答。

      • 0x0800:IPv4 数据包。

    • IEEE 802.3 帧:表示 数据字段长度(范围 0~1500),需结合 LLC 头标识协议。
    • 判断规则

      • 若值 ≥ 0x0600(1536),视为类型字段(Ethernet II)。

      • 若值 ≤ 0x05DC(1500),视为长度字段(IEEE 802.3)。

    3. 数据字段(Data/Payload)

    • 长度46~1500字节(标准以太网 MTU),作用:承载上层协议(如 IP、ARP)的数据。

    • 最小长度:46字节。若上层数据不足,需填充至46字节(如 TCP 握手包)。

    • 最大长度:1500字节(标准 MTU)。

    • 填充机制:发送方自动填充无用数据,接收方根据上层协议头部中的长度字段去除填充。

    4. CRC字段(Frame Check Sequence, FCS)

    • 长度4字节

    • 作用:通过 CRC-32 校验算法 检测帧在传输过程中是否发生比特错误。

    • 校验范围:覆盖 目的MAC、源MAC、类型字段、数据字段

    • 处理规则

      • 接收方计算校验值,若与 FCS 不匹配,直接丢弃帧,不通知发送方。

      • 错误恢复依赖上层协议(如 TCP 重传)。

     MAC帧如何决定将有效载荷交付给上层的哪一个协议? 

    以太网MAC帧对应的上层协议不止一种,因此在将MAC帧的报头和有效载荷分离后,还需要确定应该将分离出来的有效载荷交付给上层的哪一个协议。

    在MAC帧的帧头当中有2个字节的类型字段,因此在分离出报头和有效载荷后,根据该字段将有效载荷交付给对应的上层协议即可。

    1. 检查MAC地址:确认帧是否为本机接收。

    2. 解析类型/长度字段

      • 若为EtherType(≥1536),直接匹配协议。

      • 若为长度字段(≤1500),解析LLC/SNAP获取协议类型。

    3. 向上层传递:根据协议类型调用对应处理模块(如IP栈、ARP等)。

    MAC地址

    MAC 地址主要用于在同一个局域网(如以太网)内进行设备到设备的直接寻址。它的作用范围局限于本地网络链路,例如在一个办公室的局域网或者家庭 Wi - Fi 网络中。当数据在局域网内传输时,交换机等数据链路层设备根据 MAC 地址来确定数据帧的转发路径,将数据从源设备准确地发送到目的设备。

    MAC 地址是物理地址,它通常固化在网络设备的网卡中。在设备生产过程中,由设备制造商分配。MAC 地址的前 24 位(3 字节)是组织唯一标识符(OUI),用于识别网络设备的制造商;后 24 位(3 字节)是由制造商分配的唯一编号,用于区分同一制造商生产的不同设备。

    MAC 地址长度为 48 位,通常采用十六进制表示法,每两个十六进制数字表示 1 字节,中间用冒号或连字符分隔。例如,00:1A:2B:3C:4D:5E 或 00 - 1A - 2B - 3C - 4D - 5E。

    我们可以通过ifconfig命令来查看我们的MAC地址。

    注:MAC地址前面的单词ether就是以太的意思

    • 源 MAC 地址(Source MAC Address):它是发送数据的网络设备(如计算机网卡、网络交换机端口等)在局域网(LAN)中的物理地址。MAC 地址也被称为硬件地址,是由网络设备制造商固化在设备中的一个 48 位二进制数,通常表示为 12 位的十六进制数,例如 “00 - 1B - 44 - 11 - 3A - 0C”。这个地址在全球范围内是唯一的,用于在局域网环境中标识数据的发送端。
    • 目的 MAC 地址(Destination MAC Address):它是接收数据的网络设备在局域网中的物理地址,同样是一个 48 位的二进制数,用于在局域网中标识数据的目标接收端。
    • 有些数据的传输都是跨局域网的,数据在传输过程中会经过若干个路由器,最终才能到达对端主机。

    源MAC地址和目的MAC地址是包含在链路层的报头当中的,而MAC地址实际只在当前局域网内有效,因此当数据跨网络到达另一个局域网时,其源MAC地址和目的MAC地址就需要发生变化,因此当数据达到路由器时,路由器会将该数据当中链路层的报头去掉,然后再重新封装一个报头,此时该数据的源MAC地址和目的MAC地址就发生了变化。

    因此数据在传输的过程中是有两套地址:

    • 一套是源IP地址和目的IP地址,这两个地址在数据传输过程中基本是不会发生变化的(存在一些特殊情况,比如在数据传输过程中使用NAT技术,其源IP地址会发生变化,但至少目的IP地址是不会变化的)。
    • 另一套就是源MAC地址和目的MAC地址,这两个地址是一直在发生变化的,因为在数据传输的过程中路由器不断在进行解包和重新封装。

    MTU最大传输单元

    • MTU 是数据链路层协议规定的单次传输数据的最大有效载荷长度(单位为字节),由底层物理介质和网络技术决定。

    • 核心作用:确保数据帧在物理网络中可靠传输,避免因数据过长导致传输失败或效率降低。

    常见网络类型的MTU

    网络类型MTU(字节)说明
    以太网(Ethernet)1500最常见的局域网标准,如家庭/企业网络。
    PPPoE(宽带拨号)1492因PPPoE头部占用8字节,MTU需减少。
    Wi-Fi(802.11)1500与以太网相同,但可能因加密开销调整。
    Jumbo Frame9000巨型帧,用于高性能网络(需设备支持)。

     为什么以太网MTU是1500字节?

    • 历史原因:早期以太网设计时,为平衡传输效率和错误率,选择1500字节作为最佳值。

    • 兼容性:沿用至今,成为行业标准,确保设备间互通性。

    如何查看和修改MTU?

     查看MTU

    # Linux
    ifconfig eth0 | grep mtu# Windows
    netsh interface ipv4 show subinterfaces

    修改MTU:

    # Linux
    ifconfig eth0 mtu 9000# Windows(需管理员权限)
    netsh interface ipv4 set subinterface "以太网" mtu=9000 store=persistent
    

     

    ARP协议

    在局域网(LAN)中,通过已知的 IP地址 解析出对应的 MAC地址,实现数据链路层的直接通信。

    • 所属层:介于 网络层(IP) 与 数据链路层(MAC) 之间的协议,通常归类为网络层协议。

    • 核心功能:建立和维护 IP-MAC映射表(即ARP缓存表)。

    ARP 协议的作用

    ARP协议的核心作用在局域网(LAN)中,通过已知的IP地址解析对应的MAC地址,实现网络层(IP)到数据链路层(MAC)的地址映射,确保数据能够封装成帧并正确送达目标设备。

    在同一个局域网中要给对方发消息,就必须得知道对方的MAC地址,而我们只知道对方的IP地址,因此需要通过ARP协议来根据IP地址来获取目标主机的MAC地址。 

    • 网络层使用IP地址进行逻辑寻址(如192.168.1.100),但数据链路层实际通信依赖MAC地址(如00:1C:C4:AA:BB:CC)。

    • 若设备仅知道目标IP地址而不知其MAC地址,无法直接发送数据帧。

    总结:ARP协议是局域网通信的“翻译官”,通过动态绑定IP与MAC地址,确保数据从网络层精准传递至数据链路层目标设备。

    ARP协议的分层

    在TCP/IP四层模型中,协议的分层设计并非严格的“垂直分层”,同一层内的协议可能承担不同功能模块,形成逻辑上的层级关系

    在OSI模型中,ARP协议属于链路层。但在TCP/IP模型中,ARP协议属于网络层。

    • MAC帧协议:数据链路层的基础协议,负责将网络层传递的数据封装成帧(添加源/目标MAC地址、帧校验等),并通过物理介质传输。

    • ARP:数据链路层的辅助协议,用于解决地址映射问题(将IP地址解析为MAC地址)。

      • 与MAC帧的关系

        • 逻辑上层:ARP/RARP报文需封装在MAC帧中传输,其EtherType字段为0x0806(ARP)或0x8035(RARP)。

        • 功能依赖:MAC帧为ARP/RARP提供传输载体,ARP/RARP为网络层(IP)提供地址解析服务。

    分层示意图如下:

      ┌─────────────────────┐│      网络层(IP)     │ ← 依赖ARP获取MAC地址└─────────────────────┘↓┌─────────────────────┐│  ARP/RARP协议        │ ← 逻辑上属于数据链路层,但为IP层提供服务└─────────────────────┘↓┌─────────────────────┐│  MAC帧协议           │ ← 承载ARP/RARP报文└─────────────────────┘
    • MAC帧是数据链路层的传输载体,ARP/RARP是其上层协议,负责地址解析。

    • IP是网络层的传输核心,ICMP/IGMP是其上层协议,扩展控制和管理功能。

    • 协议分层的关键在于功能解耦,而非物理层级隔离。同一层内协议通过协作,共同实现该层的核心目标(如数据链路层的直接通信、网络层的端到端传输)。

    ARP数据报的格式

     ARP报文直接封装在 以太网帧 的数据部分,其结构固定为 28字节,若不足以太网要求的最小数据长度(46字节),需填充至46字节。以下是ARP报文的字段组成:

    字段名称长度(字节)说明
    硬件类型(Hardware Type)2底层网络类型:
    1 :以太网(Ethernet)。

    6:IEEE 802网络(Wi-Fi等)。

    15:帧中继(Frame Relay)。

    协议类型(Protocol Type)2上层协议类型:
    0x0800 表示IPv4,0x86DD 表示IPv6。
    硬件地址长度(HLEN)1MAC地址长度:
    以太网为 6(即6字节)。
    协议地址长度(PLEN)1IP地址长度:
    IPv4为 4,IPv6为 16
    操作码(Operation)2报文类型:
    1 为ARP请求(Request),2 为ARP响应(Reply)。
    发送方MAC地址(Sender MAC)6发送方的MAC地址(如 00:1C:C4:AA:BB:CC)。
    发送方IP地址(Sender IP)4发送方的IP地址(如 192.168.1.1)。
    目标MAC地址(Target MAC)6目标设备的MAC地址:
    ARP请求中为 00:00:00:00:00:00(全0)。
    目标IP地址(Target IP)4目标设备的IP地址(如 192.168.1.2)。

     

    ARP的工作原理

    ARP(地址解析协议)的工作原理可概括为 “一问一答” 的广播-单播交互过程,核心是通过 动态查询 建立 IP地址与MAC地址的映射关系。以下是详细步骤解析:

    1. PC1需要发送数据给PC2(IP已知,MAC未知)│↓
    2. PC1检查ARP缓存 → 无记录 → 触发ARP请求│↓
    3. PC1广播ARP请求:"Who has 192.168.1.2? Tell 192.168.1.1"│↓
    4. PC2单播响应:"192.168.1.2 is at 00:1C:C4:DD:EE:FF"│↓
    5. PC1和PC2更新ARP缓存 → 后续通信直接使用MAC地址

    1. 触发条件

    当设备(如PC1)需要向同一局域网内的另一设备(如PC2)发送数据时:

    • 已知:目标IP地址(如192.168.1.2),未知:目标MAC地址。

    • 触发ARP请求:若PC1的ARP缓存表中无192.168.1.2对应的MAC地址,则启动ARP解析流程。

    2. ARP请求(广播)

    (1)构造ARP请求包

    • 硬件类型(Hardware Type):1 以太网(Ethernet)
    • 协议类型(Protocol Type):0x0800 表示IPv4
    • 硬件地址长度(HLEN):MAC地址长度,以太网为 6(即6字节)。
    • 协议地址长度(PLEN):IP地址长度,IPv4为 4
    • 操作类型1(ARP请求)
    • 发送方MAC:MAC地址(00:1C:C4:AA:BB:CC
    • 发送方IP:PC1的IP地址(192.168.1.1
    • 目标MAC00:00:00:00:00:00(全0,表示未知)
    • 目标IP192.168.1.2

    (2)封装为以太网帧

    • 目标MACFF:FF:FF:FF:FF:FF(广播地址)。

    • 类型字段0x0806(标识ARP协议)。

    • 数据字段:28字节的ARP请求包 + 18字节填充(满足以太网最小数据长度46字节)。

    (3)广播发送:交换机将帧广播到局域网内所有设备(除源端口外)。

    3. ARP响应(单播)

    (1)设备接收并处理请求

    • 所有设备收到广播帧,检查目标IP:

      • IP不匹配:丢弃帧。

      • IP匹配(如PC2的IP为192.168.1.2):继续处理。

    (2)构造ARP响应包

    • 硬件类型(Hardware Type):1 以太网(Ethernet)
    • 协议类型(Protocol Type):0x0800 表示IPv4
    • 硬件地址长度(HLEN):MAC地址长度,以太网为 6(即6字节)。
    • 协议地址长度(PLEN):IP地址长度,IPv4为 4
    • 操作类型2(ARP响应)
    • 发送方MAC:MAC地址(00:1C:C4:DD:EE:FF),B_MAC
    • 发送方IP:PC2的IP地址(192.168.1.2),B_IP
    • 目标MAC:MAC地址(00:1C:C4:AA:BB:CC),D_MAC
    • 目标IP:PC1的IP地址(192.168.1.1),D_IP

    (3)封装为以太网帧

    • 目标MAC:PC1的MAC地址(单播),D_MAC

    • 类型字段0x0806

    • 数据字段:28字节的ARP响应包 + 18字节填充。

    (4)单播发送响应:PC2直接向PC1的MAC地址发送帧。

    4. 更新ARP缓存

    (1)PC1接收响应

    • 解析响应包,提取PC2的IP-MAC映射(192.168.1.2 → 00:1C:C4:DD:EE:FF)。

    • 将映射存入本地ARP缓存表,默认存活时间 15~20分钟

    (2)PC2更新缓存

    • PC2在处理ARP请求时,已记录PC1的IP-MAC映射(192.168.1.1 → 00:1C:C4:AA:BB:CC)。

    5. 后续通信

    • PC1直接使用缓存中的PC2的MAC地址封装数据帧,无需再次触发ARP请求。

    总结

    ARP协议通过 广播请求-单播响应 机制,动态维护IP与MAC的映射关系,是局域网通信的基石。理解其工作原理,有助于快速定位网络层与数据链路层的连通性问题(如无法上网、IP冲突)。实际应用中,结合抓包工具(如Wireshark)可直观观察ARP交互过程。

    设备能连接局域网(如内网服务器可访问),但无法访问互联网(如无法打开网页)。

    根本原因

    • 无法获取网关MAC地址:设备需通过默认网关将数据转发到外网,若ARP无法解析网关的MAC地址,数据链路层无法封装目标MAC,导致数据无法发出。

    • 常见故障点

      1. 网关ARP条目缺失:本地ARP缓存中无网关的IP-MAC映射。

      2. 网关未响应ARP请求:网关设备故障、IP配置错误或被防火墙拦截。

      3. 本地ARP缓存错误:缓存中网关MAC地址错误(如被ARP欺骗篡改)。

    相关文章:

  • Sumsub Java Web Demo 技术文档
  • STM32F407VET6实战:CRC校验
  • 编译原理概述
  • [前端] wang 富文本 vue3
  • PCIe Switch 问题点
  • 背包问题详解
  • 蓝牙AVRCP协议概述
  • (网络文件系统)N
  • ACM模式用Scanner和System.out超时的解决方案和原理
  • FC7300 IO 无法正常输出高低电平问题排查
  • Elasticsearch/OpenSearch 中doc_values的作用
  • 统信操作系统自定义快捷键配置音量调节功能指南
  • 第六章 进阶10 实习生的焦虑
  • AI 编程 “幻觉” 风险频发?飞算 JavaAI 硬核技术筑牢安全防线
  • 龙虎榜——20250516
  • 香港 GPU 服务器优势及使用场景解析
  • Python开源项目月排行 2025年4月
  • FC7300 Clock介绍
  • LocaleContextResolver实现多语言切换-笔记
  • MySQL8新特性
  • 梅花奖在上海|湘剧《夫人如见》竞梅,长沙文旅来沪推广
  • 一周文化讲座|“我的生命不过是温柔的疯狂”
  • 获派驻6年后,中国驻厄瓜多尔大使陈国友即将离任
  • 俄方代表团抵达土耳其,俄乌直接谈判有望于当地时间上午重启
  • 美叙领导人25年来首次会面探索关系正常化,特朗普下令解除对叙经济制裁
  • 广西北部湾国际港务集团副总经理潘料庭接受审查调查