浅析地址解析协议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):     在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地 址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件...
  • WRNGT
  • WRNGT
  • 2017-07-13 22:14
  • 351

地址解析协议ARP

地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

ARP地址解析协议

ARP:地址解析协议,用来将IP地址转化成MAC地址的。 在网络通信中,数据包首先被网卡接受到再去处理 上层协议,如果接受到的数据包的硬件地址与本机不符,则直接丢弃。所以当数据报到达目标网段...

ARP地址解析协议

ARP协议详解

arp 地址解析协议

作用是IP地址和MAC地址关联。只要有TCP/IP协议的机器中会有一张ARP表,在windows系统中 运行-----cmd------arp –a,就可以看到当前所连接的设备的ip地址和对应的MAC...

ARP:地址解析协议

虽然在通常情况下,IP包是根据IP地址发送的,但实际上必须用硬件地址在网络链路层上传送数据(点到点链路除外,在这种链路上,目的地址的标示有时是隐含的)。ARP,即地址解析协议,能发现与特定IP地址相关...

ARP:地址解析协议

1. ARP的数据包格式 以太网的帧头部(橙色部分) 广播MAC地址(全1):其目标是网络上的所有主机 源MAC地址:请求地址解析的主机MAC地址  协议类型:0x0806(ARP...

ARP:地址解析协议

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

ARP——地址解析协议

目录: 1:概述 2:ARP报文格式 3:ARP解析缓存 4:ARP实现例程 1、概述 1.1:当数据需要在不同的局域网中进行传输时,由于不同的局域网可能其物理地址(MAC地址)格式不同,所以制定...

地址解析协议(ARP)

1.概述    当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查I P数据报中的目的I P地址。地址解析为这两种不...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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