- ARP协议也分好几种,其中一种叫无故ARP(免费ARP),是在主机配好ip时发送的,为了防止局域网内主机ip冲突。利用这个机制可以攻击其他主机(相同ip同归于尽)。
- 目的地址ff:ff:ff:ff:ff:ff和00:00:00:00:00:00的区别?
- 全f是以太网帧头的目的mac(表示广播),全0是ARP报文的目的mac(表示未知)
- ARP报文不是直接在网络层上发送的,它还是需要向下传输到数据链路层,所以当ARP报文传输到数据链路层之后,需要再次进行封装。以以太网为例,ARP报文传输到以太网数据链路层后会形成ARP帧。ARP帧如下图所示,他就是在ARP报文前面加了一个以太网帧头。
目的地址为ff-ff-ff-ff-ff-ff,所以所有设备都可以拆掉二层的封装,然后解读ARP报文中需要解析的目的IP。
- ARP报文
ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。ARP报文分为ARP请求和ARP应答报文两种,它们的报文格式可以统一为下图所示。 - 同一个网段的ARP过程:
当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。
目的ip地址和主机不是同一个网段,则去找网关
- ARP跨网段
1、主机将数据包先放到缓存中,然后发送ARP查询报文:封装自己的mac地址为源mac,目标mac地址写全F的广播地址,请求网关的mac地址。然后以广播方式发送出去。
2、获取到网关mac再直接将数据包发到网关(跨网关通信,其他网段IP地址的mac地址均为网关mac)。
3、路由收到数据包,检查目的IP地址,发现不是给自己的,决定要进行路由,然后查询路由表,找到目的网段的端口。路由准备从相应端口上发出去,然后查询mac地址表。若没有,则广播ARP。 - ARP欺诈
伪造成网关给一个或多个主机发一条ARP报文,使主机以为网关的mac地址变更而更新网关的ip和mac的映射关系,导致上网时的数据包都发往了错误的mac地址。 - ARP抓包
● Hardware type(硬件类型):连的是何种设备(以太网代号是1)
● Protocol Type(协议类型):指的上层协议用的什么(IPv4是0x0800)
● Hardware Size(硬件大小,其实就是地址长度):6个字节(指mac地址48位)
● Protocol Size(协议大小,指的是三层地址长度):4个字节(指ip地址32位)
● Opcode(操作码):指明这个数据包的作用。1代表request(请求)
● Sender MAC Address(发送者的mac地址):自己的mac地址
● Sender IP Address(发送者的IP地址):自己的IP地址
● Target MAC Address(目标MAC地址):全0是因为在请求中,目标MAC地址是未知的。又不能不写。所以暂时用全0代替。
● Target IP Address(目标IP地址):你请求的IP