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。