ARP地址解析协议

本文详细介绍了ARP地址解析协议的工作原理及流程。从客户端通过FTP协议连接服务器开始,到完成硬件地址的解析并成功发送数据,全面解析了ARP如何实现IP地址到硬件地址之间的动态映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

以下图为例说明地址解析协议的具体工作流程。


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

客户端通过FTP协议连接服务器时,首先解析器会把主机名转换为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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值