博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARP-Address Resolution Protocol-地址解析协议
阅读量:5950 次
发布时间:2019-06-19

本文共 1012 字,大约阅读时间需要 3 分钟。

主要内容摘自:图解TCP/IP

ARP是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备的mac地址。

如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。

不过ARP只适用于IPv4,不能用于IPv6。IPv6可以用ICMPv6替代ARP发送邻居探索消息。

ARP的工作机制

ARP是如何知道MAC地址的呢?简单地说,ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的。

从一个IP地址发送ARP请求包以了解其MAC地址(同时ARP请求包也将自己的MAC地址告诉了对方),目标地址将自己的MAC地址填入其中的ARP响应包返回到IP地址。由此,可以通过ARP从IP地址获得MAC地址,实现链路内的IP通信。

不是每次发送一个IP数据报都要进行一次ARP请求,接收端主机缓存MAC地址,提高效率,避免不必要的网络流量。

记录IP地址与MAC地址对应关系的数据库叫做ARP表。在UNIX或windows中可以通过“arp -a”命令获取该表信息。每执行一次ARP,其对应的缓存内容都会被清除。此外,MAC地址的缓存是有一定期限的。超过这个期限,缓存的内容将被清除。

ARP包格式

RARP

RARP (Reverse Address Resolution Protocol)是将ARP反过来,从MAC地址定位IP地址的一种协议。

一般用于向RARP服务器获取IP地址。

代理ARP

通常ARP包会被路由器隔离,但是采用代理ARP(proxy ARP)的路由器可以将ARP请求转发给邻近的网段。由此,两个以上的网段的节点之间可以像在同一个网段中一样进行通信。

在目前的TCP/IP网络中,一般情况下用路由器连接多个网络时,会在每个网段上定义各自的子网,从而进行路由控制。然而,对于那些不支持设定子网掩码的老设备来说,不适用代理ARP,有时就无法更好地适用网络。

ARP命令

一般执行arp -a即可显示所有网口mac。windows mac如下,-s添加,-d删除,-a显示。

ARP -s inet_addr eth_addr [if_addr]

ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]

ARP包解析

通过wireshark抓取arp包。

arp请求包

arp响应包

 

转载地址:http://weixx.baihongyu.com/

你可能感兴趣的文章
nginc+memcache
查看>>
linux下crontab实现定时服务详解
查看>>
Numpy中的random模块中的seed方法的作用
查看>>
关于jsb中js与c++的相互调用
查看>>
UVA 122 Trees on the level 二叉树 广搜
查看>>
POJ-2251 Dungeon Master
查看>>
tortoisesvn的安装
查看>>
URAL 1353 Milliard Vasya's Function DP
查看>>
速读《构建之法:现代软件工程》提问
查看>>
Android onclicklistener中使用外部类变量时为什么需要final修饰【转】
查看>>
django中聚合aggregate和annotate GROUP BY的使用方法
查看>>
TFS简介
查看>>
docker管理平台 shipyard安装
查看>>
Bootstrap3 栅格系统-简介
查看>>
ADODB类库操作查询数据表
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
sed处理文本
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>