zoukankan      html  css  js  c++  java
  • 2.1【基本路由原理】数据转发原理3

    数据转发原理

     
    //抓包看ARP的报文结构:
    注意Opcode:  1=request  (ARP)        2=reply(ARP)
                          3=request(RARP)        4=reply(RARP)
     
     
     *****************************************************************************
    普通ARP
     
     ##普通ARP的request报文:
     
         广播(获取目的IP地址的MAC);
         目的收到request报文,先检查二层,检查二层数据帧:单播帧/组播帧/广播帧,不同数据帧目的MAC地址是不一样的,单播是个单播MAC地址,广播是一个广播MAC地址;组播是一个组播MAC;
           由于request请求报文是通过广播发送的,广播帧通过二层的目的MAC地址是判断不出来是给谁的,因为广播是给大家的;需要拆了二层看三层,通过上层协议去判断这个报文是不是给我的。上层的协议是ARP协议,ARP会看目标IP ADDRESS,看目标IP地址是不是自己接口的IP地址;如果不是,丢弃掉有两种可能:
        * 1->3
        ARP请求被广播到2、3上,拆了2层看3层,通过ARP进程判断目标的IP地址是不是自己接口的IP,如果不是,2丢弃;不会生成ARP MAP;
        3会生成ARP表项,到达1的IP地址绑定一个MAC地址;严格的ARP,也不会生成对应关系,是为了避免攻击。
        ping的时候不同,第一个包是为了发送ARP的。
         
     
            
    【拓展】:wireshark是一个抓包工具,原理:首先wireshark会改变你的端口的一个工作模式,会把网卡改成混杂模式,不改成 混杂模式抓不到包的;一个 端口收到数据帧要先通过目的MAC地址是不是接收的目的MAC地址,判断这个是不是给自己的。抓包是 通过SPAN(镜像)的方式把网络中的数据帧映射过来;改端口的模式:改成混杂模式这个接口就不会去判断这个数据帧目标的MAC地址是不是自己接口的MAC了,只要收到数据帧全部看。(类比快递,不看收件人,全部都要)
       
    【拓展】:现在的一些开发人员也不会去拆这个头部,比如上网行为管理设备,实际上是可以看包的内容的,DPI(深度报文检测),是通过指针偏移,计算好包头到数据的部分一共多少个字节,然后指针偏移,看包的数据部分做一个匹配。
        
     
     ##接收者回送reply报文:单播
     
    ***********************************************************************************
    免费ARP
    自己给自己发送一个ARP请求,获取一个目标地址的MAC
    1.检测IP冲突  2.更新MAC地址
     
     
    ##检测IP冲突
    目标MAC地址的填充是0或者F没有啥区别和厂商有关系;
    发送方的IP地址是自己的IP,目标方的IP地址也是自己的IP;
    自己给自己发送ARP报文,如果收到了应答,就是有冲突;
     
    ##更新MAC地址
    防止一个ARP欺骗,同时也是一个ARP欺骗的来源;
    ARP欺骗工具:P2P终结者、聚生网管
     
    ARP欺骗:
    冒充其他人发送ARP报文(冒充网关)
    HACK可以 冒充网关发送一个免费ARP,刷新MAC地址绑定;
    PC想上网,数据全部交给路由器,通过路由器去做转发。
    PC想上网,首先要请求网关的MAC地址,获取MAC地址以后会在本地生成ARP的映射表;后续会根据映射表去封装二层目的MAC;
     
    HACK可以去冒充网关的 设备去发送免费ARP,IP是网关的IP,MAC用自己的MAC地址,发送免费ARP;
     
    PC收到免费ARP会刷新自己的MAC地址绑定表;刷新以后,后续的数据会全部发给HACK了,因为会用HACK的MAC地址做一个二层封装;
     
    HACK针对这个报文会做限速,或者丢弃;转发给路由器,转发的同时做个限速,同时也会抓取到网络上的所有报文,会造成网络的安全问题,可以抓取到密码或者聊天记录;
     
    防止ARP欺骗:
    (1)在PC上做一个ARP的静态绑定;静态绑定,免费ARP是无法刷新的;在PC上去绑定一个网关的MAC地址;
    (2)或 在路由器上每隔2秒钟或者每隔5秒钟自己发送一次免费ARP,往回刷回来;但这种方法其实也不太好,在网络里面短时间发送大量的ARP也算是一种攻击;会占用带宽;    
    (3)最好的方法是通过交换机来抑制这个ARP得欺骗,采用DAI技术;动态ARP检测,通过这种机制避免ARP的欺骗;
    交换机里面有一个表项,可以用于DAI的检测,这个表项可以通过两种方法来进行绑定 :   
    (1)静态绑定
    (2)通过DHCP来生成这个表项;有这个表项以后,再收到ARP的请求或应答,它会检查这个ARP报文发送方的IP地址和MAC地址和绑定的IP地址和MAC地址是否是对应的;如果对应,放行;如果不对应,丢弃;这样就有效避免ARP的欺骗。
     
    DAI-二层交换机就可以用;需要开启DHCP snooping
    IP-sourceguard;(IP源Guard)
     
    ##免费ARP用于冗余协议
    VRRP:
    HSRP:
    GLBP:
     
    企业一般部署双路由,主备做一个冗余或者负载;
    *PC->主,PC上GW(网关)配置成主设备的IP地址;
     
    如果主宕机,备设备起作用,需要改PC全部的网关,需要把网关全部配置一遍?不太现实的,是否有方法自动切换不需要改设备?
     
    不去改地址,自动切换设备,用到一种热备协议:
    VRRP(公有的协议)
    HSRP、GLBP(思科私有的协议)
    1.这三个协议的原理都是一样的。两台设备都需要配置VRRP,在接口下去配, 配了一个VRRP以后,会自动在两台设备之间选取一个主备;
    2.配了VRRP以后会由主设备定期发送Hello报文,1秒钟发一次,超时时间3秒钟,备设备负责监听;
    3.3秒以后备设备没有收到hello报文,会认为主设备挂掉了,备升为主;
       主设备-M;        备设备-B;
    4.配了VRRP以后,可以指定一个虚拟IP地址为网关地址就可以了;
     
    如:192.16.1.0/24网段; 虚拟ip地址为 192.168.1.254;虚拟MAC可以自动计算;自动做一个映射
     
    5.后续,PC想要上网的话,会发起虚拟IP地址的MAC的请求(发起ARP请求),会被主备都收到,实际上只有主设备才会回送ARP应答;后期发送的虚拟MAC都会绑定到1口;宕机,备升为主,现在流量不通,交换机不知道;路由器会发送一次免费ARP,给交换机看的。交换机收到免费ARP会将MAC地址绑定到2口,同时将1口拆除,这样虚拟MAC就绑定到2口了;
     
    6.后续,数据帧会从2口转发出去到达B这台设备
     
    *********************************************************************************   代理ARP
     
     
      在广播网里面,一条静态路由写下一跳或者出接口是否都能通?
      1上配静态,1上指定出接口E0/0,或者指定下一跳12.1.1.2;
      思科里面是全通的,华为里面是不通的(用接口不通,用下一跳是通的);
     
       指定出接口和指定下一跳有什么不同?
        指定下一跳,说明到达的目标路由不是本地直连可达的;需要将IP包交给下一跳的设备,由下一跳设备帮忙去转发才能到达目标地址;ARP请求请求的是下一跳的MAC地址;
         指定出接口, 会认为到达目标网段是本地直连可达的;说明只要将IP包发出去就会到达目标地址;这样的话,发送ARP请求的话,就会请求目标地址的MAC地址(请求R3的Lo 0口);2会检测,看目标MAC,目标MAC是一个广播MAC,拆2层交给ARP处理,检查目标IP地址,发现ARP报文里面的IP地址并不是自己接口的IP,说明这个ARP请求并不是给我的,2不会回应ARP应答,会将报文丢弃掉。没有MAC的话,1不能封装2层,不能发送数据。
        
         指定出接口,思科里面默认是开启代理ARP的,会通;华为默认是关闭代理ARP的,不通;
     
          代理ARP:如果说2在接口下开启了代理ARP,收到了一个ARP请求,但ARP请求里面的IP地址并不是自己接口下的IP,它会检查自己的路由器表,看看有没有达到目标地址可达的路由;如果有路由的话,2就会把自己接口下的MAC地址作为目标的MAC地址回给发送者;这样,1也能收到ARP应答;1有了MAC, 就可以封装二层,发送数据帧。
           在广播网里面一定 要指定下一跳,尽量不要用出接口,实际上最好的方法是连出接口和下一跳同时配置
     
    ##【实验验证】
    50:21
    3745/7200 的思科ISO
     Proxy ARP is enabled.
     
    如果下一跳是出接口,这个报文到达R2以后,会发现目的IP地址 不是本接口的IP,但是代理ARP没有开启,会被丢弃掉。
     
    两台PC,一台PC在12网段,一台PC在13网段,在不同的网段可以通吗?
     
    在PC1和PC2上分别配置 一条默认路由,默认路由不能指向下一跳而应该指向一个出接口;互指网关也是不行的,只能用自己接口的IP
    PC是 属于7层设备,可以装操作系统;可以通过rotute print看到PC的路由表;通常在PC上配置网关,网关的主要作用是在路由表里面在本地去生成 一条默认路由;下一跳就是指向网关的地址;到达外部网段的这些IP包都需要交给网关处理。配置网关的目的就是自动生成一条默认路由
           其实可以通,可以将网关的地址配成自己接口的IP,在路由表里面也会生成一跳默认路由,12在访问13的时候回匹配这条默认,它会认为目标网段和自己是直连的,也会发送ARP请求,IP是目标IP,可以封装二层也是可以通的。
             三层 转发:要有路由表,匹配路由表才能转发IP包
              R1访问R3,R1和 R3不在同一网段,R1要先查路由表看看有没有达到目标地址的路由;如果没有路由,是无法发送IP包的;
             默认路由是可以匹配所有IP地址的,访问目标地址的时候,如果没有明细路由,都是可以匹配默认路由的;比如访问百度,新浪,服务器网段都不在同一网段,可以配置默认路由进行覆盖。
            
     
                
    华为的元检测功能:收到ARP以后,不仅看ARP中的IP地址是不是自己接口下的IP地址,还要看发送方的IP地址是否和自己接口在同一网段?如果不是,不会发送ARP应答-Reply
     
    ******************************************************************************
            ICMP  
       两种 报文:1.request    2.reply
       通过类型和代码来区分不同的报文类型的;
       常用的:00-应答reply    80-请求request   3-目标地址 不可达;
     
    ##ICMP重定向
    *PC->ISP
    PC会将报文交给A,A上是有指向ISP的默认路由的,A上默认路由 下一跳指向192.168.0.2,指向B;A收到以后会根据目的IP查路由表做转发,转发同时会重写2层;
     这种 方法肯定是不行的,会有一个次优路径,会造成网络延时。怎么去解决?最好的方式是由PC直接将IP包发给B设备而不会先绕过A
         通过ICMP重定向去解决,回给发送源一个ICMP报文,告诉发送源下一次发给谁。在ICMP重定向报文里面会增加一个Gateway的字段,网关地址,而这个字段会指向B设备的IP地址-192.168.0.2
          
    需要判断什么场景下会出现ICMP的重定向?
    ICMP重定向的触发条件:如果IP包的发送源和到达目的路由的下一跳在同一网段,就需要触发ICMP重定向。在ICMP重定向报文中会增加一个gateway字段,该字段中会包含目标路由下一跳的地址。
     
    ##【实验验证】
    01:31
     //抓包分析:
     
     
    后续的话,PC访问2.2.2.2的话,会直接将IP包发送给下一跳12.1.1.2,这就是重定向,可以避免一个次优路径
     
     
     
     
     
     
     
     
     
     
     
    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





  • 相关阅读:
    nginx 部署
    win 7 系统ie浏览器升级11版本后,f12功能不可用的问题
    selenium 调用键盘按键
    selenium + python 环境搭建
    解决word2013老是打开未响应情况
    win7 64位备份时, 无法启动服务,0x80070422
    个人学习网站收集
    矩形后旋转后顶点坐标的求解
    Acrobat_8_Pro_SC 激活老是提示你输入的授权码无效
    DLL用def定义文件来导出重载函数(转)
  • 原文地址:https://www.cnblogs.com/xuxaut-558/p/11111968.html
Copyright © 2011-2022 走看看