• 关于ARP协议


    什么是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缓存表,(windows:arp –a、清除arp缓存:arp –d (如果要清除指定的arp的话需要指定IP地址))

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

               ip和Mac之间的解析式由ARP协议完成的

               ARP协议应用于LAV局域网内

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

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

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

    arp缓存表是把双刃剑:

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

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

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

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

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

    3、A收到B的回复之后,将B的MAC地址封装到帧里面,并且将B的信息保存在自己的ARP缓存中,当然B也会保存A的MAC地址信息(因为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在生产环境中产生的问题:

    1、ARP欺骗和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%system32arp.exe–d

             %WINDIR%system32arp.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
    以上两个命令均可。命令参数的含义这里省略了。

  • 相关阅读:
    android openGL ES2 一切从绘制纹理開始
    HTML5 界面元素 Canvas 參考手冊
    python进阶十_正則表達式(一)
    HDU 3016 Man Down(线段树)
    android 自己定义dialog并实现失去焦点(背景透明)的功能
    上海传智程序员携手设计狮美女雨中烧烤!!
    vim visual操作备忘
    MySQl Study学习之--MySQl二进制日志管理
    Android View measure (三) 经常用法
    Analyze提示:Value stored to "***"is never read
  • 原文地址:https://www.cnblogs.com/wajika/p/6627656.html
Copyright © 2020-2023  润新知