ARP协议是什么

Python019

ARP协议是什么,第1张

ARP协议是在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。

一个主机可以通过它来确定另一个主机是否设置了相同的IP地址,主机bsdi并不希望对此请求有一个回答,但是,如果收到一个回答,那么就会在终端日志上产生一个错误消息:"以太网地址:a:b:c:d:e:f发送来重复的IP地址",这样就可以警告系统管理员,某个系统有不正确的设置。

如果主机收到某个IP地址的ARP请求,而且它已经在接收者的高速缓存中,那么就要用ARP请求中的发送端硬件地址(如以太网地址)对高速缓存中相应的内容进行更新。

扩展资料

IP地址的划分原理

二进制形式第一个字节的第一位(最高位)固定为0,这样的话,可以计算出A类IP地址的范围:

0000 0000 . 0000 0000 . 0000 0000 . 0000 0000 ~ 0111 1111 . 1111 1111 . 1111 1111 . 1111 1111转换成点分十进制就是0.0.0.0~126.255.255.255。

127保留给内部回送函数,而0则表示该地址是本地宿主机IP地址一般分配给特大型网络,有126个网络,每个网络能容纳16777214多个主机。

参考资料来源:百度百科-ARP

参考资料来源:百度百科-ARP协议

ARP协议(Address Resolution Protocol,地址解析协议):

在以太网协议中规定,同一 局域网 中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。

在传输数据时,如果发送数据的主机与接收数据的主机不在同一局域网,也就是当ARP请求目标跨网段时,网关设备收到此ARP请求,会用自己的MAC地址返回给请求者,这便是代理ARP(Proxy ARP)。

但是在实际上,采用代理ARP的情况很少,一般当电脑没有配置网关时,ARP直接询问目标IP对应的MAC地址(跨网段),采用的是代理ARP;当电脑配置了网关时,ARP只需询问网关IP对应的MAC地址(同网段),采用正常ARP;所以无论是正常ARP还是代理ARP,跨网段时电脑最终都拿到同一个目标MAC地址:也就是网关MAC。

同一局域网中,可以这样生动的说明:

当要发送数据的主机不知道只知道目的主机的IP地址,不知道MAC地址时,他会在网络上发送一个广播,“IP是10.1.1.1的主机MAC地址是多少”,这个广播的目标MAC地址是全f(ffff.ffff.ffff),交换机会把这样的广播通过所有的口发出去,这样IP地址为10.1.1.1的主机就会回复他,“我的MAC地址是M1”,这样发送数据的主机就把M1这个MAC地址缓存到本地,之后的数据再发送到这个MAC地址为M1的主机时,就直接从缓存中找MAC地址和数据封装在一起。

如果是跨网关的话,发送数据的计算机会通过ARP协议,把网关的MAC地址缓存起来,缓存之后,短期之内下一次再发送数据就不需要再使用ARP协议找MAC地址了。

网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系(例如,IP地址有32位,而局域网的硬件地址是48位)。此外,在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网络适配器也会使主机的硬件地址改变。地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。每一台主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。那么主机怎样知道这些地址呢?我们可以通过下面的例子来说明。当主机A要向本局域网上的某台主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。也有可能查不到主机B的IP地址的项目。这可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A就自动运行ARP,然后按以下步骤找出主机B的硬件地址。