网络协议系列(一) ---- ARP:地址解析协议

为什么需要ARP协议?

我们在internat网络上传输数据时使用的是IP地址,但数据在到达目的(IP)地址所在的局域网,需要发给最终的主机时,需要知道目的主机的硬件地址。这时需要完成从IP地址到硬件地址的映射,这就是ARP干的活。


ARP过程:

ARP过程非常简单,举个列子即可。

主机A(假设IP地址为192.168.0.3, 硬件地址为0A:0A:0A:0A:0A:0A) 要发送数据到同一子网主机B 192.168.0.16。但是A不知道B的硬件地址。于是A发送一个APR请求,该请求为广播形式(目的硬件地址全F),局域网内所有机器都能收到。内容是:“谁的IP地址是192.168.0.16,把你的MAC地址告诉我(硬件地址是0A:0A:0A:0A:0A:0A, ip是192.168.0.103)”。这时,局域网内每台机器收到这个ARP请求后,将192.168.0.16和自己的IP比较一下,如果不一样,则不做回应。主机B发现这个IP和自己的一样,则发送一个ARP应答,这个应答不再是广播形式,而直接发送给主机A的硬件地址(0A:0A:0A:0A:0A:0A),内容是“我的IP地址是192.168.0.16,硬件地址是0B:0B:0B:0B:0B:0B”。A收到ARP应答后,将B的IP地址和硬件地址的映射存到ARP缓存中,下次再发送数据时直接从arp缓存中读取,不需要再发送arp请求了。ARP缓存可以通过命令 arp -a 查看。另外,B在收到A的ARP请求时,因为ARP请求同时携带了A的IP地址和硬件地址,B也会将A的地址映射关系加入自己的arp缓存中。再多说一句,ARP协议是在链路层上进行封装的,不是基于IP封装的。

你可能感兴趣的:(网络协议)