通过IP如何找到对应的MAC地址的

通过IP如何找到对应的MAC地址的


前言

因为分组需要经过数据链路层,数据链路层离不开MAC,网络层首部含有源IP地址和目标地址,如果通过IP地址找到MAC地址?


IP地址和硬件地址

1.当应用层发送数据时,需要从上层到硬件层发送。当IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都卸载MAC帧的首部中。
2. IP地址放在IP数据报的首部,硬件地址放在MAC帧的首部。
3. 在IP层抽象的互联网上只能看到IP数据报。
4. 虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择,经过了路由,一般认为是两个网络了。
5. 在局域网的链路层,只能看见MAC帧,每经过路由,丢掉一端的MAC帧首部的地址,重新写入新的帧(详细见下图红色标记)。
注意IP经过路由后IP地址和MAC地址的变化

几个重要问题需要解决:

  • 主机或路由器怎样知道应当在MAC帧的首部填写什么样的硬件地址?
  • 路由器中的路由表是怎样的出的?4.5节中详细讨论

地址解析协议ARP

在实际应用中,我们经常会遇到这样的问题:已经知道了一个机器的ip地址,需要找出其相应的硬件地址。地址解析协议ARP就是用来解决这样的问题的。
在这里插入图片描述
下面就介绍ARP协议的要点
我们知道,网络层使用的是IP地址,但在实际网络的连接上传送数据帧时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系。此外,在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网络适配器也会使主机的硬件地址改变。地址解析协议ARP解决这个问题的方式是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。

每一台主机都设有一个 ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。那么主机怎样知道这些地址的呢?我们可以通过下面的例子说明。
当主机A要向本局域网上的某台主机B发送IP数据报时, 就先在其ARP告诉缓存中查看有无B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。
也有可能差不到主机B的IP地址的项目。这可能是主机B才入网,也可能是主机A刚刚上电,其高速缓存还是空的。在这种情况下,主机A就自行运行ARP,然后按照如下步骤找出B的硬件地址。

  • ARP进程在本局域网上广播发送一个ARP请求分组。图4-11(a)是主机A广播发送ARP请求分组的示意图。ARP请求分组的主要内容是"我的IP地址是209.0.0.5,硬件地址是00-00-C0-15-AD-18。我想知道IP地址为209.0.0.6的主机的硬件地址。"
  • 本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
  • 主机B的IP地址与ARP请求分组中药查询的IP地址一致,就手下这个ARP请求分组,并向主机A发送ARP影响分组(单播),同时在这个ARP响应分组中写入自己的硬件地址。由于其余的所有主机的IP地址都与ARP请求分组中要查询的IP地址不一致,因此都不理睬这个ARP请求分组。ARP响应分组的主要内容是:"我的IP地址是209.0.0.6,我的硬件地址是08-99-2B-22-33-0A。“”请注意,虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值