既然有了IP地址,为什么还需要MAC地址?两者到底有啥区别,深入分析后终于明白了!

news2025/1/8 12:35:04

在计算机网络中,IP地址和MAC地址是两个最基本的概念。IP地址在互联网中是用于标识主机的逻辑地址,而MAC地址则是用于标识网卡的物理地址。虽然它们都是用于标识一个设备的地址,但是它们的作用和使用场景是不同的。

IP地址是在网络层(OSI模型中的第三层)使用的,它是一个动态分配且具有结构化特性的地址,可以实现跨网络的通信和路由。

MAC地址是在数据链路层(OSI模型中的第二层)使用的,它是一个固定且扁平化的地址,可以实现局域网内部的寻址和数据传输。

因此,在网络通信中,使用IP地址和MAC地址这两种不同类型的地址是非常必要的。

IP地址和MAC地址的定义和格式

IP地址

IPInternet Protocol)是互联网协议的简称,它是一种规定了网络设备如何在互联网上进行通信的协议。IP协议定义了一种逻辑地址,即IP地址,用于在互联网上唯一标识一个网络设备。

IP协议目前有两个版本,分别是IPv4IPv6

IPv4Internet Protocol version 4)是目前最广泛使用的IP协议版本,它使用32位二进制数来表示一个IP地址,通常以点分十进制形式来显示,例如192.168.1.1。

一个IPv4地址由两部分组成:网络号主机号

  • 网络号表示该设备所属的网络,
  • 主机号表示该设备在该网络中的编号。

不同长度的网络号可以划分出不同等级的网络,例如A类、B类、C类等。为了方便表示不同长度的网络号,IPv4引入了子网掩码(subnet mask)的概念,它是一个32位二进制数,其中与网络号对应的位为1,与主机号对应的位为0。例如255.255.255.0就是一个子网掩码,表示前24位为网络号,后8位为主机号。

IPv6Internet Protocol version 6)是为了解决IPv4地址耗尽问题而设计的新一代IP协议版本,它使用128位二进制数来表示一个IP地址,通常以冒分十六进制形式来显示,例如2001:db8::1。

一个IPv6地址由两部分组成:前缀接口标识符

  • 前缀表示该设备所属的网络或子网,
  • 接口标识符表示该设备在该网络或子网中的编号。

IPv6没有固定长度的网络号或主机号,而是使用前缀长度(prefix length)来表示前缀占用多少位。例如2001:db8::1/64就表示前64位为前缀,后64位为接口标识符。

MAC地址

MACMedia Access Control)是媒体访问控制的简称,它是一种规定了数据链路层如何访问物理媒介(如电缆、光纤等)进行数据传输的协议。MAC协议定义了一种物理地址,即MAC地址,用于在局域网内部唯一标识一个网卡或其他网络设备。MAC协议有多种类型,其中最常见的一种是以太网(Ethernet)协议。

以太网协议使用48位二进制数来表示一个MAC地址,通常以冒分十六进制形式来显示,例如00-16-EA-AE-3C-40。一个以太网MAC地址由两部分组成:OUI和NICI。

  • OUI(Organizationally Unique Identifier)是组织唯一标识符,占用前24位,表示该网卡或其他网络设备的制造商编号。
  • NICI(Network Interface Card Identifier)是网卡标识符,占用后24位,表示该制造商分配给该网卡或其他网络设备的序列号。

因此,一个以太网MAC地址可以唯一地标识一个网卡或其他网络设备,并且不能被更改。

IP地址和MAC地址的工作原理和过程

IP地址

IP协议工作在网络层(OSI模型中的第三层),它负责将数据封装成数据包(packet),并根据目标IP地址进行路由选择和转发。当一个主机要发送数据给另一个主机时,它需要知道目标主机的IP地址,并将其写入数据包头部。然后根据路由表(routing table),选择合适的下一跳(next hop),也就是下一个转发该数据包的路由器或其他网络设备,并将数据包发送出去。

当数据包到达下一跳时,下一跳会根据自己的路由表再次选择合适的下一跳,并将数据包转发出去。这个过程会重复多次,直到数据包到达目标主机所在的局域网为止。在这个过程中,每个路由器或其他网络设备只需要知道下一跳的IP地址,并不需要知道目标主机或其他中间节点的具体位置或物理连接方式。

MAC地址

MAC协议工作在数据链路层(OSI模型中的第二层),它负责将数据封装成帧(frame),并根据目标MAC地址进行寻址和传输。当一个主机要发送数据给另一个主机时,它需要知道目标主机的MAC地址,并将其写入帧头部。然后根据物理媒介(如电缆、光纤等)的特性,将帧发送出去。

