浅析地址解析协议ARP

原创 2017年07月13日 22:14:59

地址解析协议(ARP):

    在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地
址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不
符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机
发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少,并将这个请求广播到本地网
段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP
求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写
在应答包中。

arp的分组字段格式:


以太网头部部分分别为以太网硬件的地址的发送方和接收方的硬件地址,比如MAC地址。当前的的硬件地址全为1(即为0xFF FF FF FF FF FF)的地址时,为广播帧,在以太网的所有接口都要接受此帧数据;
帧类型即就是表示后面数据的类型,对于ARP请求应答,该字段为0x0806;

下面列出了帧类型字段中常用值及其对应的协议: 
帧类型                    协议 

0x0000 - 0x05DC   IEEE 802.3 长度 
0x0101 – 0x01FF   实验 
0x0600   XEROX NS IDP 
0x0660 
0x0661   DLOG 
0x0800   网际协议(IP) 
0x0801   X.75 Internet 
0x0802   NBS Internet 
0x0803   ECMA Internet 
0x0804   Chaosnet 
0x0805   X.25 Level 3 
0x0806   地址解析协议(ARP : Address Resolution Protocol) 
0x0808   帧中继 ARP (Frame Relay ARP) [RFC1701] 
0x6559   原始帧中继(Raw Frame Relay) [RFC1701] 
0x8035   动态 DARP (DRARP:Dynamic RARP)反向地址解析协议(RARP:Reverse Address Resolution Protocol) 
0x8037   Novell Netware IPX 
0x809B   EtherTalk 
0x80D5 IBM SNA Services over Ethernet 
0x 80F 3   AppleTalk 地址解析协议(AARP:AppleTalk Address Resolution Protocol) 
0x8100   以太网自动保护开关(EAPS:Ethernet Automatic Protection Switching) 
0x8137 因特网包交换(IPX:Internet Packet Exchange) 
0x 814C   简单网络管理协议(SNMP:Simple Network Management Protocol) 
0x86DD   网际协议v6 (IPv6,Internet Protocol version 6) 
0x880B   点对点协议(PPP:Point-to-Point Protocol) 
0x 880C   通用交换管理协议(GSMP:General Switch Management Protocol) 
0x8847 
多协议标签交换(单播) MPLS:Multi-Protocol Label Switching <unicast>) 
0x8848   多协议标签交换(组播)(MPLS, Multi-Protocol Label Switching <multicast>) 
0x8863   以太网上的 PPP(发现阶段)(PPPoE:PPP Over Ethernet <Discovery Stage>) 
0x8864   以太网上的 PPP(PPP 会话阶段) (PPPoE,PPP Over Ethernet<PPP Session Stage>) 
0x88BB 轻量级访问点协议(LWAPP:Light Weight Access Point Protocol) 
0x88CC   链接层发现协议(LLDP:Link Layer Discovery Protocol) 
0x8E88   局域网上的 EAP(EAPOL:EAP over LAN) 
0x9000 配置测试协议(Loopback) 
0x9100   VLAN 标签协议标识符(VLAN Tag Protocol Identifier) 
0x9200   VLAN 标签协议标识符(VLAN Tag Protocol Identifier) 
0xFFFF   保留 
硬件类型字段定义物理地址的类型,它的值为1表示MAC地址。
协议类型字段表示要映射的协议地址类型,它的值为0x800,表示IP地址。
硬件地址长度字段和协议地址长度字段,顾名思义,其单位是字节。对MAC地址来说,其长度为6;对IP(v4)地址来说,其长度为4。
操作字段指出4种操作类型:ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)。
最后4个字段指定通信双方的以太网地址和IP地址。发送端填充除目的端以太网地址外的其他3个字段,以构建ARP请求并发送之。接收端发现该请求的目的端IP地址是自己,就把自己的以太网地址填进去,然后交换两个目的端地址和两个发送端地址,以构建ARP应答并返回之(当然,如前所述,操作字段需要设置为2)。
ARP请求/应答报文的长度为28字节。如果再加上以太网帧头部和尾部的18字节,则一个携带ARP请求/应答报文的以太网帧长度为46字节。不过有的实现要求以太网帧数据部分长度至少为46字节(见图1-4),此时ARP请求/应答报文将增加一些填充字节,以满足这个要求。在这种情况下,一个携带ARP请求/应答报文的以太网帧长度为64字节。
在每台主机中都有一张ARP表,它记录着主机的IP地址和MAC地址的对应关系。
ARP协议:ARP协议是工作在网络层的协议,它负责将IP地址解析为MAC地址。
1)如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系,如果有,则会将主机B的MAC地址作为源MAC地址封装到数据帧中。如果没有,主机A则会发送一个ARP请求信息,请求的目标IP地址是主机B的IP地址,目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主机A的IP地址和MAC地址。
2)当交换机接受到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。
3)当主机B接受到此数据帧后,会校对IP地址是否是自己的,并将主机A的IP地址和MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答,其中包括自己的MAC地址。
4)主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系
使用ifconfig查看当前网络号:

