在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。
因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。
源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。
- 每台主机都维护一个ARP缓存表,可以用arp -a命令查看,缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。
- 其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位也就是6字节,是在网卡出厂时固化的。
- 源MAC地址,目的MAC地址在以太网首部(14)和ARP请求(28)中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其他类型的网络则有可能是必要的。硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网和I
P地址分别为6和4(字节),op字段为1表示ARP请求,op字段为2表示ARP应答。 - 数据包在寻路过程中:(下一跳,下一跳)
- TTL:TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。在网络传输过程中,最长生命周期,一般以一跳为单位;保证不会拥塞住网络环境。