当帧到达目标主机所在的局域网时,局域网内的所有设备都会接收到该帧,并根据帧头部的目标MAC地址判断是否是自己。如果是自己,则接收该帧,并将其解封装成数据包,交给网络层处理。如果不是自己,则丢弃该帧。在这个过程中,每个设备只需要知道与自己直连的设备的MAC地址,并不需要知道目标主机或其他中间节点的逻辑位置或网络连接方式。

那么,一个主机如何获取另一个主机的MAC地址呢?

这就需要用到ARPAddress Resolution Protocol)协议,它是一种用于根据IP地址获取MAC地址的协议。ARP协议的工作原理和过程如下:

  • 当一个主机要发送数据给另一个主机时,首先会检查自己的ARP缓存表(ARP cache),看是否已经有目标主机的IP地址和MAC地址的对应关系。如果有,则直接使用该MAC地址封装帧并发送出去。
  • 如果没有,则需要发起ARP请求(ARP request),向局域网内广播一个特殊的帧,其中包含了自己的IP地址和MAC地址,以及目标主机的IP地址。该帧的目标MAC地址为广播地址FF-FF-FF-FF-FF-FF,表示所有设备都要接收该帧。
  • 局域网内的所有设备都会收到该ARP请求帧,并根据其中的目标IP地址判断是否是自己。如果不是自己,则丢弃该帧,并且将发送者的IP地址和MAC地址加入自己的ARP缓存表中。如果是自己,则回复一个ARP应答(ARP reply),向发送者单播一个特殊的帧,其中包含了自己的IP地址和MAC地址,以及发送者的IP地址。该帧的目标MAC地址为发送者的MAC地址。
  • 发送者收到该ARP应答帧后,就知道了目标主机的MAC地址,并将其加入自己的ARP缓存表中。然后就可以使用该MAC地址封装帧并发送出去。

当一个主机要发送数据给另一个主机时,如果目标主机与自己在同一局域网内,那么就可以直接使用ARP协议获取目标主机的MAC地址,并将其封装在帧中发送出去。但是,如果目标主机与自己不在同一局域网内,那么就需要经过路由器的转发。这时候,就需要知道路由器的MAC地址,而不是目标主机的MAC地址。下面我们用一个例子来说明这种情况下的工作过程。

假设有如下拓扑:

其中:

  • 主机A:IP为10.0.0.1,MAC为00-16-EA-AE-3C-40
  • 主机B:IP为10.0.0.2,MAC为00-16-EA-AE-3C-41
  • 主机C:IP为10.0.0.3,MAC为00-16-EA-AE-3C-42
  • 路由器R1:Fa0/0接口IP为10.0.0.254,MAC为00-16-EA-AE-3C-43
  • 路由器R2:Fa0/0接口IP为10.1.0.254,MAC为00-16-EA-AE-3C-44
  • 服务器S:IP为10.1.0.1,MAC为00-16-EA-AE-3C-45

现在假设主机A要向服务器S发送数据包,完整过程如下:

1)主机A发现目标IP与自己不在同一网段,需要经过路由器转发

2)查路由表获得R1的IP地址及出接口(从哪个网卡发出),查ARP表无对应条目

3)发起ARP请求,目的IP为R1,目的MAC为广播MAC(FF:FF:FF:FF:FF:FF),源IP和源MAC为主机A网卡的IP和MAC

4)R1收到ARP请求,将主机A的IP和MAC加入自己的ARP缓存表,用自身IP和MAC响应主机A的ARP请求

5)主机A收到ARP响应,将R1的IP和MAC加入自己的ARP缓存表,用自身IP和MAC为源,服务器S的IP和R1的MAC为目的,封装数据帧,并将其转发给R1(此时数据帧源IP为主机A,目的IP为服务器S,源MAC为主机A,目的MAC为R1)

6)R1收到数据帧,根据目的IP查路由表,发现需要R2转发,查ARP表,无对应条目。以自身IP和MAC为源,目的IP为R2,目的MAC为广播发送ARP请求,并将来自主机A的数据帧丢弃。

7)R2收到ARP请求,将R1的IP和MAC加入自己的ARP缓存表,用自身IP和MAC响应主机R2的ARP请求。

8)R1收到ARP响应,将R2的IP和MAC加入自己的ARP缓存表

9)主机A发现超时,重发数据帧

10)R1收到数据帧,查路由表,须经R2转发,查ARP表,获得R2的MAC地址。将数据帧的源MAC修改为自身,目的MAC修改为R2,并将数据帧转发给R2(此时数据帧源IP为主机A,目的IP为服务器S,源MAC为R1,目的MAC为R2)

11)R2收到数据帧,根据目的IP查路由表,发现目标主机与自己在同一网段,查ARP表,无对应条目。以自身IP和MAC为源,目的IP为服务器S,目的MAC为广播发送ARP请求,并将来自R1的数据帧丢弃。

