什么叫ARP协议?
我们知道,在互联 中计算机之间通信是通过IP地址进行寻址通信的,IP地址是属于 络层的通信协议,IP地址是一个逻辑地址。在我们常见的以太 、WiFi无线 络是一种链路层的通信协议,我们在使用软件程序传输数据的时候(比如飞秋、QQ、微信、FTP等)作为用户我们只需要知道对端的IP地址,通过IP地址进行传输数据,可是数据从IP层往下传输到链路层后,不管是以太 还是WiFi无线 络都是通过硬件地址(夜间物理地址或MAC地址)进行寻址通信的,但是,我们在通过软件传输数据的时候,软件是不知道对端的硬件地址的,这时就需要有一个协议来把IP地址与MAC地址进行映射形成一个映射表,这个协议就是ARP协议(地址解析协议),形成的映射表叫ARP表。如下图,前面的IP地址是目的IP,对应的物理地址是目的IP主机的硬件地址,他们都是通过IP地址6.6.6.31的将接口发送数据。
ARP地址表
ARP工作原理
每一台计算机设备(可能是PC、服务器、路由器、交换机等)都有一个ARP高速缓存(ARP cache),可以通过ARP协议建立所在局域 上的各计算机和路由器的IP地址与硬件地址的映射表。如某一个局域 中计算机A与向计算机B传输文件。计算机A首先会在自己的ARP cache上查看是否有计算机B的IP地址映射表,如果有,则可以之间调用计算机B的硬件地址并在链路层上把硬件地址封装到数据帧中(通常,我们把链路层的数据称作数据帧Frame、IP层的数据称作数据包Packet、数据 Datagram, 络层的数据称作数据段Segment,应用层的数据称作消息Message)。如果计算机A的ARP cache上没有计算机B的IP地址映射表,则需要通过ARP协议进行建立,建立过程如下图
ARP地址表建立过程
首先,计算机A通过广播方式发送ARP请求,该请求向该局域 除发送请求的计算机外所有的计算机(X、Y、Z、B)发送,通告这些计算。计算机A发送的ARP请求中包含了自己本身的IP地址与硬件地址,以及询问IP地址是209.0.0.6的计算机的硬件地址是多少,并请该IP地址的主机回答把自己的硬件地址回复给我。
然后,局域 中计算机B接收到ARP请求后,对请求的信息进行比对,发现自己是对方需要请求的对象,这时计算机B会将计算机A的IP地址与硬件地址的映射建立在自己的ARP cache上,并把自己的MAC地址回复给计算机A,而其它的计算机在比对完后发现寻找的不是自己,则把ARP请求丢弃。这样通过ARP协议,计算机A与计算机B就互相建立了双方的ARP地址表,建立完后,双方就可以进行传输传输了。
ARP数据 格式
ARP数据 格式
ARP 文结构
硬件类型:表示硬件地址的类型,值为1表示以太 地址
协议类型:表示要映射的协议地址类型。它的值为0x0800表示IP地址类型
硬件地址长度和协议地址长度以字节为单位,对于以太 上的IP地址的ARP请求或应答来说,他们的值分别为6和4;
操作类型(op):1表示ARP请求,2表示ARP应答
发送端MAC地址:发送方设备的硬件地址;
发送端IP地址:发送方设备的IP地址;
目标MAC地址:接收方设备的硬件地址。
目标IP地址:接收方设备的IP地址。
应该注意的地方
- ARP 是解决同一个局域 上的主机或路由器的 IP 地址和硬件地址的映射问题。
- 如果所要找的主机和源主机不在同一个局域 上,那么就要通过 ARP 找到一个位于本局域 上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个 络。剩下的工作就由下一个 络来做。
- 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
- 只要主机或路由器要和本 络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
为什么不直接使用硬件地址进行通信?
由于全世界存在着各式各样的 络,它们使用不同的硬件地址。要使这些异构 络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。连接到因特 的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个 络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
在电脑上查看ARP表信息
在计算机上点击开始菜单中的运行,输入CMD命令进入MSDOS窗口,在MSDOS窗口可输入ARP命令可查看所有的ARP相关的命令,如下图
ARP命令
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!