什么是arp协议:

    arp协议是地址解析协议,英文是address resolution protocol

通过IP地址可以获得mac地址

两个主机的通信归根到底是MAC地址之间的通信

    在TCP/IP的网络环境下,每个联网的主机都会被分配一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址

,为了让报文能够在物理网络上传输,还必须要知道对方主机的物理地址(MAC地址),这样就存在把IP地址转换成物理地址的问题。

    我们以以太网为例,为了正确的向目的主机发送报文,必须把目的主机的32位IP地址转换成48位的以太网地址(MAC地址),这就需要在互联层有各个服务或功能将IP地址转换成响应的物理地址,这个服务或者功能就是ARP协议。

    所谓的“地址解析”,就是主机在发送帧之前将目的IP地址转换成目的主机的mac地址的过程,

    ARP协议的基本功能就是通过目标设备的IP地址,查询目标主机的MAC地址,以保证主机间互相通信的顺利进行

    ARP协议和DNS有点相像之处,不同点是DNS在域名和ip地址之间解析,而ARP是在IP地址和MAC地址之间解析,当然,他们都支持反向解析

ARP代理(ARP proxy)的工作原理:

         ARP协议要求通信的主机必须在同一个物理网段内(局域网环境),如果不在同一个局域网内的话就需要ARP代理了

         当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的mac地址,两者也不能通信,必须通过路由或ARP中继等技术转发才可以,此时发送主机通过ARP协议获得的将不是目的主机的MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址,于是伺候发送主机发往目的主机的所有帧都将发往该路由器或者该ARP中继,通过它向外发送,这种情况称为ARP代理

ARP通信过程:

ARP广播的形式发出

以单播的形式回复

每台主机都有ARP缓存表,(windowsarp –a、清除arp缓存:arp –d (如果要清除指定的arp的话需要指定IP地址))

小结:主机之间的通信最终是基于MAC地址的

           ipMac之间的解析式由ARP协议完成的

           ARP协议应用于LAV局域网内

           arp协议是通过广播的方式工作的

           主机通讯后会缓存arp解析结果

arp表的好处:加快主机通讯的速度,减少arp广播风暴

arp缓存表是把双刃剑:

1arp缓存表可以加快arp解析的速度

2ARP欺骗(网关的IP地址是对的,但是Mac地址不对)(网关欺骗)

ARP协议的工作原理过程:A为发送主机,B为目标主机

1A要给B发送文件,A会查找自己的ARP缓存表,如果有B的缓存的话,直接发送给B,如果没有的话A会向局域网中广播ARP请求

2、只有B才会回应A的广播请求,并且以单播的形式回复

3A收到B的回复之后,将BMAC地址封装到帧里面,并且将B的信息保存在自己的ARP缓存中,当然B也会保存AMAC地址信息(因为A在广播中把自己的MAC地址广播出去了)。

注意:ARP缓存表采用了老化机制(即设置了生存时间TTL),在一段时间内(windows一般是15分钟到20分钟,linux的非常小),如果表中的某一条记录没有使用,就会被删除,这样大大减小了ARP缓存表的长度,加快查询速度,同时也增加了ARP欺骗的风险

ARP欺骗的原理:

ARP欺骗原理:

         通过伪造IP地址和MAC地址对实现ARP欺骗的。如果一台主机中了ARP病毒,那么这台主机会在网络中产生大量的ARP通信量(以很快的频率进行广播),以至于网络阻塞,攻击者只要持续不断的发出伪造的ARP响应报就能够更改目标主机ARP缓存中的ARP记录,造成网络中断或中间人攻击

         ARP攻击主要存在于局域网中,局域网中若有一台主机感染ARP病毒,则感染该ARP病毒的主机会试图通过ARP欺骗手段截获所在网络内其他主机的通信信息,并因此造成局域网内其他主机的通信故障。

ARP在生产环境中产生的问题:

1ARP欺骗和ARP攻击

2、高可用服务器切换时要考虑ARP缓存问题

3、路由器等设备无缝迁移时要考虑ARP缓存问题

为什么要使用ARP协议:

  OSI模型把网络分为7层,彼此之间不直接打交道,而是通过接口(layer interface)互相通信,IP地址工作在第三层(网络层),而MAC地址工作在第二层(链路层),当协议在发送数据包时,需要封装第三层、第二层的报头,但是协议只知道目的节点的IP地址,不知道目的节点的MAC地址,又不能跨越第二层、第三层,因此得用ARP服务

7层模型:从上到下:

应用层----表示层---会话层---传输层---网络层---数据链路层---物理层

                                     数据包       帧          bit

一般人认为ARP在网络层,TCP/IP在传输层,

RARP

    反向ARP协议,ARP是通过IP地址找MAC地址,而RARP是通过MAC地址找IP地址

    反向地址解析协议用于一种特殊情况,站点被初始化后,只有MAC地址而没有IP地址,则它可以通过RARP协议发出广播请求,征求自己的IP地址,而RARP服务器负责响应请求,RARP广泛用于获取无盘工作站的IP地址,和DHCP的工作原理相同

ARP欺骗防御和解决措施:

方法一、

         写个bat程序临时阻止ARP攻击,电脑重启后失效,需重新执行或放在开机自启动里,

         @echooff

         %WINDIR%\system32\arp.exe–d

         %WINDIR%\system32\arp.exe–s  10.10.10.10 00:0C:29:B2:A5:8C

方法二、

         在电脑上安装360

方法三、

         linux

                   iptables  -m  00:0C:29:B2:A5:8C  10.10.10.10

                   IP地址与MAC地址的对应关系加入到/etc/ethers中,然后执行arp –f命令

上网防火墙迁移到B,要用arping进行arp广播,否则的话内网主机无法上网

[root@nginx scripts]# arping --help

arping: invalid option -- '-'

Usage: arping [-fqbDUAV] [-c count] [-w  timeout] [-I device] [-s source] destination

   -f : quit on first reply

   -q : be quiet

   -b : keep broadcasting, don't go unicast

   -D : duplicate address detection mode

   -U : Unsolicited ARP mode, update your neighbours

   -A : ARP answer mode, update your neighbours

   -V : print version and exit

   -c count : how many packets to send

   -w timeout : how long to wait for a reply

   -I device : which ethernet device to use (eth0)

   -s source : source ip address

   destination : ask for what ip address

ARP广播而进行新的地址解析。
具体命令:
/sbin/arping -I eth0 -c 3 -s 10.0.0.162 10.0.0.253 
/sbin/arping -U -I eth0 10.0.0.162
以上两个命令均可。命令参数的含义这里省略了。