编写一个脚本获取当前局域网主机的MAC地址:
在脚本中我们可以先使用ping命令:
    网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的相关信息。
再然后我们使用arp命令:
    ARP -A,查询系统中缓存的ARP表。ARP表用来维护IP地址与MAC地址的一一对应。
    当然如果我们直接查看arp缓存表,将查看所有逻辑地址的ip,但是在一个网段中,并非所有的逻辑地址都对应有设备,只有我们ping的地址存在,才可返回给我们源主机数据包,进而才有arp协议解析出mac地址与ip地址的对应

    但是在查看中并非所有的逻辑地址均有设备,因此 我们过滤掉arp缓存表中含有incomplete字符的行
由此,我们编写脚本如下:


#!/bin/bash
i=1
count=0
while [ $i -le 254 ]
do
    if [ $count -gt 10 ];then
        count=0
        sleep 1
    fi
    ping -c1 192.168.1.$i &
    let i++
    let count++
done
wait
echo "##################################"
arp -a | grep -v incomplete
echo "##################################"




版权声明:本文为博主原创文章,未经博主允许不得转载。

ARP地址解析协议原理

理解ARP协议 ARP地址解析协议,是一个很重要的协议。当一个数据帧经过多次路由到达目的网络时,路由器只能知道其数据帧中的目的IP地址,而不知目标主机的硬件地址(网络层使用的是IP地址,但是在实际网...
  • D_leo
  • D_leo
  • 2017年06月25日 23:19
  • 627

ARP地址解析协议工作原理

ARP 是地址解析协议,简单解释一下工作原理。 ( 1 )首先,每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。 ( 2 )当源主机...
  • Tanganq
  • Tanganq
  • 2017年10月17日 14:57
  • 404

ARP地址解析协议

我们假设这样一个场景:你需要和你网络中的一个设备进行通信,这个设备可能是某种服务器。你用来创建这个通信的应用已经得到了这个远程主机的ip地址,也意味着系统已经有了用来构建它想要在第三层到第7层传递数据...
  • rongdeguoqian
  • rongdeguoqian
  • 2014年01月03日 23:22
  • 3662

ARP地址解析协议总结

记得上次讨论会的时候讲到了ARP协议,当初的自己觉得这个协议很简单嘛,就是ip地址与MAC地址之间的对应关系呀。在进行数据传输的时候,实际上所有的数据最终都要转化到二层,这样需要ip地址与MAC地址生...
  • wswit
  • wswit
  • 2016年09月18日 22:46
  • 2503

第四章 ARP: 地址解析协议

1. 引言    数据链路都有自己的寻址机制:这使得数据链路的任何网络层都必须遵从的。当主机把以太网数据帧发送到位于同一局域网的另一台主机时,是依据48bit的以太网地址来确定接口,而不是检查IP地...
  • ZHEN_XIAO123
  • ZHEN_XIAO123
  • 2014年06月26日 11:44
  • 626

ARP:地址解析协议

引言 本章我们要计论的问题是只对TCP/IP协议簇有意义的IP地址。数据链路如以太网或令牌环网都有自已的寻址机制(常常为48bit地址),这是使用数据链路的任网络层必须遵从的。一个网络如以太网可以同...
  • xqq771084591
  • xqq771084591
  • 2012年03月10日 14:34
  • 2038

计算机网络--ARP地址解析协议详解

前言最近在看计算机网络的书,有些内容看完就忘了,还是总结一下。IP地址与MAC地址要理解ARP协议的工作原理必须先理解IP地址和MAC地址的区别,MAC地址是数据链路层和物理层使用的地址,而IP地址是...
  • u013309870
  • u013309870
  • 2017年08月20日 11:26
  • 522

ARP协议-地址解析的过程

关于ARP协议,大部分人只是简单地知道:这个协议是通过IP地址来获取MAC地址的 但是,这个真的有这么简单吗???它是如何获取MAC地址的呢??? (ARP地址解析协议,   RARP反向...
  • msdnwolaile
  • msdnwolaile
  • 2016年02月19日 21:35
  • 708

TCP/IP详解卷一 第四章 ARP地址解析协议 第五章 RARP反向地址解析协议

1 点对点链路不使用A R P。当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的I P地址 ...
  • hnust_xiehonghao
  • hnust_xiehonghao
  • 2014年06月01日 21:32
  • 1949

ARP:地址解析协议/RARP:逆地址解析协议

数据链路如以太网或令牌环网都有自己的寻址机制(常常为48bit),这是使用数据链路的任何网络层都必须遵从的。当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机上时,是根据48bit的以太网地址...
  • sunnyliqian
  • sunnyliqian
  • 2016年05月23日 20:07
  • 627
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅析地址解析协议ARP
举报原因:
原因补充:

(最多只允许输入30个字)