ARP协议

Posted by BY 大雁小鱼 on November 1, 2018
  • ARP协议简介
    ARP协议,是一种将32位的IP地址转换为48位物理地址的协议。

IP地址可以理解为是一种逻辑地址,是一种上层地址,而MAC地址是物理地址,是一种底层地址。物理网络是有多种结构的,不同的物理网络具有不同的物理地址格式,为了屏蔽底层物理网络的细节,让不同的网络可以进行通信,人们发明了IP这种逻辑地址,于是上层就统一为IP地址了。

但是如何才能将一个上层的IP地址转换为物理地址呢?答案就是ARP协议,这个协议就是干这个事情的。

需要注意的一些事情是,MAC地址是数据链路层的地址,并且MAC地址出现的时间比IP地址要早,保留MAC地址很可能是为了向后兼容其他的网卡芯片。另外需要注意,并不是所有的网络都使用IP地址。

  • ARP报文格式

  • ARP抓包样例 抓包的命令是 tcpdump arp src 192.168.0.247 -vvX

如上图所示

  1. 硬件类型(16位):指定了物理地址的类型,1表示以太网,0001
  2. 上层协议类型(16位):指定了要将MAC地址映射成什么协议的地址,0800表示IP地址
  3. MAC地址长度(16位):指定MAC地址的长度,单位是字节 06表示有6个8位,也就是6个字节
  4. 协议地址长度(8位):指定协议地址的长度(一般是IP协议),单位是字节 04表示有4个8位,也就是4个字节
  5. 操作类型:1表示ARP请求 2表示ARP应答 3表示RARP请求 4表示RARP应答
  6. 发送源的物理地址和发送源的协议地址
  7. 目的地的物理地址和目的地的协议地址

样例截图中,length:28表示总共是28个字节

在发送ARP请求时,除了目的地的物理地址全部填写0之外,其余字段均必须填写

  • ARP小知识之外网ARP
    ARP的请求是广播的,但我们知道路由器是分隔广播域的,那么请问如果我们查询的IP地址是一个外网的IP地址会怎么样呢?发送源广播ARP请求时,局域网内的主机不会回应该请求,而路由器将会回应该请求,于是发送源会认为路由器就是目的主机,将报文发送给它,再由路由器转发报文。这里相必大家都知道了吧,这就是ARP欺骗的原理,让源主机认为某个机器就是目的主机。