ARP学习笔记
ARP学习笔记
简单情况下的ARP
以太网是最普遍的一种计算机局域网技术。
以太网有两类:第一类是经典以太网,第二类是交换式以太网。现主要使用交换式以太网。
在以太网(局域网)物理连接搭建后,两台终端第一次通信前,将首先进行ARP(地址解析协议:Address Resolution Protocol)通信,以相互获取对方MAC地址。如下图:
第一次PING如图:
可见首次主机1ping主机2时,首先主机1会广播发起了一个ARP请求,询问主机2的MAC。
ARP请求帧是一个二层帧(数据链路层),帧头部包含了:目的MAC(由于主机2的MAC还未知,此处为全1),源MAC地址(主机1的MAC),帧类型(0806即表示ARP协议)。
ARP主体中有源主机的MAC和IP,目标主机的IP,目标MAC为全1。
具体结构如下图:
终端在收到ARP请求后,打开ARP帧,核对目标IP与自己相符后,会回复一个ARP帧,回复的帧中,在源MAC地址中填写自己的MAC。如图2中所示。
tips:MAC共有48bit,前24bit分配给厂家使用,所以在图2抓包的结果中,MAC地址由厂家和后24bit组成。
进一步
不在一个网段时
主机在发送ARP请求前会检测目标IP与自己是否在一个网段,仅在自己和目标在一个网段内时才发送到目标IP的ARP请求。
验证:
修改图1中,终端1的IP为:192.168.1.1/29,终端2的IP为:192.168.1.9/29。此时再ping,结果为:
From 192.168.1.1: Destination host unreachable
同时抓包发现也没有ARP请求帧。
网段大小不一时
主机在发送ARP请求前会检测目标IP与自己是否在一个网段,那如果目标的网段与自己的网段大小不一呢?
修改图1中,终端1的IP为:192.168.1.1/29,终端2的IP为:192.168.1.9/28。此时终端1在终端2同网段中,二终端2不在终端1的网段中。
此时终端1再ping终端2,结果为同上。
但用终端2去ping终端1时,结果如下:ping的结果为超时。观察抓包结果可见,此时终端2先发送了ARP请求,并得到了终端1的ARP回复,知道了终端1得MAC,随后终端2发送ICMP报文。但终端1由于检测到终端2没有在自己的网段中,二层封装无法进行,也就无法回复ICMP报文,造成超时。
可见,1.ARP回复没有进行同IP网段检测,直接给与回复;2.ping时没有ARP回复和没有ICMP回复,显示的结果不一样。
添加路由后
源和目标不在一个网段内时,ARP请求先请求网关的MAC(即使不在一个网段),随后通信交网关进行路由。
终端1的IP为:192.168.1.1/29,终端2的IP为:192.168.1.9/29,添加路由,网关地址为192.168.1.254/24,在路由器接口抓包。
如图:
此时再ping,结果为:
可见数据链路层的ARP协议无法跨网段,是通信需要路由的重要原因。