大概了解一下ARP协议。ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写,它的作用是将IP地址转换成物理地址(就是常说的MAC地址),其详细过程参考《TCP/IP详解卷一》。协议ARP的分组格式如下:
------------------------------------------
以太网目的地址(6个字节)
以太网源地址(6个字节)
帧类型(ARP = 0806)(2个字节)
------------------------------------------
硬件类型(Ethernet=01)(2个字节)
协议类型(IPv4=0800)(2个字节)
硬件地址长度(1个字节)
协议地址长度(1个字节)
OP操作选项(ARP request=01,ARP reply=02)(2个字节)
发送端以太网地址(6个字节)
发送端IP地址(4个字节)
目的以太网地址(6个字节)
目的IP地址(4个字节)
--------------------------------------------

 

 

 

我们向目标主机发送一个ARP请求,如果目标主机处于活动状态则会返回其MAC地址,如果对方返回MAC地址,则表明对方处于活动状态,这样达到探测目的。ARP请求包内容如下:
------------------------------------------
以太网目的地址 |FFFFFFFFFFFF(广播地址)
以太网源地址 |本地MAC地址
帧类型 |0806
------------------------------------------
硬件类型 |01
协议类型 |0800
硬件地址长度 |06
协议地址长度 |04
OP操作选项 |01
发送端以太网地址|本地MAC地址
发送端IP地址 |目标主机IP地址
目的以太网地址 |000000000000
目的IP地址 |目标主机IP地址
--------------------------------------------
注意:这里以太网目的地址为FFFFFFFFFFFF,这是广播地址,以太网上所有主机都能收到这个包,在收到这个数据包后,操作系统判断目的IP地址是不是这台主机,如果不是则丢弃(不作处理),否则发送回一个ARP应答包,包的内容如下:
------------------------------------------
以太网目的地址 |探测主机的MAC地址
以太网源地址 |本地MAC地址 (这里本地指被探测主机)
帧类型 |0806
------------------------------------------
硬件类型 |01
协议类型 |0800
硬件地址长度 |06
协议地址长度 |04
OP操作选项 |02
发送端以太网地址|本地MAC地址 (这里本地指被探测主机)
发送端IP地址 |本机IP地址 (这里本地指被探测主机)
目的以太网地址 |探测主机的MAC地址
目的IP地址 |探测主机的IP地址