1.路由汇总
R1----->R2-------->R3
\
\
\
R4
R1:10.1.1.1 F0/0
R2:10.1.1.2 F0/0
R2:172.16.1.1 F0/1
R3:172.16.1.2 F0/0
R4:172.16.3.2 F0/0
--172.16.1.0/24
--172.16.2.0/24
--172.16.3.0/24
汇总:
用一条不明细的路由来替代多条明细路由。
172.16.0.0/16 包含上面三条所有的。
R1# ping 172.16.1.2 ..... 不通。
R1# ping 172.16.3.2 ..... 不通
R1# confi t
--汇总路由。
R1(config)#ip route 172.16.0.0 255.255.0.0 10.1.1.2
R1(config)#end
R1#sh ip route
S 172.16.0.0/16 [1/0] 10.1.1.2
R1# ping 172.16.1.2 --不通,包无法返回。
--R3
R3# confi t
R3(config)#ip route 10.1.1.0 255.255.255.0 f0/1
--R4
R4# confi t
R4(config)#ip route 10.1.1.0 255.255.255.0 172.16.3.1
R1# ping 172.16.1.2 --可以通了。
R1# ping 172.16.3.2 --可以通了。
2.最长掩码匹配
R1(10.1.1.1)-----(10.1.1.2)>R2(172.16.1.1)---(172.16.1.2)>R3
R1(10.1.2.1)<-----(10.1.2.2)R2
R1:10.1.1.1 F0/0
R1:10.1.2.1 F0/1
R2:10.1.1.2 F0/0
R2:172.16.1.1 F0/1
R2:10.1.2.2 F1/0
R3:172.16.1.2 F0/1
R1(config)#ip route 172.16.0.0 255.255.0.0 10.1.1.2
R1(config)#ip route 172.16.0.0 255.255.0.0 10.1.2.2
--出现等价路由。
S 172.16.0.0/16 [1/0] via 10.1.1.2
[1/0] via 10.1.2.2
R3(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.1
R1#ping 172.16.1.2 --此时可以ping通。
R3(config)#
--R1(config)#no ip route 172.16.0.0 255.255.0.0 10.1.2.2
R1(config)#ip route 172.16.1.0 255.255.255.0 10.1.2.2
S 172.16.0.0/16 [1/0] via 10.1.1.2
S 172.16.1.0/24 [1/0] via 10.1.2.2
要么走上面的链路,要么走下面的链路,不可能两边都走。
应该走下面的。
R1#traceroute 172.16.1.2
1 10.1.2.2 2 msec 0 msec 0 msec
2 172.16.1.2 0 msec 0 msec 0 msec
R1-->走了下面这条链路。
最长掩码匹配:
DIP:172.16.1.2
与所有的路由掩码做一个与运算。去最长的。
R1#sh ip route
10.0.0.0/30 is subnetted,2 subnets
C 10.1.1.0 is directly connected,FastEthernet0/0
C 10.1.2.0 is directly connected,FastEthernet0/1
172.16.0.0/16 is variably subnetted,2 subnets,2 masks
S 172.16.0.0/16 [1/0] via 10.1.1.2
S 172.16.1.0/16 [1/0] via 10.1.2.2
IP地址与掩码做运算:
172.16.1.2 && 255.255.255.252 =00000010 && 11111100=00000000
==>172.16.1.0
和哪个匹配走哪个:最匹配的是:S 172.16.1.0/16 [1/0] via 10.1.2.2
所以走下面的链路。
--最长掩码匹配。
拿IP报头的目标IP地址与自己所有路由的掩码做"与"运算。最长匹配的
那个路由对应的出接口将作为转发接口。
--变换路由:
R1(config)# no ip route 172.16.1.0 255.255.255.0 10.1.2.2
R1(config)# ip route 172.16.0.0 255.255.255.0 10.1.2.2
之前:ip route 172.16.1.0 255.255.255.0 10.1.2.2
现在:ip route 172.16.0.0 255.255.255.0 10.1.2.2
R1# sh ip route
S 172.16.0.0/16 [1/0] via 10.1.1.2
S 172.16.0.0/24 [1/0] via 10.1.2.2
ping 172.16.1.2 会走哪条链路
172.16.1.2 && 16 ==>00000010 && 00000000 =172.16.0.0/16
172.16.1.2 && 24 ==>00000010 && 00000000 =172.16.1.0/24 (不匹配,不走)
172.16.1.0/24 与 172.16.0.0/24 不匹配。
172.16.0.0/16 与 172.16.0.0/16 匹配,所以走上面的链路。
3.数据包转发过程
R1(10.1.1.1f0/0)
||
(10.1.1.2 f0/0)R2(172.16.1.1 f0/1)
||
(172.16.1.2 f0/1)R3
R1#sh ip route
S 172.16.0.0/16 [1/0] via 10.1.1.2
ping 使用 ICMP 包。
DMAC: |SIP:10.1.1.1 |ICMP
SMAC: |DIP:172.16.1.2|
不清楚目标MAC 地址。
通过ARP的请求报文
DMAC:FF |ARP
SMAC:R1_MAC|172.16.1.2,MAC:????
返回的包:
DMAC:R1_mac |ARP
SMAC:R2_MAC |172.16.1.2,MAC:xxxx
广播帧无法穿越路由器。
4.静态不同写法的主要区别
R1--->R2----->R3
R1:F0/0:10.1.1.1
R2:F0/0:10.1.1.2
R2:F0/1:10.1.2.1
R3:F0/1:10.1.2.2
--R1#
R1#config t
R1(config)#int f0/0
R1(config-if)#ip address 10.1.1.1 255.255.255.252
R1(config-if)#no shutdown
--R2 F0/0
R2#config t
R2(config)#int f0/0
R2(config-if)#ip address 10.1.1.2 255.255.255.252
R2(config-if)#no shutdown
--R2 F0/1
R2#config t
R2(config)#int f0/1
R2(config-if)#ip address 10.1.2.1 255.255.255.252
R2(config-if)#no shutdown
--R3 F0/1
R3#config t
R3(config)#int f0/1
R3(config-if)#ip address 10.1.2.2 255.255.255.252
R3(config-if)#no shutdown
R1:F0/0:10.1.1.1
R2:F0/0:10.1.1.2
R2:F0/1:10.1.2.1
R3:F0/1:10.1.2.2
--后面可以跟出接口或者吓一跳的地址。
R1(config)#ip route 10.1.2.0 255.255.255.0 f0/0
R3(config)#ip route 10.1.1.0 255.255.255.0 10.1.2.1
R1# ping 10.1.2.2 --可以ping 同。
--查看路由表。
R1# sh ip route
S 10.1.2.0/24 is directly connected,FastEthernet0/0
R3# sh ip route
S 10.1.1.0/24 [1/0] via 10.1.2.1
第一点区别:在路由表中表现的结果是不一样的。
第二点区别:使用吓一跳作为使用吓一跳来写静态路由,数据包要执行递归查找。
第三点区别:
R1#confi t
R1(config)#do sh run |sec route
ip route 10.1.2.0 255.255.255.0 FastEthernet0/0
R1(config)#no ip route 10.1.2.0 255.255.255.0 FastEthernet0/0
R1(config)#int f0/0
R1(config-if)#shutdown
R1(config-if)#no shutdown
R3#confi t
R3(config)#do sh run|sec route
ip route 10.1.1.0 255.255.255.0 10.1.2.1
R3(config)#no ip route 10.1.1.0 255.255.255.0 10.1.2.1
R3(config)#int f0/1
R3(config-if)#shutdown
R3(config-if)#no shutdown
转发数据,执行多表查询。先查路由表,再查 ARP 表。
R1(config)#ip route 10.1.2.0 255.255.255.0 f0/0
R1(config)#end
R1# sh ip arp
Protocol Address Age(min) HardwareAddr Type Interface
Internet 10.1.1.1 - ca00.18c0.0008 FastEthernet0/0
R3(config)#no ip route 10.1.1.0 255.255.255.0 10.1.2.1
R1#ping 10.1.2.2 --可以ping通
R1# sh ip arp
Protocol Address Age(min) HardwareAddr Type Interface
Internet 10.1.1.1 - ca00.18c0.0008 FastEthernet0/0
Internet 10.1.2.2 0 ca01.18c0.0008(R2F0/0) FastEthernet0/0
R2#sh int f0/0|in Hardware
第三点区别:
写下一跳地址会主动产生一个ARP请求报文,请求吓一跳对应MAC地址。
--关闭代理ARP功能。
R2(config-if)#no ip proxy-arp
--写递归路由