分类: 系统运维
2005-03-29 14:04:28
ARP为IP地址到对应的硬件地址之间提供动态转换。因为在数据链路层,是不以IP地址寻址的。是以MAC地址,即硬件地址寻址的。所以需要ARP将IP地址转换为MAC地址,然后进行数据链路层上的传播。
ARP和RARP是和IP层平行的,其数据报不被IP数据报封装。在数据链路层的帧格式中,应该能看出来。
一个例子(所在网络是以太网):
当我们第一次访问某台主机的时候,所发生的情况是:
1)应用程序将要访问的主机名(就是名字,网址等)转换为IP地址(域名解析)
2)本地主机向该IP地址发送IP数据报,请求连接
3)刚才发送的数据报,是无法在物理网络上进行传输的。因为只有目的主机的IP地址。所以,必须将目的IP地址转化为目的MAC地址
4)将目的IP地址转换为目的MAC地址的过程是:ARP发送一份广播给每台主机,要求目的IP地址持有者将其MAC地址回复给自己
5)目的IP地址持有者收到这个MAC广播,立刻发送一个MAC应答,将自己的MAC地址回复给源主机。(其他的机器不回复这个MAC广播,将这个广播丢弃)
6)源主机收到MAC应答后,就知道目的地址的MAC地址,就可以用该MAC地址将IP数据报在数据链路层上进行传送了。
ARP分组格式:
这个也可以说是ARP数据报的封装形式
ARP的分组形式是封装在以太网首部中的数据位,以太网首部就不介绍了。在数据链路层的帧格式中有写出。
下面是28自己的ARP请求/应答的格式:
硬件类型 | 协议类型 | 硬件地址长度 | 协议地址长度 | 操作 | 发送端mac地址 | 目的mac地址 | 目的IP地址 |
============================================
ARP代理:
路由器欺骗互连的2台主机
一台主机通过路由器,想访问另外一台主机,首先要进行IP地址到MAC地址的ARP转换,就是源主机想通过路由器向目的主机发送ARP请求,询问目的主机的MAC地址。
但是此时,路由器可以代替目的主机,对源主机进行回复(前提是目的主机的IP地址和MAC地址在路由器的内存中有记录)
这样做,可以加快网络传送数据的速度。
============================================
免费ARP:
就是主机发送ARP请求广播,询问自己IP地址的MAC地址。
这样做,是为了:
1)确定另一个主机是否设置了相同的IP地址(如果收到来到其他地方主机的ARP回答,就代表其他地方有主机被设置成和本机相同的IP地址)
2)如果本地主机的MAC地址被换掉了,那么这样做可以更新其他主机中的ARP表(IP地址到MAC地址的对应表)
============================================
============================================
就是从本机的接口卡上读取自己的MAC物理地址,然后发送一份RARP请求,请求某个主机响应自己的IP地址
所以,RARP请求是以广播方式传送,而RARP应答是以单播传送的
RARP是对于无盘机,用来获取IP地址的
============================================
TO BE CONTINUED