地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。ARP最初在1982年的RFC 826(征求意见稿)[1]中提出并纳入互联网标准STD 37。ARP也可能指是在多数操作系统中管理其相关地址的一个进程。

ARP是通过网络地址来定位MAC地址。 ARP已经在很多网路层和数据链接层之间得以实现,包括IPv4、Chaosnet、DECnet和Xerox PARC Universal Packet(PUP)使用IEEE 802标准, 光纤分布式数据接口, X.25,帧中继和异步传输模式(ATM),IEEE 802.3和IEEE 802.11标准上IPv4占了多数流量。

在IPv6中邻居发现协议(NDP)用于代替地址解析协议(ARP)。

基本功能

OSI 七层模型中tcp/ip 协议簇解决应用层、传输层、网络层问题,以太网

在TCP/IP协议中,传输层只关心目标主机的IP地址+端口地址(因为这两元素唯一的确定一个传输层的包要交互的目的地,也即目标主机上的哪个应用程序,比如udp包或者tcp包)。网络层会对传输层的包进行封装形成ip包,网络层只关心目标机器的IP地址,并根据这个ip地址寻址到网络上的目的机器。在以太网中,ip数据包又是被封装在以太网帧中,经过物理层(也就是网卡)发送到网络上,以太网帧又是根据MAC地址来寻址到目的机器的网卡的(局域网中的所有机器的网卡都会接收到这个帧,而只有该帧头部中的目的MAC地址与自己网卡的MAC地址匹配时,才会向网络协议栈交付该帧中的数据包,否则网卡就会丢弃该帧)。因此,同一局域网中的一台主机要和另一台主机或者交换机,路由器等进行网络通信时,必须要知道与本机用网线连接上的,目标设备那边的那个网络接口的MAC地址(也就是网卡的地址)。这就导致在以太网中使用IP协议向下传递IP包时,IP包被包含在以太网帧中,以太网帧是有自己的格式的,在帧头部就需要填充目的机器MAC地址,而此时从ARP表里面没有查询到目的ip地址对应的MAC地址,因此主机会暂存这个ip数据包,由于主机刚连接到这个局域网时或者重启之后,是不知道目的方的MAC地址的,如果要向目的机器发送一个ip包,就需要先知道目的机器的MAC地址,于是需要一种方法,根据目的主机的IP地址,获得其MAC地址,这个方法就是通过发送一个叫做arp请求的数据包(arp数据包也是被包含在以太网帧中的,发送时,帧头部中的目的mac地址填写为0xffffffff,表示在本地局域网上广播,这样属于该局域网的所有机器接收到一个广播帧的时候都会向协议栈递交这个帧中的数据包,这里是arp数据包)广播到该局域网中,而仅当某台机器的IP地址与该arp请求中的要询问的ip地址相同时,那台机器就才会向发送方返回一个arp回应数据包,这个回应包中就包含了先前要询问的机器的IP地址 + MAC地址,本地主机接收到这个回应的arp数据包后,会提取ip地址和mac地址,记录到一个叫做arp的表的表项中,这样就把目的主机的ip地址和mac地址对应关系记录下来了,随即找到先前由于缺少目的mac地址而暂存的数据包,并用以太网帧封装它,用该arp表项中的mac地址来填充帧头部中的MAC地址域,当这个帧被发送到局域网中之后,目标机器网卡接收到这个帧之后,判断该MAC地址和自己的MAC地址相同,就会向上层协议栈递交这个帧中的数据包,从而数据得以交付,而其他主机检测到MAC地址与本机不同,会把这个帧丢弃。这就是ARP协议要做的事情。

另外,当发送主机和目的主机不在同一个局域网中时,即便知道对方的MAC地址,两者也不能直接通信,必须经过路由器进行ip层的转发才可以,因为路由器把这个局域网进行了链路层上的隔离(除非进行网络层次的显示转发,否则路由器不会把一个局域网中的以太网帧自动的转发到另一个局域网或者外网中去,如果可以自动转发,可以想象有多可怕,无效的广播帧可能像洪水一样淹没整个网络,使得网络瘫痪,这也就是路由器的基本功能之一,隔离网络),所以此时,发送主机会把一个网关ip地址作为目的ip地址(这个是ip层决定的),那么通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)。

在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址。

