深入应用看本质之-ARP协议


首先复习一下

我们知道,网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。

    每一个主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。那么主机怎样知道这些地址呢?
    当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把这个MAC帧发往此硬件地址。也有可能查不到主机B的IP地址的项目,这可能是主机B才入网,也可能是主机A刚开机,其高速缓存还是空的。这种情况下,主机A就自动运行ARP,然后按以下步骤找出主机B的硬件地址。
1:ARP进程在本局域网上广播发送一个ARP请求分组。ARP请求分组的主要内容是表明:我的IP地址是209.0.0.5,硬件地址是00-00-C0-15-AD-18。我想知道IP地址为209.0.0.6的主机的硬件地址。
2:在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
3:主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP请求分组。ARP响应分组的主要内容:我的IP地址是209.0.0.6,我的硬件地址是08-00-2B-00-EE-0A。注意,虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
4:主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。


可见ARP高速缓存非常有用。如果不适用ARP高速缓存,那么任何一个主机只要进行一次通信,就必须在网络上用广播方式发送ARP请求分组,这就使网络上的通信量大大增加。ARP把已经得到的地址映射保存在高速缓存中,这样就使得该主机下次再和具有同样目的地址的主机通信时,可以直接从高速缓存中找到所需的硬件地址而不必再用广播方式发送ARP请求分组。
    ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。

深入探究

a
这是我使用无线网络上网的一些信息,有ip,子网掩码【可以见得网络号是24位的】,默认网关就是校园的路由器地址

使用软件分析发现arp协议
dd


ip为222.26.174.68想知道222.26.174.136mac地址,发送了一个arp请求数据包,之后后者回复一个arp响应数据包
ss
可以看到操作字段是1表示请求
dd
ss
发送的时候,目标的mac地址还是未知的,所以是全0,我们可以看到这是一个广播数据包

ss


aa


ss
   可以看到响应的时候地址信息颠倒了,而且发送端的mac地址填上了 可以看到操作字段是2表示响应

无偿的arp,记得自己发现过一个arp目标地址与源地址【ip】是相同的,广播方式发送,其实这就是无偿的arp.
gg



ARP可以被用来检测重复的IP地址,这是通过传送一种叫做无偿ARP的ARP请求来完成的。无偿
ARP就是一个发往自己IP地址的ARP请求。在无偿ARP中,SPA(发送者协议地址)和TPA(目标协议
地址)被设置成同一个IP地址。
如果节点发送一个发往自己IP地址的ARP请求,就不应收到任何一个ARP回应帧,这样节点就可以
判断没有其他节点使用跟它相同的IP地址。如果节点发送一个发往自己IP地址的ARP请求,结果收
到ARP回应,这样此节点就可以判断有另外一个节点使用同样的IP地址。注册表中对ArpRetryCount
的设置控制了无偿ARP的发送数量。

提示:无偿ARP试图检测在同一个网络段中的IP地址重复。由于路由器并不转发ARP帧,无偿ARP
并不能检测在不同网络段之间的IP地址冲突。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值