9、数据链路层
2026/6/6 22:04:51 网站建设 项目流程

目录

数据链路层

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

认识以太网

以太网的帧格式如下所示

认识 MAC 地址

对比理解 MAC 地址和 IP 地址

为什么需要两个地址?

实际协作示例(发送一个 HTTP 请求)

认识 MTU

MTU 对 IP 协议的影响

MTU 对 UDP 协议的影响

MTU 对于 TCP 协议的影

查看硬件地址和 MT

ARP 协议

ARP 协议的作用

ARP 协议的工作流程

想一想,为什么要有缓存表?

为什么表项要有过期时间而不是一直有效?

再想一想, 结合我们刚才讲的工作流程, ARP 的数据报应该是一个什么样的格式?

ARP 报文整体结构(IPv4 + 以太网)

二、结合例子(主机A请求主机B的MAC)

ARP 数据报的格式


数据链路层

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

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

网络层是规划师(地图导航),数据链路层是搬运工(开车送货)。规划师告诉搬运工下一站去哪,但搬运工只负责把货物交给下一个搬运工,而不知道最终目的地。

  • 数据链路层:负责隔壁老王之间的通信(只关心相邻节点,通过MAC地址找邻居)。

  • 网络层:负责跨国邮寄(从源到目的,通过IP地址找位置,规划路径)。

对比维度数据链路层网络层
OSI层级第2层第3层
主要功能同一物理链路(如一段网线、一个Wi-Fi频段)上提供可靠传输,负责成帧、介质访问控制、差错检测(但不纠错)跨不同链路、不同网络之间提供路由与转发,实现端到端的数据传输
协议数据单元(PDU)帧(Frame)数据报(Datagram,IPv4中称为包Packet)
地址类型物理地址(MAC地址):48位,烧录在网卡,本地唯一,扁平结构逻辑地址(IP地址):32位(IPv4)或128位(IPv6),层次化(网络号+主机号),可全局路由
地址作用范围同一个广播域(如一个局域网内部)跨越多个网络(从源到目的端)
典型协议Ethernet(以太网)、Wi-Fi(802.11)、PPP、HDLCIP(IPv4/v6)、ICMP、ARP(虽然ARP常被归在2.5层,但逻辑上服务于网络层)
主要设备网桥(Bridge)、交换机(Switch)路由器(Router)、三层交换机(当它做路由时)
主要解决的问题“我如何把这一帧数据从A设备发到同一个网络中的B设备?”
(即:相邻节点间的传输)
“我的数据报应该如何从源主机到达目的主机,中间经过哪些路由器?”
(即:端到端路径选择)
是否提供差错恢复仅检错(通过FCS帧校验序列),丢弃错帧,一般不重传(由上层如TCP负责)不提供可靠传输(IP协议是无连接的、尽力而为的),不重传,只计算头部校验和
典型封装关系将IP数据报封装为帧的数据部分将TCP/UDP报文段封装为IP数据报的数据部分

常见易混淆点澄清

  1. 交换机(Switch)是数据链路层设备,路由器(Router)是网络层设备

    • 交换机根据MAC地址表转发帧,不关心IP地址。

    • 路由器根据IP路由表转发数据报,不关心MAC地址(但会通过ARP获取下一跳的MAC)。

  2. ARP(地址解析协议)到底属于哪一层?

    • 从功能上看,ARP用于将IP地址解析为MAC地址,服务于网络层。但从封装上看,ARP报文不经过IP层,而是直接被封装在数据链路层帧中。所以常称它为“2.5层协议”。

  3. “可靠传输”分别由谁负责?

    • 数据链路层不保证可靠交付(以太网只是尽力而为)。

    • 网络层的IP协议也是不可靠的。

    • 真正的可靠传输通常由传输层(TCP)提供,通过重传、确认等机制。

认识以太网

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

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

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

以太网的帧格式如下所示

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

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

• 帧末尾是 CRC 校验码。

认识 MAC 地址

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

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

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

对比理解 MAC 地址和 IP 地址

• IP 地址描述的是路途总体的 起点 和 终点;

• MAC 地址描述的是路途上的每一个区间的起点和终点

