先纠正一下几个比较模糊的概念:“MAC地址表储存IP地址”,
MAC地址表是二层设备中存储“MAC地址”和“转发端口”映射关系的表,并不直接存储IP地址。
“路由器根据MAC地址来选择路由进行数据发送”,对于三层设备的三层端口来说,通常是基于报文目的IP地址,对照自身的路由表来选择转发路径,只有二层设备基于“MAC地址”进行数据帧的转发。
这个问题展开了说比较复杂,但是只考虑基本原理似乎也没有那么麻烦,一句话概括就是“二层基于MAC地址转发数据帧,三层基于IP地址转发报文 ”MAC地址”是烧录在网卡或者接口上的物理地址,具有二层意义和全球唯一性,一般不能被改变。IP地址是网络中的主机或者三层接口在网络中的逻辑地址,在同一个网络内具有唯一性。IP地址和MAC地址的关系要分在二层通信和在三层通信两个部分来说明(其实本质上是一样的)二层以下数据帧的交换一般通过交换机或其他二层设备,需要用到主机间的MAC地址,但是通常主机网卡配置的是IP地址,此时就需要借助“ARP协议”将目标主机的IP地址转换为对应主机的MAC地址才能进行通信,完整过程就是主机依靠IP-MAC的对应关系封装数据帧,二层设备在收到含有目标MAC地址的数据帧后,查看自己的“MAC地址表”,便知道这个MAC地址该从自己的哪个端口发送出去。在windows下可以使用arp -a查看这种对应关系,可以在模拟器上轻松展现整个过程。当PC0和PC1能正常通信时,在PC0上查看ARP表如下:可以看出,到目标主机的IP地址映射为对应的MAC地址了,此时PC0就可以将目标主机的IP地址转换为对应的MAC地址封装在数据帧中发给交换机。交换机有那么多端口,它怎么就知道你发送的这个数据帧的目的地址该从自己的哪个端口转发出去呢?因此,交换机自己还要维护一张“MAC地址表”,用来记录目的MAC地址-端口的映射关系,如下图现在交换机看到0004.9a2e,3ad1的MAC,就知道要从F0/2把数据帧发送出去啦O(∩_∩)O二层数据帧的通信基本原理就是这些,当然这两张表是如何生成的就不是这个话题的讨论范围了,具体可以参考ARP协议的工作过程和交换机的转发原理。二层讨论的都是同一个网络内(IP地址在同一网段)数据的交换,“IP地址和MAC地址的关系很明确”:虽然主机都配置了IP,但从上面的例子可以看出,IP地址实际并不起作用,在生成数据帧的时候就转化为MAC地址了,并不参与实际的通信过程。但是如果要通信的主机不在一个网络内,这时IP地址才真正发挥它的作用。IP数据包在三层网络中的寻址通过路由器和各种路由协议来完成,在这个过程中,IP地址和MAC地址又有什么关系呢?看下面的拓扑现在路由器的两端分别为两个网络。数据想要从PC0到PC1,实际上经历了两个过程,先从主机到路由器的F0/0,再从F1/0口到PC1,单独看每个过程,由于在同一个网段内,所以就和上一种情况是一致的,唯一不同的是此时我们必须配置网关。我们仿照刚才的过程看看PC0的ARP表是什么样的可以看出,数据想从PC0到路由器,依然必须经历从IP地址到MAC地址的转换过程,而这个网关的MAC恰好就是F0/0口的MAC,再看交换机1的MAC地址表:恰好也有对应的端口,此时交换机就知道要把数据从F0/24发送出去,到这里起作用的还是MAC地址,那IP地址到底到哪才发挥真正的作用呢?我们继续往下看,现在查看路由器的路由表:路由器收到数据包后会查看数据包的目的IP字段,我们是发送到192.168.1.1这台主机,看路由表发现正好有这个条目,到192.168.1.0/24要从F1/0这个端口发送出去。后面的过程就不再叙述了和前面基本一致了。也就是说,虽然数据包发送时包含了完整的TCP/IP四层信息,但是IP地址只在网络间寻址才起作用,在同一个网络内,IP地址在发送端被转化为MAC地址进行寻址,而这种转化和交换的对应关系,依赖于ARP协议和MAC地址表。对于上面的例子来说,在PC0到路由器的F0/0之间的网络和F1/0到PC1之间网络,都是MAC地址负责寻址,IP地址只在负责连接两个不同网段的路由器上才发挥指导作用。

作者:Windroid
链接:https://www.zhihu.com/question/49335649/answer/115639556
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

