地址解析协议

当一台主机沿独立的数据链路向对端传送数据包时,需要把数据包封装在帧中,并且根据48bit的MAC地址来确定目的接口,设备驱动程序从不检查IP数据报中的目的IP地址。数据链路需要一种方法来发现邻居设备的MAC地址,以便将数据帧传送到正确的目的地。
地址解析为IP地址和数据链路层地址之间提供了映射。ARP为IP地址到对应的硬件地址提供动态映射。这个过程是自动完成的,对用户及系统管理员是透明的。当一台设备需要发现另一台设备的数据链路标识时,它将建立一个ARP请求数据包。这个请求数据包中包括目标设备的IP地址及发送者的IP地址和MAC地址。ARP请求数据包被封装在数据帧中,其中帧头部带有源MAC地址和目标广播地址。 
 
ARP应用实例
⑴ 应用程序FTP调用DNS将主机名转换成32bit的IP地址。
⑵ FTP客户端请求TCP用得到的IP地址建立连接
⑶ TCP向远端主机发送连接请求,即用上述IP地址发送一份IP数据报。
⑷ 若目的主机在本地网络上,IP数据报将直接送达目的主机。如果目的主机在远程网络上,将通过IP选路来确定下一跳地址并进行转发。
⑸ 若目的主机所在网络类型是以太网,源主机通过ARP将目的IP地址转换成目的MAC地址。
⑹ ARP发送一份ARP请求数据包广播给以太网上的所有主机。
⑺ 目的主机收到ARP请求广播后,回复ARP应答。这个ARP应答包含IP地址及对应的MAC地址。
⑻ 得知目的主机的MAC地址后,即可以传送数据到目的主机了。
点对点链路不使用ARP。当设置这些链路时,必须告知链路每一端的IP地址。像以太网地址这样的硬件地址并不涉及。
 
ARP高速缓存
每个主机上都有一个ARP高速缓存表。这个表存放了最近IP地址到硬件地址之间的映射记录。在ARP高速缓存中的表项一般都要设置超时值。一般对完整的表项设置超时值为20分钟,而对不完整的表项设置超时值为3分钟。当这些表项再次使用时,这些实现一般都把超时值重新设为20分钟。
 
ARP的分组格式
 
以太网目的地址:在ARP request中为广播地址(ff.ff.ff.ff.ff.ff),在ARP relay中为发送ARP request的主机的MAC地址。
以太网源地址:发送ARP request的主机MAC地址。在ARP relay中作为以太网目的地址。
帧类型:2个字节。表示后面数据的类型。ARP帧的值为0x0806。
硬件类型:指定了网络的类型。1为以太网,3为X.25,6为IEEE802。
协议类型:指定发送者映射到数据链路标识符的网络层协议类型。IP为0x0800,ARP为0x0806,RARP为0x8035。
硬件地址长度:指定了数据链路标识符的长度。单位是octet。MAC长度为6。
协议地址长度:指定了网络地址长度。单位是octet。IPv4地址长度是4。
OP:操作字段。指明一个数据包是ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4),反转ARP请求(8),反转ARP应答(9)。
发送端以太网地址:发送ARP request的源主机MAC地址。在ARP Relay中是目的以太网地址的值。
发送端协议地址:发送ARP request的源主机网络层地址。这里指IP地址。
目的以太网地址:在ARP request中为全0。
目的协议地址:接收ARP request的目的主机网络层地址。这里指IP地址。
对于一个ARP请求来说,除目的端硬件地址外的所有其他字段都有填充值。当系统收到一份目的端为本机的ARP请求报文时,它就把硬件地址填写进去,用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,然后将它发送回去。
用ARP进行动态地址解析的时间一般小于3ms。
当系统收到ARP请求或发送ARP应答时,都要把请求端的硬件地址和IP地址存入ARP高速缓存。
 
ARP代理
如果ARP请求是从一个网络上的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作代理ARP(Proxy ARP)。
当连接这两个网络的路由器收到该ARP请求时,它会发现自己有通向目的主机的路径,随后它会将自己的端口MAC地址回复给源主机。这样可以欺骗发起ARP请求的源主机,使它误认为路由器的端口MAC地址就是目的主机的MAC地址。而事实上目的主机是在路由器的另一边。路由器的功能相当于目的主机的代理,把收到的分组再转发至目的主机。
代理ARP的其他用途:
⑴ 两个物理网络之间的路由器可以使这两个网络彼此透明化。在这种情况下,只要路由器设置成一个ARP代理,以响应一个网络到另一个网络主机的ARP请求,两个物理网络就可以使用相同的网络号。
⑵ 当ARP表中有多个IPv4地址映射到单一的MAC地址时,其中IP地址对应不同的主机,MAC地址对应路由器的接口。
代理ARP被路由器作为向主机表明自身可用的一种手段。
 
免费ARP
使用自己的IP地址作为目标地址发送ARP请求,这种ARP请求称为免费ARP。通常它发生在系统引导期间进行接口配置的时候。
主要用途:
⑴ 免费ARP用于检查网络中的重复地址。一台设备可以向自己的IPv4地址发送ARP请求,如果收到ARP响应则表明存在重复地址。
⑵ 免费ARP还用于通告一个新的数据链路标识符。如果发送免费ARP的主机正好改变了硬件地址,那么免费ARP分组就可以使其他主机高速缓存中旧的硬件地址进行相应的更新。当一台设备收到一个ARP请求广播时,如果ARP高速缓存中已有发送者的IP地址,那么与此IP地址相对应的硬件地址将会被发送者的新的硬件地址更新。
开启免费ARP RTA(config-if)# ip gratuitous-arps
 
ARP命令集
Example:
 > arp -s 157.55.85.212    00-aa-00-62-c6-09 .... Adds a static entry.
 > arp –a                                                  .... Displays the arp table.
 
RARP:反向地址解析协议
RARP可以实现IPv4地址到已知硬件地址的映射。某些设备,如无盘工作站在启动时可能不知道自己的IP地址,嵌入这些设备固件中的RARP程序可以允许它们发送ARP请求,RARP服务器将会向这些设备回复相应的IP地址。
RARP在很大程度上正在被DHCP和BOOTP的扩展协议所替代。不同于RARP,这两种协议都可以提供IP地址以外更多的信息,而且还可以跨越本地数据链路。
RARP分组格式:
RARP分组的格式与ARP分组基本一致。它们之间的差别是RARP请求或应答的帧类型代码为0x8035,并且RARP请求和应答的操作代码分别为3和4。
RARP的请求以广播方式传送,RARP应答一般是单播传送的。
 
RARP在目前的应用中已极少被使用,不再赘述了。
 
 
 
 
参考书籍:
Stevens,W.R.TCP/IP Illustrated,Vol.1.Reading
Comer,D.E.Internetworking with TCP/IP,Vol.1
Jeff Doyle.Routing TCP/IP Vol.1 Second Edition
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值