一下面例子为例:
%ftp bsdi
应用程序FTP客户端调用函数gethostbyname函数把主机名(bsdi)转换成32 bit的IP地址。这个函数在DNS中称作解析器。
FTP客户端请求TCP用得到的IP地址建立连接。
TCP发送一个连接请求分段到远端的主机,即用上述IP地址发送一份IP数据报。
如果目的主机在本地网络上,那么IP数据报可以直接发送到目的主机上。如果目的主机在一个远程网络上,那么就通过IP选路函数来确定位于本地网络上的下一站路由器地址,并让它转发IP数据报。在这两种情况下,IP数据报都是被发送到位于本地网络上的一台主机或路由器。
假定是一个以太网,那么发送端主机必须把32bit的IP地址转换成48bit的以太网地址。从逻辑Internet地址到对应的物理硬件地址需要进行翻译。这就是ARP功能。ARP本来是用于广播网络的,有许多主机或路由器连在同一个网络上。
ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。这个过程称作广播。ARP请求数据帧中包含目的主机的IP地址。
目的主机的ARP层收到这份广播报文后,识别出这是发送端在询问他的IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址。
收到ARP应答后,使ARP进行请求--应答交换的IP数据包现在就可以发送了。
发送IP数据报到目的主机。
点对点链路不使用ARP。当设置这些链路时,必须告知内核链路每一端的IP地址。
如果ARP请求是从一个网络的主机发送到另一个网络上的主机,那么连接这两个网络的路由器就可以应答该请求,这个过程称作ARP或ARP代理。