mac地址和ip地址的区别(转)相关推荐

  1. 对于MAC地址的认识,以及MAC地址和IP地址的区别,MAC地址和IP地址各起到什么作用?

    目录 MAC地址的认识 MAC地址与IP地址的异同 有了IP地址为什么还需要MAC地址? 有了MAC地址为什么还需要IP地址? 数据链路上只要知道了对方的MAC地址不是就可以发送数据了吗?为什么还要I ...

  2. mac地址和ip地址有什么区别

    mac地址和ip地址的不同有如下几个方面: 1.名称上的区别 IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写. ...

  3. Mac 地址与 IP 地址有什么区别?

    Mac 地址和 IP 地址是两个不同的概念,它们分别代表了计算机网络中的不同层次和地址.Mac 地址是物理地址,是在计算机硬件中存储的地址,通常是以特定的六进制格式表示.每个设备都有一个唯一的 MAC ...

  4. MAC地址和IP地址的区别,联系和应用范围

    ip地址是服务商给你的,mac地址是你的网卡物理地址 IP地址: 即指使用TCP/IP协议指定给主机的32位地址.IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种 ...

  5. MAC地址,IP地址和ARP协议

    MAC地址 MAC地址在网卡中,硬件地址,又称作物理地址.它位于数据链路层 IP地址 IP地址由两部分构成:网络地址,主机地址 如下,黄色的是网络地址,蓝色的是主机地址 如果不需要因特网,可只使用MA ...

  6. MAC地址与IP地址详解

    IP地址:要实现与对方进行通讯,我们首先得知道对反的IP地址 Mac地址:它在网络通讯中起到了至关重要的作用 两者关系就相当于信封,IP地址相当于收件人,而MAC地址相当于收件地址 两者的区别与联系 ...

  7. android 获取mac c语言,获取设备的mac地址和IP地址(android6.0以上专用)

    /** * 获取设备HardwareAddress地址 * @return */ public static String getMachineHardwareAddress(){ Enumerati ...

  8. 计网链路层mac地址和ip地址缺一不可

    在学习之途有个疑问,为什么要分链路层和网络层,链路层的帧还要包裹网络层的数据包,这难道不是既麻烦又浪费时间吗?随着这个疑问往下继续深究. 1.链路层中        我们知道链路层是MAC地址,网络层 ...

  9. sql server2008如何修改mac地址_如何查看本机的MAC地址和IP地址?

    MAC地址是每台电脑或是手机设备中唯一进行识别的编码,IP地址则是路由器分配给电脑或是手机设备联网使用的一个编码.当我们电脑或无法上网,都需要查看IP地址是否正确.那如何查看MAC地址和IP地址呢? ...

  10. MAC地址和IP地址的关系

    简单地说:ip地址是服务商给你的,mac地址是你的网卡物理地址. 一.IP地址 对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址.IP地址由用点分隔开的4个8八位组构成, ...

最新文章

  1. 某口腔app发现了不友善词汇(f*ckMobile)
  2. Basic Sorting Algorithms
  3. json串反转义(消除反斜杠)-- 转载
  4. 【思维】中位数与顺序统计
  5. leetcode 418 整数转罗马数字
  6. 传递参数命令——xargs
  7. java什么是子类_java什么是子类?
  8. perl转python_将行转换为perl或python中的列
  9. oracle 还原归档,ORACLE RMAN 还原归档日志
  10. 为啥我从后台查到的值在页面显示的是undefined_【java笔记】046天,作购物车页面,学习JavaScript...
  11. Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持
  12. asp得到地址栏里?以后的字串
  13. Javascript特效:字体火焰背景
  14. oracle 自定义比较函数
  15. 怎么看台式计算机内存条,内存条型号,详细教您怎么查看内存条型号
  16. linux开发板添加qt库文件_关于QT程序下载到开发板的一些步骤总结
  17. 8b/10b编码技术系列(二):Disparity、RD、8b/10b编码
  18. GamePlay架构
  19. 风过,摔死一只ofo小黄猪
  20. NOIP2017普及组初赛试题及答案

热门文章

  1. Java JUC工具类--Semaphore
  2. codeforces 677A-C语言解题报告
  3. 在Windows下使用OpenCL配置
  4. 专访刘伟:软件开发人员的内功修炼之道
  5. linux 的 df命令:显示磁盘分区上的可用空间
  6. Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解
  7. Mysql 无法插入中文,中文乱码解决
  8. Linux调优(文件系统)
  9. java中List Set Map使用
  10. java_IO总结(一)