zoukankan      html  css  js  c++  java
  • Lvs原理及部署之ARP协议

     1、什么使ARP协议

        ARP协议,全称"Address Resolution Protocol" ,中文名是地址解析协议,使用ARP协议可实现通过IP地址获得对应的物理地址(MAC地址)。
        在TCP/IP的网络环境下,每个联网的主机都会被分配一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网络上传输,还必须要知道对方目的主机的物理地址(MAC)才行。这样就存在把IP地址转换成物理地址的地址转换的问题。
        我们以以太网环境为例说明,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为目的主机48位以太网地址(MAC地址)。这就需要在互连层有一个服务或功能将IP地址转换为相应的物理地址(MAC地址),这个服务或者功能就是ARP协议。
        所谓的"地址解析",就是主机在发送帧之前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证主机间互相通信的顺利进行。
    ARP协议要求通信的主机双方必须在同在一个物理网段(即局域网环境)

    2、ARP协议工作原理及过程

    如上图所示
    1、主机10.1.1.1向发送数据给主机10.1.1.2,检查缓存,发现没有10.1.1.2的MAC地址
    2、主机10.1.1.1发送ARP广播
    3、所有主机都接收到10.1.1.1的ARP广播,但只有10.1.1.2给10.1.1.1一个单播回复,并缓存10.1.1.1的MAC地址
    4、主机10.1.1.1将10.1.1.2的MAC地址保存到缓存中,发送数据

    2.1 ARP缓存表

      在每台安装有TCP/IP协议的电脑里都会有一个ARP缓存表(windows命令提示符里输入arp -a即可),表里的IP地址与MAC地址是一一对应的

    有arp缓存表可以加快ARP的解析速度(减少广播风暴)。

    arp缓存表,给恶意黑客带来的攻击服务器主机的风险,这就是arp欺骗或者arp攻击

    3、为什么要使用ARP协议

      OSI模型把网络工作分为七层,彼此不直接打交道,只通过接口(layer interface)。IP地址工作在第三层,MAC地址工作在第二层。当协议在发送数据包时,需要先封装第三层(IP地址),第二层(MAC地址)的报头,但协议只知道目的节点的IP地址,不知道其MAC地址,又不能跨第二三层,所以用ARP协议服务。(ARP协议属于三层)

    4、ARP在生产环境产生的问题和解决方法。

    • ARP病毒、ARP欺骗
    • 高可用服务器对切换时要考虑ARP缓存的问题。
    • 路由器等设备无缝迁移时要考虑ARP缓存的问题,例如:换办公室的路由器。

    5、ARP欺骗原理

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

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

    6、服务器切换ARP问题

      当网络中一台提供服务的机器宕机后,当在其他运行正常的机器添加宕机的机器的IP时,会因为客户端的ARP table cache的地址解析还是宕机的机器的MAC地址。从而导致,即使在其他运行正常的机器添加宕机的机器的IP,也会发生客户依然无法访问的情况。

      解决方法是:当机器宕机,IP地址迁移到其他机器上时,需要通过arping命令来通过所有网络内机器清楚其本地的ARP table cache,从而使客户机访问时重新广播获取MAC地址。

      这个在自己开发脚本实现服务器的高可用时要必须考虑的问题之一,几乎所有的高可用软件都会考虑这个问题。

    ARP广播而进行新的地址解析

  • 相关阅读:
    奔驰4-MATIC和奥迪quattro的区别和共同点是什么(杂记)
    ibatis.net:QueryForObject(转)
    iBatis入门(转)
    javax.servlet.ServletException: java.lang.NullPointerException 空指针异常
    报错:Action[/statisticsManage] does not contain specified method (check logs)
    eclipse下,64位tomcat报错(转)
    Resource '/servers' does not exist 问题的解决(转)
    Ext.data.SimpleStore的使用方法
    combo的displayField和valueField属性
    Exception occurred during processing request: null java.lang.NullPointerException
  • 原文地址:https://www.cnblogs.com/hwlong/p/5932626.html
Copyright © 2011-2022 走看看