一、单区域OSPF配置

拓扑

1、配置IP地址

R1

Router#configure terminal
Router(config)#hostname R1
R1(config)#interface g0/0/0
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config)#interface loopback 0
R1(config-if)#ip address 100.1.1.1 255.255.255.0
R1(config-if)#interface loopback 1
R1(config-if)#ip address 100.1.2.1 255.255.255.0
R1(config-if)#interface loopback 2
R1(config-if)#ip address 100.1.3.1 255.255.255.0

R2

Router#configure terminal
Router(config)#hostname R2
R2(config)#interface g0/0/0
R2(config-if)#ip address 10.1.1.2 255.255.255.0
R2(config-if)#no shutdown
R2(config)#interface g0/0/1
R2(config-if)#ip address 20.1.1.1 255.255.255.0
R2(config-if)#no shutdown

R3

Router#configure terminal
Router(config)#hostname R3
R3(config)#interface g0/0/0
R3(config-if)#ip address 20.1.1.2 255.255.255.0
R3(config-if)#no shutdown
R3(config)#interface loopback 0
R3(config-if)#ip address 200.1.1.1 255.255.255.0
R3(config-if)#interface loopback 1
R3(config-if)#ip address 200.1.2.1 255.255.255.0
R3(config-if)#interface loopback 2
R3(config-if)#ip address 200.1.3.1 255.255.255.0

2、配置OSPF

R1

R1(config)#router ospf 10    启用一个进程为10的OSPF
R1(config-router)#router-id 1.1.1.1     配置路由器ID
R1(config-router)#network 10.1.1.0 0.0.0.255 area 0      在区域0中宣告10.1.1.0/24网段(后面使用的是通配符掩码)
R1(config-router)#network 100.1.1.0 0.0.0.255 area 0
R1(config-router)#network 100.1.2.0 0.0.0.255 area 0
R1(config-router)#network 100.1.3.0 0.0.0.255 area 0
R1(config-router)#log-adjacency-changes     显示邻接变化状态

R2

R2(config)#router ospf 10  进程号10可以不一样
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 10.1.1.0 0.0.0.255 area 0
R2(config-router)#network 20.1.1.0 0.0.0.255 area 0
R2(config-router)#log-adjacency-changes

R3

R3(config)#router ospf 10
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 20.1.1.0 0.0.0.255 area 0
R3(config-router)#network 200.1.1.0 0.0.0.255 area 0
R3(config-router)#network 200.1.2.0 0.0.0.255 area 0
R3(config-router)#network 200.1.3.0 0.0.0.255 area 0

3、验证

R1#show ip route 查看路由表,获取到了R3宣告的网络

R2#show ip ospf neighbor 查看邻居表

Router#show ip ospf database 查看链路状态数据库

单区域中只有第一类LSA和第二类LSA

参数介绍

第一类LSA

Link ID ====产生LSA设备的Router-ID
ADV Router(Advertise Router) ==== 通告条目产生的Router-ID
Link count ==== 宣告条目的个数
Age ==== 周期更新时间。有LSA的更新,将重置Age为0。Age到达1800秒后主动更新,然后重置Age为0
Seq# ==== 更新次数。有更新就加一
Checksum ==== 校验码

第二类LSA

Link ID ==== DR的地址
ADV Router ====通告DR信息设备的Router-ID

二、多区域OSPF配置

拓扑

1、配置IP地址

按上面的IP地址配置

2、配置OSPF

R1

R1(config)#router ospf 10    启用一个进程为10的OSPF
R1(config-router)#router-id 1.1.1.1     配置路由器ID
R1(config-router)#network 10.1.1.0 0.0.0.255 area 0      在区域0中宣告10.1.1.0/24网段(后面使用的是通配符掩码)
R1(config-router)#network 100.1.1.0 0.0.0.255 area 0
R1(config-router)#network 100.1.2.0 0.0.0.255 area 0
R1(config-router)#network 100.1.3.0 0.0.0.255 area 0
R1(config-router)#log-adjacency-changes     显示邻接变化状态

R2