对比维度MAC 地址(介质访问控制地址)IP 地址(互联网协议地址)
所属层级数据链路层(Layer 2)网络层(Layer 3)
别称物理地址、硬件地址逻辑地址
长度与格式48 位(6 字节),通常写成 12 个十六进制数,如00:1A:2B:3C:4D:5EIPv4:32 位(4 字节),点分十进制如192.168.1.1
IPv6:128 位,冒号十六进制如2001:0db8::1
分配方式由 IEEE 统一分配给网卡制造商,制造商烧录在网卡 ROM 中由网络管理员或 DHCP 服务器动态/静态分配,或由系统自动生成(如本地链路地址)
唯一性范围全球唯一(理论上每张网卡的 MAC 地址都不同)网络范围内唯一(同一个 IP 网络内不能冲突,但不同网络可以使用相同私有 IP)
是否可变通常不可变(硬件固化),但可通过软件修改(MAC 欺骗)可变(可随时手动更改或自动获取新地址)
主要作用在同一个局域网/广播域内唯一标识一个网络接口,用于二层帧交换跨网络(互联网)中标识主机位置,用于三层路由与寻址
层次结构扁平结构:前 24 位(OUI)表示制造商,后 24 位是制造商分配的唯一编号层次结构:网络部分(前缀)+ 主机部分,支持路由聚合
地址解析无需解析,MAC 地址直接出现在链路层帧头中需要通过 ARP(IPv4)或 NDP(IPv6)将 IP 地址解析为 MAC 地址
通信范围仅在同一广播域(如同一交换机下的 VLAN)有效全球路由(公网 IP),或用于私有网络(私有 IP)
典型使用场景交换机根据 MAC 地址表转发帧;局域网内通信路由器根据 IP 路由表转发数据报;互联网任意两点通信

为什么需要两个地址?

MAC 地址解决的是“最后一跳”的问题:数据通过路由器到达目标局域网后,如何精确地送到那台具体的机器?交换机根据 MAC 地址完成这一任务。

IP 地址解决的是“长途导航”的问题:数据从源主机出发,经过无数路由器,如何一步步接近目标网络?路由器根据 IP 地址完成路由。

  • 分工明确:IP 地址负责“去哪”(定位网络),MAC 地址负责“是谁”(标识设备)。

  • 独立演进:IP 地址可以改,不依赖硬件;MAC 地址固定,保证链路层交换稳定。

实际协作示例(发送一个 HTTP 请求)

  1. 你的电脑知道目标服务器的 IP 地址(比如93.184.216.34),但不知道它的 MAC 地址。

  2. 操作系统查找路由表,发现需要先发给默认网关(路由器)。

  3. 通过 ARP 协议获得默认网关的 MAC 地址(gateway-mac)。

  4. 网络层构造 IP 数据报:源 IP192.168.1.2,目的 IP93.184.216.34

  5. 数据链路层构造帧:源 MACyour-pc-mac,目的 MACgateway-mac

  6. 交换机根据目的 MAC 把帧转发给路由器。

  7. 路由器剥掉帧头,查看 IP 目的地址,决定下一跳,重新封装新的帧(源 MAC 变成路由器出口的 MAC,目的 MAC 变成下一跳设备的 MAC),如此反复直到到达最终服务器所在局域网。

  8. 最后,服务器所在局域网的交换机根据 ARP 缓存,找到服务器的 MAC 地址,把帧递交给服务器。

认识 MTU

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

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

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

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

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

MTU 对 IP 协议的影响

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

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

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

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

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

• 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是 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 的关系

查看硬件地址和 MT

使用 ifconfig 命令, 即可查看 ip 地址, mac 地址, 和 MTU;

ARP 协议

虽然我们在这里介绍 ARP 协议, 但是需要强调, ARP 不是一个单纯的数据链路层的协 议, 而是一个介于数据链路层和网络层之间的协议;

ARP 协议的作用

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

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

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

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

ARP 协议的工作流程

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

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

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

想一想,为什么要有缓存表?

核心原因:避免重复发送广播请求,提高网络效率。

  • 如果没有缓存表:每次主机 A 要向同一局域网内的主机 B 发送 IP 数据报,A 都必须广播一个 ARP 请求(“谁有 IP 地址 X?请告诉我你的 MAC 地址”)。局域网内的所有主机都会收到这个广播,造成不必要的网络流量和 CPU 中断。

  • 有了缓存表:当 A 第一次解析到 B 的 MAC 地址后,就把(B的IP, B的MAC)这对映射记录在本地缓存中。后续再向 B 发送数据时,直接查表拿到 MAC 地址,无需再次广播。这极大地减少了广播帧的数量,尤其在大型局域网中效果显著。

