什么是ARP协议

在学习IP协议之前,必需要弄懂IP地址与硬件地址的区别。

下图说明了这两种地址的区别,从层次的角度讲,物理地址是数据链路层和物理层运用的地址,而IP地址是网络层和以上各层运用的地址,是一种逻辑地址。(IP地址是用软件完成的)

什么是ARP协议

在发送数据的时,数据从高层下到低层,然后才到通讯链路上传输。运用IP地址的IP数据报一旦交给数据链路层,就被封装成MAC帧了,MAC帧在传输时运用的源地址和意图地址都是硬件地址,这两个硬件地址都被写在MAC帧的首部了。也就是说,数据链路层只会用硬件地址来定位主机,它看不见IP地址了。

各种电子设置都会有个mac地址,它就是硬件地址,比如

什么是ARP协议

设备中在网卡在出厂的时候就会被设定mac地址,它长48位,也就是6个字节,如上图中的3c:22:fb:86:0a:12,一般来说,mac地址分红两个部分,前24位表明厂商的编号,后面24位则是厂商给网卡的编号


咱们上网时,只会记住域名,比如咱们在浏览器上输入www.baidu.com,网络层只识别IP地址,DNS帮咱们将域名转换为IP地址,数据链路层只识别MAC地址,那么怎么把IP地址转换为MAC地址呢?这就需要运用到ARP协议了。

当主机A要向本局域网上的主机B发送IP数据报时,假如A在缓存中查找不到B的mac地址:

1、A在本局域网上广播发送ARP恳求,大致就是我的IP地址是XXXX,mac地址是XXXX,我想知道IP地址为XXXX的主机的mac地址

2、本局域网上的一切主机都会收到这个ARP恳求

3、主机B的IP地址与ARP恳求中要查询的IP地址共同,就收下这个ARP恳求,然后向主机A发送ARP呼应,并且在呼应中写下自己的mac地址。其他的主机IP地址不共同,因此就不会理会这个ARP恳求

4、主机A收到主机B的呼应后,就知道主机B的mac地址了。主机A也会将主机B的mac地址写入其ARP缓存中,这样下一次查缓存就能直接知道B的mac地址了,不需要经过ARP协议来获取,加快速度

每个主机上都会有ARP高速缓存,这样能加快mac地址的查询。

注意:ARP只是处理了同一个局域网上的主机或路由器的IP地址与mac地址的映射问题。假如要找的主机和源主机不在同一个局域网上,是无法直接查到另一个主机的mac地址的。

什么是ARP协议

如上图,假定主机A和路由器组成一个局域网A,主机B和路由器组成另一个局域网B,主机A和主机B分别在不同的局域网内。主机A要向主机B发送一条IP数据报,但A不知道B的mac地址,但A和B也不在同一局域网内。

A先要将数据发给路由器,所以A先要查询路由器的MAC地址,查到后,发送MAC帧给路由器,路由器再发送数据给B,由于路由器和B是在同一个局域网内,所以路由器能查到B的mac地址,终究B成功地收到了A的发送数据。

回忆最上面的一张图,咱们知道了,mac帧的首部中保存的意图mac地址是会经常改变的,由于一般的数据传输都不会只是在本局域网内。IP数据报中的意图IP是必定不会变的。

还有一个小疑问,主机A经过路由器向另一个局域网中的主机B发送音讯,连接两个不同局域网用的是同一个路由器,路由器有不同的端口,每个端口会有不同的IP地址和mac地址,所以才能一个路由连接在不同的局域网中