第四章:ARP 地址解析协议

网络接口有一个硬件地址,48bit的值,在硬件层次上进行的数据帧交换必须有正确的接口地址.tcp/ip有自己的地址,32bit的IP地址.

但是知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。

arp的功能就是在32bit的ip地址和硬件地址之间提供动态映射。

为什么点对点链路不使用arp呢?

详细来解释下arp分组格式内容以及各个字段:

  前两个字段是以太网目的地址和以太网源地址,目的地址为全1的地址是广播地址。

  2个字节的帧类型,对于arp请求或者arp应答来说,该字段的值是0x0806

  硬件类型字段表示硬件地址的类型,1表示以太网地址,协议类型字段表示要映射的协议地址类型,0x0800表示ip地址。

  硬件地址长度和协议地址长度,分别指出硬件地址和协议地址的长度,以字节为单位。

  操作字段指出四种操作类型,他们是arp请求(1),arp应答(2),rarp请求(3),rarp应答(4)。

  接下来四个字段分别是发送端的硬件地址、发送端的协议地址、目的端的硬件地址、目的端的协议地址。

  注意:对于一个arp请求来说,除目的端硬件地址以外的所有其他的字段都有填充值。当系统受到一份目的端为本机的arp请求报文后,

  它会把自己的硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段设置成2,最后把它发送回去。

  ----未完待续----

原文地址:https://www.cnblogs.com/codergeek/p/3477777.html