R2(config)#router ospf 10  进程号10可以不一样
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 10.1.1.0 0.0.0.255 area 0
R2(config-router)#network 20.1.1.0 0.0.0.255 area 10     在区域10中宣告10.1.1.0/24网段
R2(config-router)#log-adjacency-changes

R3

R3(config)#router ospf 10
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 20.1.1.0 0.0.0.255 area 10
R3(config-router)#network 200.1.1.0 0.0.0.255 area 10
R3(config-router)#network 200.1.2.0 0.0.0.255 area 10
R3(config-router)#network 200.1.3.0 0.0.0.255 area 10

3、验证

R1#show ip route 查看路由表,路由条目中出现OIA的路由条目
OIA表示从区域外获取的路由条目。


R1#show ip ospf database 查看数据库,多了第三类的LSA
该类LAS显示的是从区域外获取的路由条目

第三类LSA

  • Link ID ==== 路由条目(可以对比上面的路由表)
  • ADV Router ==== ABR路由器的Router-ID

三、OSPF连接外部网络的配置

拓扑

1、配置IP地址

2、配置 OSPF和EIGRP

R1

R1(config)#router ospf 10    启用一个进程为10的OSPF
R1(config-router)#router-id 1.1.1.1     配置路由器ID
R1(config-router)#network 10.1.1.0 0.0.0.255 area 0      在区域0中宣告10.1.1.0/24网段(后面使用的是通配符掩码)
R1(config-router)#network 100.1.1.0 0.0.0.255 area 0
R1(config-router)#network 100.1.2.0 0.0.0.255 area 0
R1(config-router)#network 100.1.3.0 0.0.0.255 area 0
R1(config-router)#log-adjacency-changes     显示邻接变化状态

R2

R2(config)#router ospf 10  进程号10可以不一样
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 10.1.1.0 0.0.0.255 area 0
R2(config-router)#network 20.1.1.0 0.0.0.255 area 10     在区域10中宣告10.1.1.0/24网段
R2(config-router)#log-adjacency-changes

R3

OSPF
R3(config)#router ospf 10
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 20.1.1.0 0.0.0.255 area 10
R3(config-router)#redistribute eigrp 100 subnets 重分布EIGRPEIGRP
R3(config)#router eigrp 100     启用自制系统号100的EIGRP进程
R3(config-router)#no auto-summary       关闭自动汇总
R3(config-router)#network 30.1.1.0 0.0.0.255    宣告网段
R3(config-router)#redistribute ospf 10 metric 10000 100 255 255 1500 重分布OSPF

R4

EIGRP
R4(config)#router eigrp 100
R4(config-router)#no auto-summary
R4(config-router)#network 30.1.1.0 0.0.0.255
R4(config-router)#network 200.1.1.0 0.0.0.255
R4(config-router)#network 200.1.2.0 0.0.0.255
R4(config-router)#network 200.1.3.0 0.0.0.255

3、验证

R1#show ip route 查看路由表出现了OE2的路由条目

OE2表示通过ASBR从外部网络获取到的路由

R1#show ip ospf database 查看数据库,此时数据库中出现了第四类和第五类LSA

第四类LSA

Link ID ==== ASBR的Router-ID
ADV Router ==== ABR的Router-ID

第五类LSA

Link ID ==== 等同于三类,明确的明细条目
ADV Router ==== ASBR的Router-ID
Tag ==== 标签

四、OSPF虚链路

拓扑

1、配置IP地址

2、配置OSPF

R1

R1(config)#router ospf 10    启用一个进程为10的OSPF
R1(config-router)#router-id 1.1.1.1     配置路由器ID
R1(config-router)#network 10.1.1.0 0.0.0.255 area 0      在区域0中宣告10.1.1.0/24网段(后面使用的是通配符掩码)
R1(config-router)#network 100.1.1.0 0.0.0.255 area 0
R1(config-router)#network 100.1.2.0 0.0.0.255 area 0
R1(config-router)#network 100.1.3.0 0.0.0.255 area 0
R1(config-router)#log-adjacency-changes     显示邻接变化状态

R2

R2(config)#router ospf 10  进程号10可以不一样
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 10.1.1.0 0.0.0.255 area 0
R2(config-router)#network 20.1.1.0 0.0.0.255 area 10     在区域10中宣告10.1.1.0/24网段
R2(config-router)#log-adjacency-changes

