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

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

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

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

主机H1到主机H2所经过的网络可能涉及多种不同类型的链路层,而不同的链路层可能采用各自不同的数据链路层协议。因此,在数据在网络中流动的过程中,数据链路层起到了至关重要的作用,它负责管理和控制数据在不同链路层之间的传输,并确保数据的可靠性、完整性和有序性。
MAC地址和ARP协议
MAC 地址
MAC地址的全称是媒体访问控制地址(Media Access Control Address),它是网络上以太网或网络适配器的唯一标识符。MAC地址可以区分不同的网络接口,并且被广泛应用于各种网络技术,特别是大多数IEEE 802网络。
MAC地址也被称为物理地址、硬件地址和老化地址。
MAC地址主要用于识别数据链路中互联的节点。如下图所示

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

在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 是同一链路上的其他主机。

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

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

由此,可以通过地址解析协议(ARP)从指定的IP地址获取相应的MAC地址,从而实现在同一链路上的通信。
总结
本文主要介绍了数据链路层的概念和作用,以及MAC地址和ARP协议的相关知识。
数据链路层是网络协议栈中的一层,负责将数据包封装为帧,并通过物理介质进行传输。在局域网中,主机、交换机等网络设备都必须实现数据链路层,以实现数据的可靠传输和交换。
MAC地址是网络上以太网或网络适配器的唯一标识符,用于识别数据链路中互联的节点。MAC地址的结构包括制造商识别码和制造商内部识别码,保证了全球没有相同的MAC地址的网卡。
ARP协议是一种用于实现从IP地址到MAC地址的映射的协议。它通过查询目标IP对应的MAC地址来定位数据分包的接收主机。ARP仅用于IPv4协议,IPv6协议使用邻居发现协议。
ARP的工作机制包括发送ARP请求包到当前以太网上的所有主机,其他主机/路由器通过检查ARP请求包中的信息来回复自己的MAC地址,从而实现在同一链路上的通信。
综上所述,数据链路层在网络中起到了重要作用,而MAC地址和ARP协议是实现数据链路层功能的重要组成部分。
从数据链路到神秘的MAC地址和ARP协议的更多相关文章
- ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者
[故障原理] 要了解故障原理,我们先来了解一下ARP协议. 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议对网络安全具有重要的意义.通过伪造IP地址和M ...
- 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想体验服务的时候 ...
- IP地址、MAC地址、ARP地址解析协议
互联网中一台主机要和另一台主机实现通信首先需要知道彼此在互联网中的位置,主机在互联网中的位置是通过ip地址标记的,当找到ip地址后,再通过端口号标识运行在主机中的进程从而实现通信. IP地址: IP地 ...
- MAC地址与IP地址的区别
介绍一下MAC地址的知识,MAC地址和IP地址的区别以及MAC地址在实际应用中所涉及到的安全问题. 一.基础知识 如今的网络是分层来实现的,就像是搭积木一样,先设计某个特定功能的模块,然后把模块拼起来 ...
- 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?
1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步 ...
- IP地址和MAC地址绑定的必要性
计算机网络是一个共通的网络,世界上任何计算机都可以互相访问. 实现的原理基于网络通讯的互联网交互五层模型. 计算机网络的历史发展 当计算机网络技术初始利用的时代,几台计算机通过集线器连接,就可以实现网 ...
- MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理
在网上找到了这篇讲述MAC地址,ARP协议和路由表的文章,如获至宝.一篇文章把组网中的相关概念讲的明明白白. 原文是发布在51cto博客上,但不知道为什么点进去却是404.让我没想到的是这个技术论坛上 ...
- mac地址学习笔记
MAC(Media Access Control或者Medium Access Control)地址, 意译为媒体访问控制,或称为物理地址.硬件地址,用来定义网络设备的位置. 在OSI模型中,第三层网 ...
- 根据IP查主机名和MAC地址
根据IP查主机名: nbtstat -a XXX.XXX.XXX.XXX根据IP查MAC地址: arp -a XXX.XXX.XXX.XXXXXX.XXX.XXX.XXX指代要查的主机的IP
- 为什么同时需要IP地址和MAC地址
每个以太网设备在出厂时都有一个唯一的MAC地址,为什么还需要为每台主机再分配一个IP地址?或者说每台主机都分配唯一的IP地址,为什么还要在网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC ...
随机推荐
- 多数元素 (3.12 leetcode每日打卡)
给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [3,2,3] ...
- 暴力+分治+贪心+DP:最大子序列和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 ...
- 【主流技术】详解 Spring Boot 2.7.x 集成 ElasticSearch7.x 全过程(二)
目录 前言 一.添加依赖 二. yml 配置 三.注入依赖 四.CRUD 常用 API ES 实体类 documents 操作 常见条件查询(重点) 分页查询 排序 构造查询 测试调用 五.文章小结 ...
- 在ASP.NET Core 中使用 .NET Aspire 消息传递组件
前言 云原生应用程序通常需要可扩展的消息传递解决方案,以提供消息队列.主题和订阅等功能..NET Aspire 组件简化了连接到各种消息传递提供程序(例如 Azure 服务总线)的过程.在本教程中,小 ...
- [OpenWrt]软路由H28K开启USB无线教程
0x01 背景 H28K软路由带了一个USB2.0的接口,官方说是支持USB无线的:于是就网购了USB转WIFI的设备(芯片:RTL8811CU),拿到手后开心的插上去,发现没有任何反应:在Q裙中询问 ...
- 【Javaweb】Servlet六 | HttpServletRequest类的含义及其使用方法【详解】
HttpServletRequest类的作用 每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的Http协议信息解析好封装到Request对象中.然后传递到Service方法(d ...
- Maven安装与配置【idea2022版本】
一.maven下载 https://maven.apache.org/download.cgi 下载完毕后解压,注意解压路径不要有中文 二.环境变量 在环境变量Path里面新建(自己的maven的bi ...
- IDEA提示Cannot resolve symbol 'String'
一.解决方案: 1.问题原因: 系统提示Cannot resolve symbol 'String',是由于没有正确导入JDK : 2.解决方案: 在project SDK中正确配置即可. 二.完成. ...
- 深入了解UUID:生成、应用与优势
一.引言 在当今数字化时代,唯一标识一个对象的能力变得越来越重要.UUID(Universally Unique Identifier,通用唯一标识符)应运而生,作为一种保证全球唯一性的标识方法,广泛 ...
- [ABC272G] Yet Another mod M
Problem Statement You are given a sequence $A=(A_1,A_2,\dots,A_N)$ of length $N$ consisting of posit ...