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. 简单的web三层架构系统【第三版】

    今天是第三版,和前几天一样今天还是要对代码进行优化,三层架构是一种思想,具体能不能使得整个系统安全和高性能,还是要看代码编写的是否合理,逻辑性是否严谨. 昨天偶然间看到别人写的三层架构中,竟然没有在方 ...

  2. Foundation 框架 NSArray、NSMutableArray排序

    一.使用selector对数组进行排序(无返回) 数组 book 中包含 AddressCard对象. 1.对数组调用 sortUsingSelector方法 -(void) sortByName { ...

  3. MVC下载Excel

    方法1: public ActionResult DownExcel() { var stream = list.Select(p => new { p.UserName, p.Mobile, ...

  4. final, finally, finalize 的区别

    1.final 用于声明属性, 方法和类, 分别表示属性不可变, 方法不可覆盖, 类不可继承.内部类要访问局部变量, 局部变量必须定义成 final 类型, 例如, 一段代码…… 2.finally ...

  5. Vector(容器)

    vector(容器)就像数组一样,但比数组强大很多,下面介绍一下vector常用的几种方法: 一.对于vector自身的处理,包括赋初始值,复制等等: vector<int> v1 ; v ...

  6. iOS现有工程 集成 Cordova/Ionic

    首先, 新建 Cordova 项目就不说了, 步骤: http://ionicframework.com/getting-started/ , cordova生成的项目用cdv_project称呼, ...

  7. [LeetCode]题解(python):070-Climbing Stairs

    题目来源: https://leetcode.com/problems/climbing-stairs/ 题意分析: 爬楼梯,一次可以爬一步或者两步.如果要爬n层,问一共有多少种爬法.比如说,如果是3 ...

  8. GCD 之 同步 异步 并发

    1. dispatch_async(dispatch_get_global_queue(, ), ^{ // 处理耗时操作的代码块... //通知主线程刷新 dispatch_async(dispat ...

  9. Myeclipse安装Activiti

    1.将压缩包内activiti文件夹放入Myeclipse\dropins文件夹内并修改activiti文件夹内Link文件指向自己的目录重启Myeclipse(这时打开bpmn文件仍会报错).2.将 ...

  10. ajaxFileUpload用法

    首先要引入两个js <script type="text/javascript" src="/static/js/jquery.js"></s ...