读书笔记四:TCP/IP详解之ARP地址解析协议
ARP的介绍
ARP为IP地址与对应的硬件地址之间提供动态的映射。通过已知IP地址查找对应的mac地址。
ARP运行过程
每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。
此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址。
源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。
如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
ARP分组格式
操作字段指出四种操作类型.1为ARP请求,2为ARP应答,3为RARP请求,4为让RARP应答。
ARP代理
ARP请求从一个网络发往另一个网络,连接2个网络的路由可以回答该请求,这个过程叫做委托ARP或代理ARP.
gratuitous ARP
指主机广播ARP请求查询自己的IP地址。
作用:
(1)确定同一网段中是否有与本机相同的IP.
(2)更新同一网段内其他们主机保存的该请求IP的ARP缓存(当我们的主机正好改变了硬件地址的时候可以这样做)。
arp命令
使用以下命令可查看arp缓存:
$ arp -a
超级用户可以用参数-d来删除表项。
-s参数可以用来增加表项,新增加的内容是永久性的(比如没有超时值),除非在命令行末尾加上关键字temp。
如果位于命令行末尾的关键字pub和-s选项一起使用,则可以使系统起着主机ARP代理的作用。
实验中我们可用tcpdump来抓包分析。
ARP高速缓存超时值一般为20分钟(不完整表项则为3分钟),而且每次在访问表项时会重新设置超时值。