arp 基本功能的更多相关文章

  1. 密码分析:使用 Ettercap 和 它的 ARP 毒化功能来嗅探流量

    vim /etc/etterconf 将 ec_uid 和 ec_gid 改为 0 需要取消下面的 IPTABLES 行的注释.它在靠近文件末尾的 LINUX 一节 ettercap -G Shift ...

  2. 【转】宽带路由器应用(三)—ARP欺骗防护功能的使用

    在局域网中,通信前必须通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址).ARP协议对网络安全具有重要的意义.通过伪造IP地址和MAC地址实现ARP欺骗,对网络的正常传输和安全都是一个很 ...

  3. 详述网络中ARP安全的综合功能

    组网图形 ARP安全简介 ARP(Address Resolution Protocol)安全是针对ARP攻击的一种安全特性,它通过一系列对ARP表项学习和ARP报文处理的限制.检查等措施来保证网络设 ...

  4. 转载《遭受arp攻击怎么办》

    ARP(Address Resolution Protocol,地址解析协议)协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行.ARP攻击仅能在以太网(局 域网如: ...

  5. 1-12 ARP协议

    ARP(Address Resolution Protocol)地址解析协议,负责将相应的IP地址解析成MAC地址. 在局域网中,网络中实际传输的是‘帧’,帧里面包含了目的主机的MAC.ARP就是用来 ...

  6. 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

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

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

  8. 浅谈局域网ARP攻击的危害及防范方法(图)

    浅谈局域网ARP攻击的危害及防范方法(图)   作者:冰盾防火墙 网站:www.bingdun.com 日期:2015-03-03   自 去年5月份开始出现的校内局域网频繁掉线等问题,对正常的教育教 ...

  9. 网络地址到物理地址的映射(ARP)

    网络的互连首先要解决的问题就是网络地址到物理地址的映射,以太网接口分配的是一个48位的物理地址,而IP地址却只有32位,因此无法将它编码到IP地址中.有人建议可以构建一个中央数据库存储所有网络中的网络 ...

  10. 网络层和arp协议

    1:arp协议功能:获取mac地址 ----------------------在同一个局域网:发送端mac  接收端mac(FF:FF:FF:FF:FF:FF:FF) 源IP  目标IP  数据 - ...

随机推荐

  1. C++书写的第一个类

    1.建立Student.h头文件 #ifndef STUDENT_H #define STUDENT_H #include <string> using namespace std; cl ...

  2. 'umi' 不是内部或外部命令,也不是可运行的程序 或批处理文件或umi: command not found

    问题 'umi' 不是内部或外部命令,也不是可运行的程序 或批处理文件或umi: command not found 解决方法 参考链接:https://blog.csdn.net/weixin_40 ...

  3. Python3注释

    Python中的注释有单行注释和多行注释: python中单行注释以#开头,例如: #这是一个注释 print("hello,word!") 多行注释用三个单引号'''或者三个双引 ...

  4. sql server 检测是否更新并输出更新的数据

    create table dbo.test1 (id int,name varchar(10))create table dbo.test2 (id int) insert into dbo.test ...

  5. 移动端唤起QQ聊天 (ios android 包含微信、qq内置浏览器)

    var u = navigator.userAgent; var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); if(isiOS){ if(u ...

  6. Application.HandleMessage与Application.ProcessMessage

    HandleMessage: HandleMessage中断应用程序的执行,以便Windows可以在将控制权返回给应用程序之前处理来自Windows消息队列的单个消息. 如果消息队列为空,则Handl ...

  7. Delphi实现大写字母键打开提示

    uses XPMan 编辑框的passwordChar属性设置成 *

  8. docker登录mysql

    一.查看mysql是否已启动 二.登录mysql 三.假如需要重启mysql 查看docker中运行的容器docker ps,再重新启动mysql,docker restart 9299415df7f ...

  9. Apple Sources

    1. libsystem_malloc.dylib的源码 https://opensource.apple.com/tarballs/libmalloc/ .这里有多个版本(例如用otool找到iOS ...

  10. linux基础知识面试题

    Linux 开机启动过程 主机加电自检,加载 BIOS 硬件信息. 读取 MBR 的引导文件(GRUB.LILO). 引导 Linux 内核. 运行第一个进程 init (进程号永远为 1 ). 进入 ...