从数据链路到神秘的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 ...
随机推荐
- 题解 CF1292A
题目大意: 给你 \(2\times n\) 的迷宫,初始时没有任何障碍,给定 \(q\) 次询问,每次询问给予坐标 \((x,y)\),问将坐标 \((x,y)\) 反转状态(即无障碍变有障碍,有障 ...
- GitHub Actions 入门指南
前言 GitHub Actions 可以构建一组自动化的工作流程,并提供了拉取请求.合并分支等事件来触发他们.一般成熟的开源项目会在每个版本发布时提供 releases ,它就是通过 Actions ...
- 使用 Proxychains 代理联网
前言 Proxychains 是 Linux 系统中一款简单好用的代理工具,可以指定特定命令走代理进行网络请求,适用于比较特殊的网络环境.最新版本为 proxychains4 安装 由于此软件存在于自 ...
- Java的四种内部类(成员内部变量,静态内部变量,局部内部类,匿名内部类)
内部类 内部类就是在一个内的内部再定义一个内 内部类的分类:成员内部类,静态内部类,局部内部类,匿名内部类 (1)成员内部类 指类中的一个普通成员,可以定义成员属性,成员方法 内部类是可以访问外部类的 ...
- 单元测试框架pytest
1.什么是pytest pytest是一个非常成熟的全功能的Python测试框架,主要有以下特点: 简单灵活,容易上手,文档丰富 支持参数化,可以细粒度地控制要测试的测试用例 能够支持简单的单元测试和 ...
- 手把手教你用python做一个年会抽奖系统
引言 马上就要举行年会抽奖了,我们都不知道是否有人能够中奖.我觉得无聊的时候可以尝试自己写一个抽奖系统,主要是为了娱乐.现在人工智能这么方便,写一个简单的代码不是一件困难的事情.今天我想和大家一起构建 ...
- 万界星空科技QMS质量管理系统
QMS(Quality Management System)质量管理系统是五大基础系统之一,在工业企业中被广泛的应用,在质量策划.生产过程质量监督.体系审核和文档管理等业务上发挥着不可替代的作用. 一 ...
- springboot--ActiveMQ--消息队列
ActiveMQ远程消息队列 一.我们创建springboot项目工程 二.创建完毕我们简单介绍 activeMQ 1.概述 消息中间件可以理解成就是一个服务软件,保存信息的容器,比如生活中的快递云柜 ...
- 6.elasticsearch中search template和alias
什么是search template 顾名思义,查询模版,就是提前设定好查询的DSL,再次查询时,只需要指定对应的模版,然后传入相应的参数就好.一是可以每次不用构建复杂的DSL,二是可以供开发直接使用 ...
- 使用 PostgreSQL 实现 PageRank
PageRank 算法 作为 Google 最早的一个网页排名算法,该算法在早期的搜索引擎中是搜索结果最为准确的,同时也是 Google 发家的一个重要算法.尽管这些年来该算法不再是 Google ...