为什么表项要有过期时间而不是一直有效?

核心原因:网络环境是动态变化的,映射关系随时可能失效。

  • IP 地址可以动态变化:DHCP 服务器可能给一台主机重新分配不同的 IP 地址;或者一台主机被关闭,它的 IP 被另一台主机接管。如果缓存表项永远有效,A 还使用旧的 MAC 地址去通信,就会失败。

  • 网卡可以被更换:一台设备换了一块新网卡(MAC 地址改变),但 IP 地址可能保持不变。缓存中的旧 MAC 地址不再有效。

  • 设备可能离开网络:笔记本电脑从一个子网移动到另一个子网(虽然跨子网不会触发 ARP,但在同一个子网内移动 IP 也可能变化)。

  • 避免过时信息累积:让表项定期过期(例如 Linux 默认为 60 秒,Windows 为 15~45 秒),可以强制主机重新通过 ARP 确认映射关系,保证数据的准确性。

  • 平衡效率与准确性:过期时间既不能太短(否则频繁广播,降低效率),也不能太长(无法及时反映变化)。典型的 ARP 缓存超时设置为几十秒到几分钟。

再想一想, 结合我们刚才讲的工作流程, ARP 的数据报应该是一个什么样的格式?

ARP 报文整体结构(IPv4 + 以太网)

字段名称长度(字节)含义与取值(以你的例子说明)
硬件类型2物理网络类型,以太网 = 1
协议类型2上层协议,IPv4 = 0x0800
硬件地址长度1MAC地址长度,以太网 = 6
协议地址长度1IP地址长度,IPv4 = 4
操作码 (op)21 = ARP 请求,2 = ARP 应答
发送端 MAC 地址6源主机的 MAC 地址(如 A 的 MAC)
发送端 IP 地址4源主机的 IP 地址(如 A 的 IP:172.20.1.1)
目标 MAC 地址6请求中填 0(未知),应答中填 B 的 MAC
目标 IP 地址4想要解析的目标 IP 地址(如 B 的 IP:172.20.1.2)

二、结合例子(主机A请求主机B的MAC)

1、 ARP 请求包(广播)

  • 操作码 = 1

  • 发送端 MAC =08:00:20:74:CE:EC(主机A的MAC)

  • 发送端 IP =172.20.1.1

  • 目标 MAC =00:00:00:00:00:00(全0,表示未知)

  • 目标 IP =172.20.1.2

封装在以太网帧中

  • 目的MAC地址 =FF:FF:FF:FF:FF:FF(广播)

  • 源MAC地址 = 主机A的MAC

  • 以太类型 =0x0806

2、ARP 应答包(单播)

  • 操作码 = 2

  • 发送端 MAC =08:00:20:74:CE:EC(主机B的MAC,注意这里是B的MAC)

  • 发送端 IP =172.20.1.2

  • 目标 MAC = 主机A的MAC(从请求中的发送端MAC拷贝过来)

  • 目标 IP =172.20.1.1

封装在以太网帧中

  • 目的MAC地址 = 主机A的MAC(单播)

  • 源MAC地址 = 主机B的MAC

  • 以太类型 =0x0806

注意:

  • ARP 请求:目标MAC字段为0,以太网帧的目标地址为广播地址。

  • ARP 应答:所有地址字段都填满,以太网帧的目标地址为请求方的单播MAC。

  • 为什么请求中目标MAC是0:因为发起请求时还不知道对方的MAC,所以先填空,由接收方填写后返回。

  • 为什么不直接用IP地址通信:数据链路层(交换机、网卡)只认MAC地址,所以必须解析。

ARP 数据报的格式

字段名称长度(字节)含义与取值(以你的例子说明)
硬件类型2物理网络类型,以太网 = 1
协议类型2上层协议,IPv4 = 0x0800
硬件地址长度1MAC地址长度,以太网 = 6
协议地址长度1IP地址长度,IPv4 = 4
操作码 (op)21 = ARP 请求,2 = ARP 应答
发送端 MAC 地址6源主机的 MAC 地址(如 A 的 MAC)
发送端 IP 地址4源主机的 IP 地址(如 A 的 IP:172.20.1.1)
目标 MAC 地址6请求中填 0(未知),应答中填 B 的 MAC
目标 IP 地址4想要解析的目标 IP 地址(如 B 的 IP:172.20.1.2)

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

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

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

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

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

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

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

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

立即咨询