从数据链路到神秘的MAC地址和ARP协议

2023年 10月 1日 56.8k 0

引言

链路是指从一个结点到相邻结点的一段物理线路。数据链路是在链路的基础上增加了一些必要的硬件和软件。这些硬件包括网络适配器,而软件则包括协议的实现。在网络中,主机、路由器等设备都必须实现数据链路层。

image

在局域网中,主机、交换机等网络设备都必须实现数据链路层,以便实现数据的可靠传输和交换。

image

从层次上来看,数据在网络中的流动可以被划分为不同的层次,其中数据链路层是其中的一层。数据链路层位于网络协议栈的较低层,负责将数据包封装为帧,并通过物理介质进行传输。

image

仅从数据链路层的角度来观察,数据帧的流动可以被定义为在网络中不同节点之间传输的数据单元。

image

主机H1到主机H2所经过的网络可能涉及多种不同类型的链路层,而不同的链路层可能采用各自不同的数据链路层协议。因此,在数据在网络中流动的过程中,数据链路层起到了至关重要的作用,它负责管理和控制数据在不同链路层之间的传输,并确保数据的可靠性、完整性和有序性。

MAC地址和ARP协议

MAC 地址

MAC地址的全称是媒体访问控制地址(Media Access Control Address),它是网络上以太网或网络适配器的唯一标识符。MAC地址可以区分不同的网络接口,并且被广泛应用于各种网络技术,特别是大多数IEEE 802网络。

MAC地址也被称为物理地址、硬件地址和老化地址。

MAC地址主要用于识别数据链路中互联的节点。如下图所示

image

MAC 地址是一个长度为 48 位的标识符,通常在使用网络适配器(网卡)时会被存储在只读存储器(ROM)中。因此,每个网卡的 MAC 地址都是独一无二的。MAC 地址的结构如下:

image

在MAC地址中,3-24位表示制造商识别码,每个网络接口卡制造商都有一个唯一的识别数字。25-48位用于制造商内部识别每个网卡。因此,可以确保全球没有相同的MAC地址的网卡。

尽管如此,MAC地址也有一些例外情况,即可能会出现重复的情况。然而,只要两个MAC地址属于不同的数据链路层,就不会出现问题。

在Windows电脑上,当你查看ipconfig时,你会看到每个网络接口都有一个对应的MAC物理地址。这是因为现代计算机通常具备多个网络接口,每个网络接口都对应一个MAC物理地址。

例如,你的Windows电脑可能同时连接有以太网、Wi-Fi和蓝牙等多个网络接口。每个网络接口都有自己的MAC物理地址,用于标识该接口所属的设备。

如果你的计算机有多个网络接口(如以太网和Wi-Fi接口),你可能需要查看对应接口的MAC地址。确保你查看的是你感兴趣的网络接口的MAC地址。

ARP 是什么

ARP 协议的全称是Address Resolution Protocol(地址解析协议),它是一种用于实现从IP地址到MAC地址的映射的协议。其作用是通过查询目标IP对应的MAC地址来定位数据分包的接收主机。在IPv4中,ARP协议显得尤为重要。

需要注意的是,ARP仅用于IPv4协议,而IPv6协议使用的是邻居发现协议(Neighbor Discovery Protocol,简称NDP),它被纳入了ICMPv6中。

简而言之,ARP是一种解决地址问题的协议,以IP地址为线索,定位下一个应该接收数据分包的主机MAC地址。如果目标主机不在同一个链路上,那么会查找下一跳路由器的MAC地址。

ARP 的⼯作机制

让我们来探讨一下 Address Resolution Protocol (ARP) 的工作机制。假设主机 A 和主机 B 位于同一链路上,无需经过路由器转发。当主机 A 想要向主机 B 发送一个 IP 分组时,主机 A 的 IP 地址是 192.168.1.2,主机 B 的 IP 地址是 192.168.1.3。此时,它们都不知道对方的 MAC 地址是什么。此外,主机 C 和主机 D 是同一链路上的其他主机。

image

为了获取主机 B 的 MAC 地址,主机 A 将发送一个 ARP 请求包到以太网上的所有主机,该请求包包含了主机 A 想要了解的主机 B 的 IP 地址对应的 MAC 地址。这个 ARP 请求包将通过广播的方式发送。

image

当主机 A 发送的 ARP 请求包在同一链路上被接收并解析时,每个主机/路由器都会检查 ARP 请求包中的信息。如果 ARP 请求包中的目标 IP 地址与自己的相同,它们会将自己主机的 MAC 地址写入响应包中,并返回给主机 A。

image

由此,可以通过地址解析协议(ARP)从指定的IP地址获取相应的MAC地址,从而实现在同一链路上的通信。

总结

本文主要介绍了数据链路层的概念和作用,以及MAC地址和ARP协议的相关知识。

数据链路层是网络协议栈中的一层,负责将数据包封装为帧,并通过物理介质进行传输。在局域网中,主机、交换机等网络设备都必须实现数据链路层,以实现数据的可靠传输和交换。

MAC地址是网络上以太网或网络适配器的唯一标识符,用于识别数据链路中互联的节点。MAC地址的结构包括制造商识别码和制造商内部识别码,保证了全球没有相同的MAC地址的网卡。

ARP协议是一种用于实现从IP地址到MAC地址的映射的协议。它通过查询目标IP对应的MAC地址来定位数据分包的接收主机。ARP仅用于IPv4协议,IPv6协议使用邻居发现协议。

ARP的工作机制包括发送ARP请求包到当前以太网上的所有主机,其他主机/路由器通过检查ARP请求包中的信息来回复自己的MAC地址,从而实现在同一链路上的通信。

综上所述,数据链路层在网络中起到了重要作用,而MAC地址和ARP协议是实现数据链路层功能的重要组成部分。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论