R3

OSPF
R3(config)#router ospf 10
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 20.1.1.0 0.0.0.255 area 10
R3(config-router)#network 30.1.1.0 0.0.0.255 area 20

R4

R4(config)#router ospf 10
R4(config-router)#router-id 4.4.4.4
R4(config-router)#network 30.1.1.0 0.0.0.255 area 20
R4(config-router)#network 200.1.1.0 0.0.0.255 area 20
R4(config-router)#network 200.1.2.0 0.0.0.255 area 20
R4(config-router)#network 200.1.3.0 0.0.0.255 area 20

3、验证

R1#show ip route 查看路由表,发现没有获取到Area 20中的网络宣告

众所周知,多区域OSPF的常规区域必须和骨干区域相连,然而在我们这个拓扑中Area 20 没有和骨干区域(Area 0 )相连,所以R1获取不到Area 20 的路由条目。

为了解决这个问题,将采用虚链路技术,从逻辑上让Area 20 与Area 0相连接。

4、配置虚链路

由于Area 20 和Area 0之间隔了一个Area 10,所以在两个ABR路由器上配置虚链路(R2,R3)

R2

R2(config)#router ospf 10
R2(config-router)#area 10 virtual-link 3.3.3.3      R3的Router-ID

R3

R3(config)#router ospf 10
R3(config-router)#area 10 virtual-link 2.2.2.2      R2的Router-ID

5、再次验证

R1#show ip route 查看路由表,此时路由表中获取到了Area 20 中宣告的路由条目

注意:虚链路只需要在区域的ABR上配置,如果中间隔了多个区域,每个区域都要配置虚链路

五、OSPF下发默认路由

拓扑

1、配置IP地址

2、配置路由

RT1

RT1(config)#router ospf 10
RT1(config-router)#router-id 1.1.1.1
RT1(config-router)#network 10.1.1.0 0.0.0.255 area 0
RT1(config-router)#network 192.168.1.0 0.0.0.255 area 0

方法一:

RT2

RT2(config)#router ospf 10
RT2(config-router)#router-id 2.2.2.2
RT2(config-router)#network 10.1.1.0 0.0.0.255 area 0
RT2(config-router)#default-information originate allways 总是下发默认路由

方法二:

RT2

RT2(config)#ip route 0.0.0.0 0.0.0.0 serial 0/1/0 创建一条默认路由
RT2(config)#router ospf 10
RT2(config-router)#default-information originate 只有创建了默认路由才会下发默认路由

RT3

RT3(config)#ip route 0.0.0.0 0.0.0.0 serial 0/1/0 配置默认路由

3、验证

RT1#show ip route 查看路由表,有一条O*E2的默认路由

六、OSPF路由汇总

拓扑

1、配置IP地址

2、配置OSPF和EIGRP

R1

R1(config)#router ospf 10
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 10.1.1.0 0.0.0.255 area 0

R2

R2(config)#router ospf 10
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 10.1.1.0 0.0.0.255 area 0
R2(config-router)#network 20.1.1.0 0.0.0.255 area 0
R2(config-router)#log-adjacency-changes

R3

OSPF
R3(config)#router ospf 10
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 20.1.1.0 0.0.0.255 area 10
R3(config-router)#network 100.1.1.0 0.0.0.255 area 10
R3(config-router)#network 100.1.2.0 0.0.0.255 area 10
R3(config-router)#network 100.1.3.0 0.0.0.255 area 10
R3(config-router)#redistribute eigrp 100 subnets 重分布EIGRPEIGRP
R3(config)#router eigrp 100
R3(config-router)#no auto-summary
R3(config-router)#network 30.1.1.0 0.0.0.255
R3(config-router)#redistribute ospf 10 metric 10000 100 150 255 1500

R4

R4(config)#router eigrp 100
R4(config-router)#no auto-summary
R4(config-router)#network 30.1.1.0 0.0.0.255
R4(config-router)#network 200.1.1.0 0.0.0.255
R4(config-router)#network 200.1.2.0 0.0.0.255
R4(config-router)#network 200.1.3.0 0.0.0.255

