ARP(Adress Resolution Protocol): 地址解析协议
地址解析协议(Address Resolution Protoclol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利。它是IPV4中网络层必不可少的协议。不过在IPV6中已经不再适用,并被邻居发现协议(NDP)所代替。
当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动器从不检查IP数据报中的目的IP地址。从逻辑Internet地址到对应的物理硬件地址需要进行翻译。这就是ARP的功能.
在ARP背后有这样一个基本概念,那就是网络接口都有一个硬件地址(一个48bit的值,标识不同的以太网或令牌环网络地址)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是TCP/IP有自己的地址:32bit的IP地址。知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端地址的硬件地址才能发送数据。ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。
点对点(PPP)链路不使用ARP地址。当设置这些链路时(一般在引导过程中)必须告知内核链路每一端的IP地址。向以太网这样的硬件地址并不涉及。
一、 基本原理
在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,TCP/IP有自己的地址:32bit的IP地址。知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。
如果请求时从一个网络的主机发往另一个网络上的主机。那么连接两个网络路由器就可以回答该请求,这个过程称为委托ARP或ARP代理(proxy ARP)。
二、工作过程
每台安装有TCP/IP的电脑或路由器都有一个ARP缓存表,表里的IP地址与MAC地址是相对应的。
主机地址 | IP地址 | MAC地址 |
A | 192.168.38.10 | 00-AA-00-62-D2-02 |
B | 192.168.38.11 | 00-BB-00-62-C2-02 |
C | 192.168.38.12 | 00-CC-00-62-C2-02 |
以主机A(192.168.38.10)向主机B(192.168.38.11)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址为(00-BB-00-62-C2-02),直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播(ARP request),目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询 问:“192.168.38.11的MAC是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应(ARP response):“192.168.38.11的MAC地址是(00-BB-00-62-C2-02)”。 同时B也会把A的这条记录添加到ARP缓存中。这样,主机A主机收到来自B的ARP回答,知道了B的硬件地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内(一般20分钟)如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
我们还知道,ARP请求是广播的,但是ARP应答的目的地址却是发出请求的主机地址。ARP应答是直接发送到请求端主机的,而非广播的。
一般情况下,当系统收到ARP请求或发送ARP应答时,都要把请求端的硬件地址和IP地址存入存入ARP告诉缓存。
ARP查询与回复的例子: 1 0:0:0c:6f:2d:40 ff:ff:ff:ff:ff:ff arp 60
arp who-has 192.168.1.2 tell 192.168.1.1
2 0:0:c0:c2:9b:26 0:0:0c:6f:2d:40 arp 60
arp reply 192.168.1.2 is-at 0:0:c0:c2:9b:26
发送广播ARP报文的IP地址为:192.168.1.1,MAC地址为:0:0:0c:6f:2d:40,发送的目的地址为ff:ff:ff:ff:ff:ff (广播地址),询问的IP是192.168.1.2。IP地址是192.168.1.2的主机收到这条报文后,更新自己的arp缓存,并把自己的mac地址(0:0:c0:c2:9b:26)和IP地址(192.168.1.2)组成的报文发送给询问方0:0:0c:6f:2d:40。
四、免费ARP
免费ARP(gratuitous ARP),它是指主机发送ARP查找自己的IP地址。通常,它发生在系统引导期间进行接口配置的时候。
1 0.0 0:0:0c:6f:2d:40 ff:ff:ff:ff:ff:ff arp 60
arp who-has 140.252.13.35(询问的IP) tell 140.252.13.35(发送询问的IP)
源mac地址:0:0:0c:6f:2d:40 目的mac地址:ff:ff:ff:ff:ff:ff(广播地址)
询问140.252.13.35的硬件地址,如果有主机应答,那么arp回答的报文发送给140.252.13.35。
免费ARP有两方面的作用:
1. 一个主机可以通过它来确定另一个主机是否设置了相同的IP地址。发送端的主机并不希望对此请求有一个回答。但是如果接到一个回答,那么就会在终端日志上产生一个错误消息。
2.如果发送免费ARP的主机正好改变了硬件地址(很可能是主机关机了,并换了一块接口卡,然后重新启动),那么这个分组就可以使其他主机告诉缓存中旧的硬件地址进行相应的更新。一个比较著名的ARP事实是,如果主机收到某个IP地址的ARP请求,而且它已经在接收者的高速缓存中,那么就要用ARP请求中的发送端硬件地址(如以太网地址)对高速缓存中的相应的内容进行更新。主机接收到任何ARP请求都要完成这个操作(ARP请求是在网上广播的,因此每次发送ARP请求时网络上的所有主机都要这样做)
参考资料:
1.《TCP/IP详解 卷1:协议》
2. 《计算机网络-自顶向下方法》(第四版)5.4
ARP(Adress Resolution Protocol): 地址解析协议的更多相关文章
- 网络协议抓包分析——ARP地址解析协议
前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...
- arp:地址解析协议(Address Resolution Protocol)(来自维基百科)
地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I ...
- ARP(Address Resolution Protocol)地址解析协议初识
ARP址解析协议是根据IP地址获取物理地址的一个TCP/IP协议.它工作在OSI七层模型的中第二层——数据链路层. 使用ARP地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址 ...
- ARP (地址解析协议)
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机, ...
- 【RL-TCPnet网络教程】第23章 RL-TCPnet之地址解析协议ARP
第23章 RL-TCPnet之地址解析协议ARP 本章节为大家讲解ARP(Address Resolution Protocol,地址解析协议),通过前面章节对TCP和UDP的学习,需要大家 ...
- TCP/IP的排头兵――地址解析协议(ARP) (转载)
转自:http://blog.csdn.net/wangxg_7520/article/details/2488442 一.引言 古人行军打仗,都要有一个可以引领队伍前进方向的排头兵,在TCP/IP网 ...
- ARP(地址解析协议)
目录 1. ARP 概述 2. ARP 协议工作原理 3. ARP 缓存 4. ARP 报文格式 5. 抓包分析 5.1. ARP 请求报文 5.2. ARP 应答报文 6. 免费 ARP 7. AR ...
- 地址解析协议(ARP) 分析
什么是ARP协议 ARP(A ddress R esolution P rotocol)- 地址解析协议 ,用于将IP地址解析为MAC地址.复杂来说,ARP用于32位IPv4地址和以太网的48位MAC ...
- 【网络协议】ARP地址解析协议
地址解析协议ARP 在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址.而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址.这就导致在以太 ...
随机推荐
- 关于NODEJS性能测试和优缺点总结
最近公司开发了一套新产品,采用nodejs前端+Java后端框架,为完全的前后端分离结构,以下为相关信息. 软件及功能: 软件 功能 Nginx 负责反向代理和负载均衡 Nodejs 前端代码 JDK ...
- 20155212 2016-2017-2 《Java程序设计》第4周学习总结
20155212 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 Chapter 6 继承基本上就是避免多个类间重复定义共同行为. private成员会被继承 ...
- js日期控件遇到的问题
一.问题: 在web项目里有很多时候需要使用日期控件来完成相关的功能,但是日期控件的日期格式又和我们的需求不符 那么,就需要我们来自定义日期的格式完成需求 二.解决: 1.取月末: (1)强制取值: ...
- dsp6657的helloworld例程测试-第二篇-CFG文件
1. 上一篇疑问,int StackTest()这个函数是怎么运行的,后来在.cfg文件找到了答案,.cfg包含丰富的信息,对于用惯C语言的,确实不太习惯 var Memory = xdc.useMo ...
- Javascript格式化并高亮xml字符串
Javascript格式化并高亮xml字符串 两个关键点 使用DOMParser解析xml 递归遍历xml树,按格式输出每一个节点 关于使用DOMParser 此方法目前在IE9以上和其它浏览器里都是 ...
- Mac系统STF自动化环境搭建及部署踩坑记录
因为公司需要寻找一个免root的自动化测试方案,所以以前做的老方案需要被替代.一阵搜寻找到了这个框架,但是部署起来很是折腾,搞了一下午终于搞定,顺便记录一下过程,有需要的自取. 转载请注明出处:htt ...
- 虚拟货币——比特币行情价格分析
最近挖以太币的朋友们在关注以太坊行情时,一定会发现以太币的价格对比之前上涨了不少.肯定有部分朋友想了解这次上涨的原因,我们特地为此查询了一番.因为比特币相当于虚拟货币中的黄金,它的价格波动会波及到其他 ...
- MySQL高性能优化实战总结
1.1 前言 MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰.在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多 ...
- v-on 事件修饰符
事件修饰符: .stop 阻止冒泡 .prevent 阻止默认事件 .capture 添加事件侦听器时使用事件捕获模式 .self 只当该事件在该元素本身时(不是子元素)触发时才回调 .once ...
- mysql group by 取第一条
select * from table where id in (select max(id) from table group by sku) 说明:id是自增序列,sku是表中的一个字段