ARP,全名为 An Ethernet Address Resolution Protocol,以太网上的地址转换协议,通过遵循该协议,只要我们知道了某台机器的IP地址,即可以知道其物理地址。
下面我将根据ARP协议描述一下机器A和机器B的交流过程:
1、机器A说:“有程序叫我给机器B发送数据,但是他们只告诉了我机器B的IP地址,可以我和机器B联系是通过物理地址的呀。嗯……如果广播数据包的话,那么机器B就可以收到了,不过如果我每个数据包都广播的话,那不是很猪头!还是得想办法知道机器B的物理地址,这样我直接联系她。对了!据说有一个ARP协议可以帮助我,嗯,让我来试一下。”
2、按照ARP协议规定的格式,机器A构造一个数据包,其中包含机器B的IP地址Ib,我们称之为请求包,然后将其广播出去。附带说一下,这里面还包含着机器A自己的IP地址和物理地址,先埋下一个伏笔。
3、机器A说:“这个包已经广播出去了,现在就等着机器B回应我了……”
4、这个局域网内所有机器都收到了这个广播的请求包,并且都对这个包进行了检查,不过绝大部分机器发现包中所提到的IP地址Ib和自己的IP地址不一样,于是就将这个包丢弃了。
5、只有一台机器发现包中的IP地址和自己的IP地址一样,这台机器就是传说中的机器B……
6、机器B说:“有个猪头广播了一个ARP请求包,里面提到了我的IP地址,他大概是想和我单独联系,但是不知道我的物理地址吧,所以才广播的……那好!我就给他一次和我说话的机会吧,我先把物理地址告诉他吧”
7、于是机器B也根据ARP协议构造了另外一个数据包,其中包含自己的物理地址Pb,我们称之为应答包,并打算将该应答包发送给机器A。
8、机器B说:“怎么把这个应答包发送给A呢?学它的,继续广播?不行,我怎么能够和他一样猪头呢!再检查一下他给我的请求包,也许可以找出什么信息来……Search……Search……Search……找到了,这里放着他的IP地址和物理地址呢!好,就用这个物理地址和他联系吧。”
9、于是机器B将刚刚构造的应答包发送出去了……过一下就到了机器A那里。
10、机器A说:“谢天谢地!经过漫长的等待,终于接到了回应了,嗯,这个包果然是机器B发给我的,对,也从里面读到了机器B的物理地址,好,以后我就用这个物理地址和机器B单独联系了……”