3、汇总

没有汇总前的路由条目

区域间汇总 == ABR上汇总

R2

R2(config)#router ospf 10
R2(config-router)#area 10 range 100.1.0.0 255.255.252.0

查看路由表,此时100开头的三条已经汇总成了一条

协议间汇总 == ASBR上汇总

Packet Tracer 不支持协议间汇总,我用EVE来演示一下

汇总前路由表

R3

R2(config)#router ospf 10
R2(config-router)#summary-address 200.1.0.0 255.255.252.0

汇总后的路由表

七、OSPF认证

拓扑

1、配置IP地址

2、配置OSPF

RT1

RT1(config)#router ospf 10
RT1(config-router)#router-id 1.1.1.1
RT1(config-router)#network 1.1.1.0 0.0.0.255 area 0
RT1(config-router)#network 10.1.1.0 0.0.0.255 area 0

RT2

RT2(config)#router ospf 10
RT2(config-router)#router-id 2.2.2.2
RT2(config-router)#network 10.1.1.0 0.0.0.255 area 0
RT2(config-router)#network 20.1.1.0 0.0.0.255 area 0

RT3

RT3(config)#router ospf 10
RT3(config-router)#router-id 3.3.3.3
RT3(config-router)#network 20.1.1.0 0.0.0.255 area 0
RT3(config-router)#network 2.2.2.0 0.0.0.255 area 0

3、接口下认证

没有认证之前是可以建立邻居的

明文认证

RT1

RT1(config)#interface g0/0/0
RT1(config-if)#ip ospf authentication-key cisco     创建秘钥cisco
RT1(config-if)#ip ospf authentication   启用认证

邻居以断开

RT2

RT2(config)#interface g0/0/0
RT2(config-if)#ip ospf authentication-key cisco
RT2(config-if)#ip ospf authentication

邻居已重新建立

密文认证

RT2

RT2(config)#interface g0/0/1
RT2(config-if)#ip ospf message-digest-key 1 md5 cisco   创建以MD5加密的密文
RT2(config-if)#ip ospf authentication message-digest    启用认证

RT3

RT3(config)#interface g0/0/0
RT3(config-if)#ip ospf message-digest-key 1 md5 cisco
RT3(config-if)#ip ospf authentication message-digest

4、区域间认证

删除上面配置接口下的认证

区域间认证也要在接口下创建密码,在进程中启用,只在区域内有效。

明文认证

RT2

RT2(config)#interface g0/0/1
RT2(config-if)#ip ospf authentication-key cisco
RT2(config-router)#area 0 authentication 在进程中启用认证

RT3

RT3(config)#interface g0/0/0
RT3(config-if)#ip ospf authentication-key cisco
RT3(config)#router ospf 10
RT3(config-router)#area 0 authentication 在进程中启用认证

密文认证

RT1

RT1(config)#interface g0/0/0
RT1(config-if)#ip ospf message-digest-key 1 md5 cisco
RT1(config)#router ospf 10
RT1(config-router)#area 0 authentication message-digest

RT2

RT2(config)#interface g0/0/0
RT2(config-if)#ip ospf message-digest-key 1 md5 cisco   创建以MD5加密的密文
RT2(config)#router ospf 10
RT2(config-router)#area 0 authentication message-digest 在进程中启用认证

5、认证排错

清除前面配置的认证

在RT2上启用debug

RT2#debug ip ospf events

RT1上配置认证

RT1(config)#interface g0/0/0
RT1(config-if)#ip ospf message-digest-key 1 md5 cisco
RT1(config-if)#ip ospf authentication message-digest

查看RT2上的Debug信息

认证类型不匹配,输入数据包是类型2,我们使用的类型0

类型0表示不认证,类型1表示明文认证,类型2表示密文认证

00:38:55: OSPF: Rcv pkt from  10.1.1.1, GigabitEthernet0/0/0 : Mismatch Authentication type. Input packet specified type 2, we use type 0

检验一下密码不匹配的Debug信息
RT2

