zoukankan      html  css  js  c++  java
  • 路由表详解

    C:\Documents and Settings\Administrator>route print
    ===========================================================================
    Interface List
    0x1 ........................... MS TCP Loopback interface
    0x2 ...00 16 ec 6a 6d 7e ...... Realtek RTL8139 Family PCI Fast Ethernet NIC -
    数据包计划程序微型端口
    ===========================================================================
    ===========================================================================
    Active Routes:
    Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0   192.168.21.253   192.168.21.75       20
            127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
         192.168.21.0    255.255.255.0    192.168.21.75   192.168.21.75       20
        192.168.21.75  255.255.255.255        127.0.0.1       127.0.0.1       20
       192.168.21.255  255.255.255.255    192.168.21.75   192.168.21.75       20
            224.0.0.0        240.0.0.0    192.168.21.75   192.168.21.75       20
      255.255.255.255  255.255.255.255    192.168.21.75   192.168.21.75       1
    Default Gateway:    192.168.21.253
    ===========================================================================
    Persistent Routes:
      None

    上半部为网络接口列表(Interface List),中间为当前激活的路由(Active Routes),下半部是静态

    固化的路由(Persistent Routes),目前是没有内容。

    路由表有这几栏:
      Network Destination:目标网段、地址或特殊地址(如果子网掩码为255.255.255.255,则是目标为地

    址或特殊地址)
      Netmask:子网掩码,一个IP地址与子网掩码按位AND后,可以得出该IP的网段。若IP地址与子网掩码取

    反后接位AND,可以得出该IP地址的主机地址。
      Interface:去目的IP时,使用的网络接口
      Gateway:网关IP,通常情况下,interface和gateway是同一网段的(异常情况有哪些?)
      Metric:跳数,该条路由记录的质量,一般情况下,如果有多条到达相同目的地的路由记录,路由器会

    采用metric值小的那条路由

    再准备一点知识:网卡在正常模式下,能发出任何地址的IP包。能接收的IP包则有限:A 本IP的包;B 本

    网段的广播包;C 组播包。其它的包就收不到了。除非设置网卡为侦听模式,才能收到别的IP包。(IP又

    如何与MAC对应呢?)
    路由应该都是指发出的包如何处理。发包的时候,必须知道相应的MAC地址。

    以上列出的路由逐条解释:
    第一条:
    0.0.0.0为缺省路由,意思就是说,当一个数据包的目的网段不在你的路由记录中,那么,你的路由器该

    把那个数据包发送到哪里。因为一个具体目标地址是否符合路由的目标地址的计算方法是,把具体目标地

    址与子网掩码AND一下,如果结果与目标地址相同,即这个地址对这一条匹配,如果我们再定义掩码的1的

    位数为匹配度。任何地址与掩码0.0.0.0 AND后都等于0.0.0.0,并且匹配度为0(不是没匹配,是匹配度

    低而已)。这样任何地址都会从192.168.21.75这个网络接口发出去,发给网关192.168.21.253,让网关

    决定要如何处理。这时包的结构就是,MAC为网关的MAC,而里面的地址为目标地址。

    第二条:
    本地环路,127开头的所有地址,能符合这一条与上一条,但这一条的匹配度为8,因此优先以这一条来处

    理。这样发给127开头的地址,都从127.0.0.1这个接口发出去,网关与接口一样,即相当于没有网关。而

    127.0.0.1这个地址是虚拟网卡测试回路,不会传到真正的网卡那边去。用Sniffer都抓不到PING

    127.0.0.1的包。

    第三条:
    直联网段的路由,所有以192.168.21开头的地址,能符合这一条与第一条,但这一条的匹配度为24,因此

    优先以这一条来处理。即发给192.168.21开头的地址,都从192.168.21.75这个网络接口发出去,网关与

    接口一样,即没有网关。这时就要自己知道目标IP的MAC地址。

    第四条:
    本机路由,要发给自己的IP(192.168.21.75)的包,能符合这一条,第一条及第三条,但这一条的匹配度

    为32,因此优先这一条来处理。即发给192.168.21.75的包,直接发到虚拟网卡测试回路中,用Sniffer也

    抓不到该包。

    第五条:
    网段的广播包,以192.168.21.255的包,能符合这一条,第一条及第三条,但这一条的匹配度为32,因此

    优先这一条来处理,只是它的处理原则与第三条一样,没话可说了。不过,如果我们处理一下,就能让本

    机无法发出广播包(Ping 192.168.21.255 就有广播包抓到了)

    第六条:
    组播包,它的地址范围就要用到IP与子网掩码来计算出来了(前几个目标掩码都是0或255,根本不用像下

    面这样计算)
    起始地址:224.0.0.0 AND 240.0.0.0=224.0.0.0
    结束地址:224.0.0.0 OR NOT 240.0.0.0=224.0.0.0 OR 15.255.255.255=239.255.255.255
    就是这些IP,用192.168.21.75接口直接发送出去,至于MAC则是用如下原则来设置:
    为了支持IP多播,Internet权威机构把01-00-5E-00-00-00到01-00-5E-7F-FF-FF范围的多播地址保留用于

    以太网和光纤分布式数据接口(Fiber Distributed Data Interface,FDDI)媒体访问控制(MAC)地址

    。为了将一个IP多播地址映射到一个MAC层多播地址,IP多播地址的23个低序位被直接映射到MAC层多播地

    址23个低序位。根据D类地址约定,IP多播地址的前4位是固定的,IP多播地址中有5位没有映射到MAC层多

    播地址。 因此,某个主机可以接收不是它所属的组的MAC层多播数据包。 然而,一旦确定了目标IP地址

    ,这些数据包就会被IP丢弃。
    例如,多播地址224.192.16.1将变成01-00-5E-40-10-01。为了使用那23个低序位,第一个八位组将不会

    被使用,第二个八位组中仅有最后7位被使用。第三个和第四个八位组将直接转换为十六进制数字。对于

    第二个八位组,192的二进制表示11000000。如果丢弃高序位,它将变成1000000或64(十进制)或0x40(

    十六进制)。对于下一个八位组,16的十六进制表示0x10。对于最后一个八位组,1的十六进制表示0x01

    。因此,对应于224.192.16.1的MAC地址将变成01-00-5E-40-10-01。

    为什么要把组播单独列出来?因为,当我们想发组播包时,假设IP为224.192.16.1,如果没有这一条,则

    包符合第一条,系统就把它用网关的MAC包裹,发出去,这就违反了刚才我们上面所说的MAC标准。有了这

    一条,则组播就用以上原则建立MAC,然后从标准端口发出,让需要接收的计算机收到。

    第七条:
    广播地址,仅一个IP 255.255.255.255,由192.168.21.75直接发出去。

    以上是一台规规矩矩的计算机的路由情况。标准的七种包:缺省路由、本地环路、直联网段、本机地址、

    网段广播、组播、广播。

    下面开始对这个路由表进行改动,测试一些想法
    1:把本机地址的路由改掉,由127.0.0.1改为192.168.21.75
    我先是执行以下命令:
    route change 192.168.21.75 mask 255.255.255.255 192.168.21.75 metric 20
    但结果却是:The route specified was not found.
    查网络上说法比较接受的是:这些是特殊路由,不能这样删除。
    这样,我就转到增加一个路由,而跳数比系统默认的小。
    route add 192.168.21.75 mask 255.255.255.255 192.168.21.75 metric 1
    这就成功了。然后再PING 本机IP,结果是我的防火墙禁PING,打开它,还是PING不通,用tracert也没有什么可用信息。
    再后来,用ARP -a 看到地址列表中192.168.21.75的MAC全为0,因此加入一条ARP记录
    arp -s 192.168.21.75 00-16-ec-6a-6d-7e
    现在再PING,就正常了,用Sniffer也抓到包了。
    用大包检测一下连接速度
    ping 192.168.21.75 -l 65000
    返回
    Reply from 192.168.21.75: bytes=65000 time=1ms TTL=64

    与一般电脑的连接速度
    ping 192.168.21.60 -l 65000
    返回
    Reply from 192.168.21.60: bytes=65000 time=12ms TTL=128

    与本机环路的连接速度
    ping 127.0.0.1 -l 65000
    返回
    Reply from 127.0.0.1: bytes=65000 time<1ms TTL=64

    2.本网段设为网关会如何?
    route add 192.168.21.0 mask 255.255.255.0 192.168.21.253 metric 10
    PING 192.168.21.60
    结果真的被192.168.21.253的路由器给打包,中转一下。
    用tracert 192.168.21.60 -d也可以看出这一点
    增加之前:
    Tracing route to ntserver [192.168.21.60]
    over a maximum of 30 hops:
      1    <1 ms    <1 ms    <1 ms  192.168.21.60
    Trace complete.
    增加之后:
    Tracing route to ntserver [192.168.21.60]
    over a maximum of 30 hops:
      1    <1 ms    <1 ms    <1 ms  192.168.21.253
      2     2 ms     2 ms     2 ms  192.168.21.60
    Trace complete.

    3.设置一个不存在的IP会如何?
    执行如下命令,只是网关改为不存在的IP——192.168.21.250。
    route add 192.168.21.0 mask 255.255.255.0 192.168.21.250 metric 10
    然后运行PING 192.168.21.60
    通过Sniffer抓包,看到我的电脑先是ARP一个广播包,要得到192.168.21.250的MAC,但迟迟没人回应,最后PING显示出Time Out。

  • 相关阅读:
    解决在Linux下安装Oracle时的中文乱码问题
    oracle linux 安装过程错误 :Error in invoking target ‘agent nmhs’ of makefile
    mysql 远程连接速度慢的解决方案
    nginx : TCP代理和负载均衡的stream模块
    Xshell同时向多个会话发送指令的方法
    迪杰斯特拉算法
    全周期课程体系
    亲手安装RabbitMq 3.7.2 并安装Trace插件
    山东省枣庄市台儿庄区云平台运维故障处理一例
    开始学习算法
  • 原文地址:https://www.cnblogs.com/yzx99/p/1263100.html
Copyright © 2011-2022 走看看