ARP地址解析协议
前言
最近在看计算机网络的书,有些内容看完就忘了,还是总结一下。
IP地址与MAC地址
要理解ARP协议的工作原理必须先理解IP地址和MAC地址的区别,MAC地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(IP地址使用软件实现的)如下图:
在发送数据时,数据从高层到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成了MAC帧。MAC帧在传送时使用的源地址和目的地址都是硬件地址。连接在通信链路上的设备(主机或路由器)在接收MAC帧时,根据是MAC帧首部的硬件地址。在数据链路层看不到隐藏在MAC帧中的IP地址。只有在剥去MAC帧的首部和尾部后把MAC层的数据交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。
ARP地址解析协议
地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。
基本功能
在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
注意:在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址。
ARP工作机制
报文格式
以太网传输层
目标以太网地址:目标MAC地址。FF:FF:FF:FF:FF:FF (二进制全1)为广播地址。
源以太网地址:发送方MAC地址。
帧类型:以太类型,ARP为0x0806。
在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的,如下表所示。
当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查找有无主机B的IP地址。如果有,就在ARP高速缓存中查出其对应的硬件地址,再把其硬件地址写入到MAC帧,然后通过局域网把该MAC帧发往此硬件地址。
如果主机高速缓存中没有则运行ARP按照以下步骤查找出主机B的硬件地址。
(1)ARP进程在本局域网上广播发送一个ARP请求分组如下:
(2)本局域网上所有的主机上运行的ARP进程都收到此ARP请求分组。
(3)主机B在ARP分组中见到自己的IP地址就向A发送ARP响应分组,并写入自己的硬件地址,相应分组是普通的单播。
(4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。
(5)另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)。
ARP缓存表采用老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
转载:https://blog.csdn.net/u013309870/article/details/77427112