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.

ARP地址解析协议的更多相关文章

  1. ARP地址解析协议原理

    概述 网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口.因此我们需要进行IP地址与物理地址之间的转化. 对于IPv4来说,我们使用ARP地址解析协议来完成IP地址 ...

  2. 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议

    4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...

  3. ARP:地址解析协议

    ARP是地址解析协议,简单语言解释一下工作原理.1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系.2:当源主机要发送数据时,首先检查ARP列表中 ...

  4. arp:地址解析协议(Address Resolution Protocol)(来自维基百科)

    地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I ...

  5. 【网络协议】ARP地址解析协议

    地址解析协议ARP 在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址.而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址.这就导致在以太 ...

  6. 【网络基础】ARP地址解析协议

    ARP(Address Rssolution Protocol) 地址解析协议 用于将IP地址解析为MAC地址. MAC地址是设备的物理地址,是被分配给每一个网络接口卡的全球唯一序号. 全球唯一:理论 ...

  7. 网络协议抓包分析——ARP地址解析协议

    前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...

  8. 第二章ARP——地址解析协议

    本章我们要讨论的问题是只对 T C P / I P协议簇有意义的I P地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为 48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络 ...

  9. 第四章:ARP 地址解析协议

    网络接口有一个硬件地址,48bit的值,在硬件层次上进行的数据帧交换必须有正确的接口地址.tcp/ip有自己的地址,32bit的IP地址. 但是知道主机的IP地址并不能让内核发送一帧数据给主机.内核( ...

随机推荐

  1. iOS面试题05-父子控制器、内存管理

    内存管理.父子控制器面试题 1.建立父子关系控制器有什么用 回答:1>监听屏幕选中 2>如果想拿到你当前的很小的一个控制器所在的导航控制器必须要跟外面比较大的控制器建立父子关系,才能一层一 ...

  2. Tomcat启动报Error listenerStart错误

    http://xpenxpen.iteye.com/blog/1545648 今天启动Tomcat启动不了,报以下错: org.apache.catalina.core.StandardContext ...

  3. Cookie管理

    1,判断来访者是否第一次 public class VistorTest extends HttpServlet { @Override protected void doGet(HttpServle ...

  4. 一道试题引发的血案 int *ptr2=(int *)((int)a+1);

    某日,看到一道比较恶心的C语言的试题,考了很多比较绕的知识点,嘴脸如下: int main(void) { int a[4] = {1, 2, 3, 4}; int *ptr1=(int *)(&am ...

  5. (转)经典线程同步 互斥量Mutex

    阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <秒杀多线程第五篇经典线程同步关键段CS> <秒杀多线程第六篇经典线程同步事件Event& ...

  6. Problem B: Excuses, Excuses!

    Description Judge Ito is having a problem with people subpoenaed for jury duty giving rather lame ex ...

  7. pthread_wrap.h

    #ifndef _PTHREAD_WRAP_H#define _PTHREAD_WRAP_H#include <pthread.h> class hm_pthread_mutex{publ ...

  8. 在Oracle 11g中用看Oracle的共享内存段---------IPCS

    很早之前,在一次讲课了,用了命令ipcs,发现oracle的共享内段好小,如下: oracle@mydb ~]$ ipcs -a ------ Shared Memory Segments ----- ...

  9. 用C#开发较完整的Windows任务管理器

    原文 用C#开发较完整的Windows任务管理器 这个代码没有什么技术含量,仅仅使用 WMI 和 API 实现了 Windows 任务管理器的部分功能. 但代码里面封装了一个 SystemInfo 的 ...

  10. 在VPS上安裝BT軟體Transmission

    在VPS上安裝BT軟體Transmission   作者: 窮苦人家的小孩 | 2009-12-04 55 Comments   VPS 還能怎玩?! 裝Proxy,裝VPN,這還不夠,我還用來掛種子 ...