用故事记概念:
某公司大量员工双11不顾剁手买了很多东东,上班时间明目张胆签收快递会被老板眼中的怒火烧死,所以她们决定让门卫老王帮忙签收,一有包裹就通知她们,老王为了不弄错包裹就记下了大家的姓名 和身份证号码(网卡MAC地址),从此以后一到了休息时间公司就回荡起老王的声音:”谁是XX啊!你有包裹!带身份证来领”,
- 某公司 -> 局域网
- 员工 -> 内网主机
- 姓名 -> 内网IP地址
- 身份证号码 -> 内网主机的网卡MAC地址
概念详解
什么是ARP?
ARP是在32位的IP地址和采用不同网络技术的硬件地址之间提供动态映射.为什么需要ARP?
当某个网络收到数据报时需要确定是属于网络下的哪一台主机,ARP可以解决这个问题.什么是ARP高速缓存
在每个主机中都有个ARP高速缓存,保存了映射记录,每一条记录的生存时间一般是20分钟,arp -a命令可以查询本机缓存
ARP分组格式
- 帧类型: 两个字节长的以太网帧类型表示后面数据的类型,ARP请求或应答的值为0x0806
- 硬件类型: 如其名,值为1的话表示以太网
协议类型: 值为0x0800表示IP地址,这个值与包含数据报的以太网数据帧中的[类型]这个字段是相同的
(以太网封装格式)
-硬件地址长度: 单位为字节,以太网值为6(网卡MAC地址48位,也就是6个字节)
-协议地址长度: 单位为字节,IP地址32位,4个字节,值为4
-OP(操作): 指出四中操作类型,ARP值为1,ARP应答值为2,RARP请求为3,RARP应答值为4,这个字段是必须的,因为在[帧类型]这个字段中ARP应答和请求用的值是一样的.
ARP的请求与发送:
- 当发送ARP请求时[目的端硬件地址]这个字段是空的(因为此时还不知道目的端这个值为什么)
- 当接收到ARP请求报文时会把自己的硬件地址填进去,然后用两个目的端地址替换两个发送端地址,并把操作字段置为2,然后发送回去.(真懒)
免费ARP
(吐槽:总感觉翻译成免费二字好傻,实际作用和免费完全八竿子打不着边. =.=)
最常用的就是检测IP地址冲突,一般在网卡加载时会广播一条ARP请求,目标IP就是自己的IP,如果得到了回应那么就会触发常见的”IP地址冲突”.(在人多的地方大吼一声自己的名字假如有人说你叫我干嘛那你就知道是怎么回事了)