RT2(config)#interface g0/0/0
RT2(config-if)#ip ospf message-digest-key 1 md5 huawei      RT1使用的密码为cisco,这里使用huawei作为密码
RT2(config-if)#ip ospf authentication message-digest

查看RT2上的Debug信息

这里提示认证秘钥不匹配

00:43:25: OSPF: Rcv pkt from  10.1.1.1, GigabitEthernet0/0/0 : Mismatch Authentication Key - Message Digest Key 1

八、OSPF特殊区域

拓扑

1、末节区域(普通STUB区域)

上面的拓扑可以看出Area10 为末节区域

1)、配置IP地址
2)、配置OSPF和EIGRP

没有配置末节区域的路由表

3)、配置末节(区域内所有路由器都要配置)

R1(config)#router ospf 10
R1(config-router)#area 10 stubR2(config)#router ospf 10
R2(config-router)#area 10 stub

配置STUB后OE2的路由条目从路由表中删除,同时创建了一条默认路由

并且在数据库中删除4类和5类的LSA

2、完全末节区域

对于R1来说去往外部都要从G0/0/0通过,所以OIA的路由条目对于路由器来说也是浪费资源。

配置完全STUB区域(只在ABR上配置
R2

R2(config)#router ospf 10
R2(config-router)#area 10 stub no-summary

此时OIA的路由条目也被删除,使用一条默认路由来代替OIA的路由

同时在数据库中删除3类、4类和5类的LSA,只保留O和O*IA 3类的默认路由

注意:观察路由表,只有一条默认路由,这条默认路由不可以手工配置,因为这样无法将R1中的网段宣告出去。

3、NSSA区域

拓扑

1)、配置IP地址
2)、配置OSPF和EIGRP

没有配置NSSA的路由表

没有配置NSSA的数据库

3)、配置NSSA区域
将Area 10 配置为NSSA区域

R2(config)#router ospf 10
R2(config-router)#area 10 nssa R3(config)#router ospf 10
R3(config-router)#area 10 nssa R4(config)#router ospf 10
R4(config-router)#area 10 nssa

查看路由表,从ASBR传过来的OE2的路由条目转为ON2的路由条目,然而从ABR R2传递过来的路由条目被删除,因此这个路由表是不完美的(缺少路由条目)。

数据库中5类的LSA转换为7类的LSA

R2上配置一条NSSA默认路由

R2(config)#router ospf 10
R2(config-router)#area 10 nssa default-information-originate

配置完成之后,路由表中多了一条NSSA的默认路由


结论:

  1. 普通NSSA将4类和5类 的LSA从LSDB中删除
  2. 普通NSSA将ASBR传过来的5类LSA转换为7类LSA
  3. 普通NSSA将路由表中的OE2转换为ON2
  4. 创建一条NASS默认路由

4、完全NSSA

上图路由表中还有一条OIA的路由条目,为了减小路由表

将area 10 nssa default-information-originate替换为area 10 nssa no-summary

R2(config)#router ospf 10
R2(config-router)#area 10 nssa no-summary

查看路由表,OIA的条目转换为了O*IA的默认

结论:

  1. 删除了3类、4类和5类的LSA
  2. 创建了一条3类的默认路由

注意:一般使用完全STUB和完全NSSA

