简介
ARP协议是某些网络接口使用的特殊协议,用来转换IP层和网络接口层使用的地址
ARP为IP地址到对应的硬件地址之间提供映射。也就是说如果两台主机需要通信,需要知道对方的mac地址,因为IP地址相当于是逻辑地址.
如果只知道IP地址是没办法通信的,因为主机并不知道需要把数据报发送到哪台主机上。
例子
现在假设我们有两台主机,需要通信,IP地址分别是192.168.3.31和192.168.3.32
这两台主机需要通信的话,首先发送方会发送一份ARP请求的以太网数据帧给以太网上的所有主机,这个过程也叫做广播,目的主机接收到ARP广播,发现是在询问它的IP地址,于是发送一个ARP应答.
在192.168.3.32服务器上使用抓包程序进行抓包,在192.168.3.31上ping32主机
把刚才保存的testx.cap保存下来,这里我用了writeshark打开刚才抓取到的数据报
下图就是刚才我们抓到的数据报,首先31服务器会发送一个广播(Broadcast)询问,第二条就回应告诉31,我的ip地址就是32并且回应的报文当中,还携带着自己的mac地址.这样我们在31服务器上就在ARP缓存当中缓存了32服务器的mac地址,默认的高速缓存时间是20分钟
接下来我们查看ARP详细报文信息
frame里面包含的物理传输的数据帧,暂且不去关注.从以太网开始(Ethernet)
1.Destination:Broadcast
目的地址,一个广播地址
2.Source
源mac地址
3.Type
数据报的类型,主要记住 一下两种就可以了
IP数据报:0x0800
ARP地址解析数据报:0x0806
在看ARP数据报
1.Hardwre type
硬件类型,这里是以太网
2.Protocol Type
传输协议类型 IP4
3.Hardwre Size
硬件地址长度,单位为字节,这里硬件mac地址是6字节(00:0c:29:9a:93:03)
4.Protocol size
协议地址长度, 4字节(192.168.3.31)
5.opcode request
操作类型,主要有四个字段
ARP请求(值为1)
ARP应答(值为2)
RARP请求(值为3)
RARP应答(值为4)
6.剩下的一个是发送mac、IP和目的主机mac地址和ip地址
ARP代理
免费ARP
免费ARP,它是指主机发送ARP查找自己的IP地址,通常它发生在系统引导期间进行接口配置的时候
这句话的意思就是当我主机在设置IP地址的时候,会发送一个ARP请求广播到局域网,如果局域网内没人回复就代表IP是可用的,如果有人回复,就代表IP冲突了。
还有一个作用就是如果修改IP地址的主机正好也修改了mac地址,那么收到广播的机器,也可以更新ARP缓存的mac地址
总结
我觉得ARP地址解析这个过程就好像是在在一个办公室内,大家相互不认识,当你老板说让你给张三(目的主机)一个东西,那你就会在办公室里喊一声谁是张三,办公室里所有人都听得到你在喊广播,因为其他人不是张三,他们不会答应你,只有张三一听原来是叫我,它就会回答我是张三(ARP应答)。然后你心里就会记下它是张三这个记下也就是ARP高速缓存