arp协议

ARP 协议

基于arp协议,获取对应的物理mac地址,虽然同属于ip层到网络层协议,但是arp数据包没有被封装进ip数据包里,而是直接封装在以太网帧中

image
上层tcp/ip协议报文只包含目标服务器的ip地址,而下层链路层以太网协议需要知道目标服务器的mac地址,则arp的协议是指当前主机发送ARP查询(广播)查询该mac地址,如果目标地址不是在同一个局域网,则该mac地址则是局域网外的路由器mac地址,该所有帧都将发往该路由器地址

总之以太网协议中得到的上层数据中只有IP地址,需要使用arp协议去获得mac地址,arp协议会在链路层进行广播,只有目标地址会回应

1
2
3
ARP Paclket Format 
arp协议数据包格式
6字节(以太网目的地址) + 6字节(以太网源地址) + 2 字节(帧类型) + 28字节(arp请求回应包)

28字节包格式

  • 2字节硬件类型:1 => 以太网地址
  • 2字节协议类型:0x800 表示ipv4协议
  • 1字节地址长度:单位长度,一般为6 表示以太网地址的长度6字节
  • 1字节协议地址长度:一般为4,ipv4地址长度
  • 2字节操作码:1 => arp请求 2 => arp应答 3 => rarp请求 4 => rarp应答
  • 6字节原mac地址:源mac地址
  • 4字节源协议地址:源ip地址 如192.168.0.1
  • 6字节目标mac地址:mac地址

不用担心每次请求都会触发arp查询广播,机器是有arp高速缓存的 arp -a

@type

type:0x8060 表示arp协议