0基础学RS(二十五)思科OSPF配置相关推荐

  1. 0基础学RS(十)思科AAA认证基于服务器的AAA认证(TACACS+配置,RADIUS配置)

    前言 上一篇讲了本地AAA的知识和相关配置,接下来将讲解基于服务器的AAA认证.本地AAA和基于服务器的AAA到底有什么区别呢?他们分别适用于什么什么样的环境? 本地AAA 本地实现的AAA对于非常小 ...

  2. 0基础学RS(九)思科AAA认证的本地AAA认证

    AAA概述 AAA是认证(Authentication).授权(Authorization)和计费(Accounting)的简称,是网络安全中进行访问控制的一种安全管理机制,提供认证.授权和计费三种安 ...

  3. 0基础学RS(十四)VTP(VLAN中继协议)作用及配置

    前言 在前面讲了VLAN的配置,在一台或几台交换机上配置相同的VLAN信息还是挺容易的.如果在一个大型企业中有数百台交换机需要配置VLAN信息,那一定是个枯燥的工作.然而VTP(VLAN中继协议)就可 ...

  4. 0基础学RS(十九)以太网通道链路聚合

    链路聚合 在一些对带宽和冗余要求比较高的场合中,可以在设备之间连接多条链路来增加带宽和提高冗余.如果将8条100兆物理接口聚合成一个逻辑接口,这个逻辑接口可提供800兆带宽. 通常情况下2层设备都会启 ...

  5. 0基础学RS(三)路由器基本配置

    路由器基本配置 注:输入命令时可以用Tab来补齐,如果按Tab没有反应就试试在后面加个"?"看看是否存在你想输入的命令 点击路由器就可以看到下面这个界面了 新路由器刚启动时会问你是 ...

  6. 0基础学RS(二十七)ACL访问控制列表

    一.概述 访问控制列表(ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃. ACL分为基本ACL和高级ACL. 二.基本ACL 基本ACL针对网络 ...

  7. 0基础学RS(五)分析思科路由器的路由表

    实验拓扑 ip address table 分析路由表 1.路由表 直连路由:当路由器接口配置ip地址并激活时,路由器就会添加直连路由 远程路由:这些路由是连接到其他路由器的远程网络,通向远程网络的路 ...

  8. 0基础学RS(一)Packet Tracer 思科模拟器的使用以及下载

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Packet Tracer概述 Packet Tracer界面 设备区 设备介绍 路由器 交换机 终端设备 线缆 视图 逻辑 ...

  9. js基础知识(二十五)--DOM查询的其他方法、获取元素的后代和子元素

    一.DOM查询的其他方法 在document提供了一些直接获取元素的方法 document.body获取到页面的body元素 document.documentElement获取页面html中的根元素 ...

  10. 0基础学RS(十一)VLAN知识点,VLAN的类型,VLAN中继(trunk),本征VLAN

    VLAN概述 VLAN定义 VLAN(Virtual Local Area Network):虚拟局域网,在交换网际网络中通过vlan可以灵活地进行分段和组织.VLAN可以将LAN(局域网)中的设备分 ...

最新文章

  1. Mac 系统中maven配置环境变量
  2. ir指令、立即数的作用_立即数的判断方法一
  3. 银盒子扫码下单在线订单开启商品售卖时段使用说明
  4. 《Spring Recipes》第二章笔记:Creating Beans by Invokin...
  5. HDU 3709 Balanced Number(数位DP)题解
  6. 全源最短路径之弗洛伊德算法(C语言)
  7. oracle中decode的用法(例子)
  8. Linux用户登出之后保持后台进程(nohup)
  9. [Curator] Leader Latch 的使用与分析
  10. linux切换到其他节点,linux 怎么切换节点
  11. [转载]PLSQL安装破解
  12. 【python】《多媒体技术与应用》实验报告「数字图像基础」
  13. QT 5.9.5的快捷键操作
  14. 《东周列国志》第九十一回 学让国燕哙召兵 伪献地张仪欺楚
  15. Ubuntu中解压缩命令
  16. 嘿嘿,长假最后一天!摸鱼一把,我用Python做一个美女消消乐!
  17. 微信公众号 JS接口安全域名 配置
  18. unity3d的playmaker插件使用教程,五、进入区域改变平台颜色
  19. 短视频搬运规避检测技术-天问一号
  20. php操作redis方法详解

热门文章

  1. matlab 粒子群应用,粒子群算法程序应用
  2. 中国互联网发展报告(2021)
  3. 诺基亚N1 WIFI感叹号消除
  4. google服务框架 闪退_华为的谷歌服务打不开怎么办?
  5. 魔兽怀旧服最新服务器人口,魔兽世界怀旧服人口普查最新1月_2021wow怀旧服人口普查数据一览_3DM网游...
  6. SQL Server 数据库之启动 SQL Server 2008 服务
  7. 解决拯救者Y7000打游戏,看视频没有声音的问题
  8. J2EE是什么,主要包括哪些技术
  9. qq连连看java版_Java实战_仿QQ连连看
  10. 数据挖掘实战 —— 泰坦尼克号