当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48位的以太网地址来确定目的接口的,设备驱动程序从不检查IP数据报中的目的IP地址。ARP模块的功能为这两种不同的地址形式提供映射:32位的IP地址和48位的物理地址。
2.APR帧格式
虽然IP、ARP和RARP数据报都需要以太⽹驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于⽹络层。虽然ICMP、IGMP、TCP、UDP的数据都需
要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于⽹络层,TCP和UDP属于传输 层。
数据链路层格式:
在ARP数据帧中需要强调一下的是:
帧类型:0800表示ip数据报,0806表示ARP,8035表RARP
硬件类型说的是与主机相连接的网络类型,1代表以太网。
协议类型说明是ipv4还是ipv6协议,不同的协议后续操作是不一样的。IP是0x0800
协议长度,这个主要就是不同协议当中的长度,ipv4是4字节长,ipv6是16字节长度。
硬件长度,说的是硬件地址的长度,也就是MAC帧的长度,也就是6字节。
然后看op,op就是操作,1代表arp请求,2代表arp应答。
注意到:源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的
但是如果链路层是其他类型的网络则有可能是必要的。
接下来我们来下一次ARP的完整过程,我们首先有两台主机H1和H2,当我们需要进行通信的时候,这个时候只是知道H1和H2的IP地址IP1和IP2,还有H1的MAC地址MAC1,但是无法知道H2的MAC地址,此时我们进行H1与H2通信,所以这个时候我们首先填充ARP数据报,此时的是请求ARP数据报,对目的地址全部填充1,也就是ffffffffffff,op为1,然后,由前主机以广播的形式发送到当前局域网。
所以,当当前局域网当中的主机接受到这个广播的帧,会有两种情况,一种就是帧当中的IP2和自己不相符合,这样它们的操作就是丢弃这个帧,另外一种的IP地址和IP2符合,这个时候就来进行处理这个帧,此时,接受到请求报文的主机H2会发送一个应答ARP数据报给H1,这里ARP报文的发送端IP地址和发送端MAC地址,都是现在当前要发送应答报文的主机H2的IP2和MAC2,目的端IP地址和目的端MAC地址都当初发送请求报文的主机H1的IP1和MAC1。op现在为2,然后加一个以太网首部发送出去,当到达目的主机的时候,此时,首先取出以太网帧的首部,然后交给上层的ARP,上层的ARP进行处理,然后ARP可以从当中得到op,发现是应答报文,所以去看发送端的MAC地址,然后这样就得到了所需要进行通信的MAC地址。
我们用arp -a命令来查看ARP缓存表