12)服务器S收到ARP请求,将R2的IP和MAC加入自己的ARP缓存表,用自身IP和MAC响应主机R2的ARP请求。

13)R2收到ARP响应,将服务器S的IP和MAC加入自己的ARP缓存表

14)主机A发现超时,重发数据帧

15)R1收到数据帧,查路由表,须经R2转发,查ARP表,获得R2的MAC地址。将数据帧的源MAC修改为自身,目的MAC修改为R2,并将数据帧转发给R2

16)R2收到数据帧,查路由表,须经服务器S转发,查ARP表,获得服务器S的MAC地址。将数据帧的源MAC修改为自身,目的MAC修改为服务器S,并将数据帧转发给服务器S(此时数据帧源IP为主机A,目的IP为服务器S,源MAC为R2,

IP地址和MAC地址区别

尽管IP地址和MAC地址都是用来标识网络中的设备,它们的本质和作用却有很大的区别。下面是两者的主要区别:

  1. 定义:IP地址是用来标识网络上的设备,MAC地址是用来标识网络适配器(NIC)的。
  2. 唯一性:IP地址在网络中是具有唯一性的,但是在全球范围内会有重复的情况。而MAC地址是在全球范围内都是唯一的。
  3. 分配方式:IP地址由ISP分配,而MAC地址是由网络适配器(NIC)制造商分配。
  4. 使用场景:IP地址是用来实现Internet上的数据传输,而MAC地址是用来实现局域网内的数据传输。
  5. 长度:IP地址是32位二进制数,而MAC地址是48位二进制数。

另外,还有一些其他的区别:

  1. IP地址可以更改,而MAC地址无法更改。
  2. IP地址是分级和分段的,可以根据网络的需求进行调整。而MAC地址是固定的,无法调整。
  3. IP地址可以有多个,而MAC地址只有一个。
  4. IP地址可以动态分配,而MAC地址一般都是静态分配。

总结

IP地址和MAC地址是计算机网络中非常重要的概念。尽管它们有着不同的作用和范围,但是它们之间存在着密切的关联。在网络通信中,IP地址和MAC地址都起着至关重要的作用。因此,学习和了解IP地址和MAC地址对于理解和解决网络通信问题非常重要。同时,了解IP地址和MAC地址也有助于我们更好地保护网络安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/561950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下安装搭建MQTT服务器

服务器常用的有emqx,还有apache apolle,这里用的是emqx 服务端以及客户端可以使用MQTTnet(NuGet包) 一、MQTT服务器( emqx )搭建 1. 下载服务器MQTT Broker 从 https://www.emqx.io/cn/mqtt/public-mqtt5-broker下载…

Wi-Fi 6为啥那么快?

Wi-Fi 6(802.11ax)是当前最新的无线局域网标准,它带来了许多重要的改进和性能提升。本文将详细介绍Wi-Fi 6的速度和性能,以及与前一代标准相比的差异。 Wi-Fi 6的速度提升 相比于前一代标准(Wi-Fi 5或802.11ac&#x…

fNIRS最新研究 | 脑间和脑内耦合对运动同步的差异贡献

导读 人类大脑支持行为的一个基本特征是它在脑区之间建立连接的能力。一种有前景的方法认为,在社交行为中,大脑区域不仅与大脑内的其他脑区建立连接,而且还与互动伙伴的其他脑区协调活动。本文探索脑间和脑内耦合是否对运动同步有不同的贡献…

设计模式之【责任链模式】,路铺好了,你走不走?

文章目录 一、什么是责任链模式1、状态模式与责任链模式的区别2、责任链模式使用场景3、责任链模式的优缺点4、责任链模式的角色 二、实例1、责任链模式的一般写法(1)一般写法(2)一般写法-使用建造者模式进阶(3&#x…

nacos配置加载顺序

spring boot 调整日志打印情况 logging:level:com:alibaba:cloud: debug # nacos: debugorg:springframework:context: debugcloud: debug # boot: debug 项目启动时打印了 properties search order:PROPERTIES->JVM->ENV->DEFAULT_SETTING 查看具体代…

股票配资交易系统【实盘】

股票配资系统建设,本文档主要针对实盘股票配资系统。 股票配资交易系统主要包含三部分:App客户端、交易程序服务端、管理后台 App客户端 app客户端是原生应用,非H5生成。客户端主要功能是承接用户的股票订单委托、查询、用户资金转入&#x…

2023.5.12解决Ubuntu中ens33没有ip

在Ubtuntu中的ens33没有ip 如果Ubuntu版本过高 sudo netplan apply如果是Ubuntu 16.04及更早版本 sudo vi /etc/systemd/resolved.conf具体情况如下图所示 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopbac…

java版企业工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

iVX和其它低代码的平台的区别,“低代码/无代码”分三类

前言 这个图非常认真地对整个“低代码”领域做了严格的分类&#xff0c;这个里面并没有把只针对工作流或单纯BI的工具产品划分进去&#xff0c;主要是这一类&#xff0c;在我个人理解里面更像“SaaS”&#xff0c;也就是增强版SaaS产品&#xff0c;这类产品也主要是给业务人员使…

SpringCloud学习-实用篇04

以下内容的代码可见&#xff1a;SpringCloud_learn/day04 1.初始MQ 同步通讯和异步通讯 微服务间通讯有同步和异步两种方式&#xff0c;同步通讯就像打电话需要实时响应&#xff0c;异步通讯就像发邮件不需要马上回复。两种方式各有优劣&#xff0c;比如打电话能立即得到响应&a…

STM8使用pwm接口调试GDS06灰尘传感器

背景 刚好有项目使用GDS06这款传感器&#xff0c;这里简单做个记录。 GDS06接口如下&#xff0c;这里支持串口和PWM的输出到MCU&#xff0c;由于项目采用STM8S003F3P6&#xff0c;资源极其有限。 所以硬件设计的时候&#xff0c;就考虑采用PWM的接口方式&#xff0c;这样只是…

安科瑞有源电力滤波器的设计原理及应用前景

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要&#xff1a;该文介绍了有源电力滤波器的工作原理和基本控制方法&#xff0c;并阐述有源电力滤波器的现状及发展前景等等。 关键词&#xff1a;有源电力滤波器&#xff1b;谐波&#xff1b;工作原理&#xff1b;…

方案绞尽脑汁想不出?试试这款AI代写方案

一份计划方案&#xff0c;往往是工作进行下去的核心环节&#xff0c;需要考虑很多因素和变量&#xff0c;在某些情况下&#xff0c;可能没有足够的信息来制定有效的方案。这可能会导致需要额外的研究和调查&#xff0c;以便了解更多关于问题的信息&#xff0c;这将延长制定方案…

侧边拖拉功能

一、页面 <div class"resize-handle" mousedown"startResizing">⋮</div> 二、js data() {return {showSideBar: true,leftPaneWidth: 63, // 左侧区域的初始宽度isResizing: false, // 标记是否正在调整大小startX: 0, // 调整大小开始时的…

Spring AOP 中的切点是什么?如何定义切点?

Spring AOP 中的切点是什么&#xff1f;如何定义切点&#xff1f; 什么是切点&#xff1f; 在 Spring AOP 中&#xff0c;切点&#xff08;Pointcut&#xff09;是指一组连接点&#xff08;Join Point&#xff09;的集合。连接点是程序执行过程中的某个特定点&#xff0c;例如…

初识SpringMVC -- SpringMVC入门保姆级教程(一)

文章目录 前言一、初识SpringMVC1.认识SpringMVC2.SpringMVC入门案例3.SpringMVC开发的一般步骤4.入门案例涉及的知识点5.入门案例工作流程 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能…

阿里云服务器端口怎么打开?详细教程一步步

阿里云服务器端口怎么打开&#xff1f;云服务器ECS端口在安全组中开启&#xff0c;轻量应用服务器端口在防火墙中打开&#xff0c;新手站长以开通80端口为例来详细说下阿里云服务器端口开放图文教程&#xff0c;其他的端口如8080、3306、443、1433也是同样的方法进行开启端口&a…

双轮云台小车实现追踪彩色目标功能

1. 功能说明 在R216a样机上安装一个摄像头&#xff0c;本文示例将实现双轮小车通过二自由度云台自主寻找彩色目标的功能。 2. 结构说明 R216a样机主要是由一个 双轮小车 和一个 2自由度云台 组合而成。 3. 电子硬件 在这个示例中&#xff0c;我们采用了以下硬件&#xff0c;请大…

CRM系统软件不好用有哪些原因?如何选择?

CRM系统的实施也会出现无法落地使用的情况&#xff0c;让CRM系统软件名存实亡。这不仅仅只是个例&#xff0c;很多企业即使投入了很大成本&#xff0c;也不能让CRM系统真正用起来。CRM系统软件用不起来&#xff0c;可以排查这三个原因&#xff0c;教你解决&#xff01; 1.操作…

简单粗暴实现el-input只允许输入数字

<el-input input"phoneNumberphoneNumber.replace(/[^0-9.]/g,)" v-model"phoneNumber" maxlength"11" > </el-input> 如果加入type"number"&#xff0c;会在输入框右侧出现这个恶心的东西 尽管可以使用样式来屏蔽掉 …