ARP地址解析协议

ARP地址解析协议:为IP地址到相应的硬件地址之间提供动态映射。

下面图为例说明地址解析协议的详细工作流程。


结合图中的序号进行说明。

client通过FTP协议连接server时,首先解析器会把主机名转换为IP地址。

这个过程既能够使用DNS服务。又能够使用本机上的hosts文件进行转换。hosts文件通经常使用于补充或代替网络中DNS的功能。


依据目的IP请求建立TCP连接。

TCP连接建立后,发送端向接收端发送一个IP数据报。


数据报交由ARP模块进行地址转换。ARP模块把32位IP地址转换为48位以太网地址。

ARP模块以广播的方式发送一个ARP请求到本网络的全部主机上。

ARP请求中包括目的主机的IP地址,表示“假设你是这个IP地址的拥有着。请回答你的硬件地址”。


目的主机的ARP模块收到这个请求后。返回一个ARP应答告诉对方自己的硬件地址。

发送端收到接收端的硬件地址后,就行通过以太网驱动程序发送数据了。


这里有两点须要注意:
  • 以太网驱动程序要发送数据,并须要知道目的端的硬件地址(通常是以太网地址),IP地址对它来说是无法识别的。也就是说。链路层间通信使用硬件地址,而链路层之上的通信则採用IP地址。
  • 上述过程是目的主机在同一个网络中。

    假设目的主机不在本网络中。那么就须要通过IP路由选择把数据发到外网了。这时,ARP解析到的硬件地址就会是下一跳路由器的硬件地址。


以下来看看ARP的分组格式:


下面是用Wireshark抓取的数据,以太网首部例如以下:


目的地址全为1表示发送的是广播,同一以太网上的全部接口都可以接收到此广播数据帧。类型字段0x0806表示ARP请求或ARP应答。究竟是请求还是应答。要依据ARP包内的某个标识区分。


ARP请求包例如以下:


以下逐一分析每一个字段。

2字节硬件地址表示硬件地址类型。如以太网、令牌环网等。这里的值为1。表示硬件地址为以太网地址。

2字节协议类型表示要映射的协议地址类型。

这里的值为0x0800,表示IP地址。


1字节硬件地址长度,单位为字节。这里的值为6,表示48位以太网地址。


1字节协议地址长度,单位为字节。

这里的值为4。表示32位IP地址。


2字节op字段指出四种操作类型:
  • 1表示ARP请求
  • 2表示ARP应答
  • 3表示RARP请求
  • 4表示RARP应答
究竟是请求还是应答就是通过这个字段来区分的。

6字节发送端以太网地址。

4字节发送端IP地址。

6字节目的端以太网地址。注意,ARP的目的就是获得对方的硬件地址,发送端在发送ARP请求时显然还不知道目的端的硬件地址为多少。所以这个字段所有填充0.

4字节目的端IP地址。

当目的端收到发给自己的ARP请求后,它会做例如以下工作:
  • 将上述目的端以太网地址用自己的硬件地址填充
  • 交换发送和接受的方向
  • op字段改为2,表示ARP应答
  • 发送

參考:
《TCP/IP具体解释》 P38-P41.
posted @ 2017-05-09 08:48  llguanli  阅读(195)  评论(0编辑  收藏  举报