DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。

一、DNS 简介

DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址。你可以把它想象成一本巨大的电话本。

转载链接 : https://mp.weixin.qq.com/s/FAYQWNRSWKS5ntl9d6F4OA

举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69。

如果你不清楚为什么一定要查出IP地址,才能进行网络通信,建议先阅读我写的 《互联网协议入门》 。

在DNS 配置文件中,用于表示某主机别名的是 : CNAME

DNS系统的作用

DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。
反向解析:根据IP地址查域名,即将指定的IP地址解析为相对应的域名。

DNS系统的类型

**缓存域名服务器:**只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
**主域名服务器:**维护某一个域名DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
从域名服务器:与主域名服务器提供完全相同的DNS域名服务,通常用于DNS服务器的热备份。

Bind不是唯一能够提供域名服务的DNS服务程序,可以运行在大多数Linux和UNIX主机中。官方:https://www.isc.org/

DHCP有三种机制分配IP地址:

  1. 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

相关图片

  1. 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

  2. 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

DNS工作原理

DNS译成中文就是“域名系统”或“域名解析系统”。它在互联网的作用是:把域名转换成为网络可以识别的IP地址.DNS分为Client和
Server,Client扮演发问的角色,也就是问Server一个Domain Name,而Server必须要回答此Domain Name的真正IP地址。而当地的
DNS先会查自己的资料库。如果自己的资料库没有,则会往该DNS上所设的的DNS询问,依此得到答案之后,将收到的答案存起来,并
回答客户。

二、查询过程

虽然只需要返回一个IP地址,但是DNS的查询过程非常复杂,分成多个步骤。

工具软件dig可以显示整个查询过程。

$ dig math.stackexchange.com

上面的命令会输出六段信息。

第一段是查询参数和统计。

第二段是查询内容。

上面结果表示,查询域名math.stackexchange.com的A记录,A是address的缩写。

第三段是DNS服务器的答复。

上面结果显示,math.stackexchange.com有四个A记录,即四个IP地址。600是TTL值(Time to live 的缩写),表示缓存时间,即600秒之内不用重新查询。

第四段显示stackexchange.com的NS记录(Name Server的缩写),即哪些服务器负责管理stackexchange.com的DNS记录。

上面结果显示stackexchange.com共有四条NS记录,即四个域名服务器,向其中任一台查询就能知道math.stackexchange.com的IP地址是什么。

第五段是上面四个域名服务器的IP地址,这是随着前一段一起返回的。

第六段是DNS服务器的一些传输信息。

上面结果显示,本机的DNS服务器是192.168.1.253,查询端口是53(DNS服务器的默认端口),以及回应长度是305字节。

如果不想看到这么多内容,可以使用+short参数。

$ dig +short math.stackexchange.com
151.101.129.69
151.101.65.69
151.101.193.69
151.101.1.69

上面命令只返回math.stackexchange.com对应的4个IP地址(即A记录)。

三、DNS服务器

下面我们根据前面这个例子,一步步还原,本机到底怎么得到域名math.stackexchange.com的IP地址。

首先,本机一定要知道DNS服务器的IP地址,否则上不了网。通过DNS服务器,才能知道某个域名的IP地址到底是什么。

DNS服务器的IP地址,有可能是动态的,每次上网时由网关分配,这叫做DHCP机制;也有可能是事先指定的固定地址。Linux系统里面,DNS服务器的IP地址保存在/etc/resolv.conf文件。

上例的DNS服务器是192.168.1.253,这是一个内网地址。有一些公网的DNS服务器,也可以使用,其中最有名的就是Google的8.8.8.8和Level 3的4.2.2.2。

本机只向自己的DNS服务器查询,dig命令有一个@参数,显示向其他DNS服务器查询的结果。

$ dig @4.2.2.2 math.stackexchange.com

上面命令指定向DNS服务器4.2.2.2查询。

四、域名的层级

DNS服务器怎么会知道每个域名的IP地址呢?答案是分级查询。

请仔细看前面的例子,每个域名的尾部都多了一个点。

比如,域名math.stackexchange.com显示为math.stackexchange.com.。这不是疏忽,而是所有域名的尾部,实际上都有一个根域名。

举例来说,www.example.com真正的域名是www.example.com.root,简写为www.example.com.。因为,根域名.root对于所有域名都是一样的,所以平时是省略的。

根域名的下一级,叫做”顶级域名”(top-level domain,缩写为TLD),比如.com、.net;再下一级叫做”次级域名”(second-level domain,缩写为SLD),比如www.example.com里面的.example,这一级域名是用户可以注册的;再下一级是主机名(host),比如www.example.com里面的www,又称为”三级域名”,这是用户在自己的域里面为服务器分配的名称,是用户可以任意分配的。

总结一下,域名的层级结构如下。

主机名.次级域名.顶级域名.根域名

host.sld.tld.root

五、根域名服务器

DNS服务器根据域名的层级,进行分级查询。

需要明确的是,每一级域名都有自己的NS记录,NS记录指向该级域名的域名服务器。这些服务器知道下一级域名的各种记录。

所谓”分级查询”,就是从根域名开始,依次查询每一级域名的NS记录,直到查到最终的IP地址,过程大致如下。

从”根域名服务器”查到”顶级域名服务器”的NS记录和A记录(IP地址)

从”顶级域名服务器”查到”次级域名服务器”的NS记录和A记录(IP地址)

从”次级域名服务器”查出”主机名”的IP地址

仔细看上面的过程,你可能发现了,没有提到DNS服务器怎么知道”根域名服务器”的IP地址。回答是”根域名服务器”的NS记录和IP地址一般是不会变化的,所以内置在DNS服务器里面。

下面是内置的根域名服务器IP地址的一个例子。

上面列表中,列出了根域名(.root)的三条NS记录A.ROOT-SERVERS.NET、B.ROOT-SERVERS.NET和C.ROOT-SERVERS.NET,以及它们的IP地址(即A记录)198.41.0.4、192.228.79.201、192.33.4.12。

另外,可以看到所有记录的TTL值是3600000秒,相当于1000小时。也就是说,每1000小时才查询一次根域名服务器的列表。

目前,世界上一共有十三组根域名服务器,从A.ROOT-SERVERS.NET一直到M.ROOT-SERVERS.NET。

六、分级查询的实例

dig命令的+trace参数可以显示DNS的整个分级查询过程。

$ dig +trace math.stackexchange.com

上面命令的第一段列出根域名.的所有NS记录,即所有根域名服务器。

根据内置的根域名服务器IP地址,DNS服务器向所有这些IP地址发出查询请求,询问math.stackexchange.com的顶级域名服务器com.的NS记录。最先回复的根域名服务器将被缓存,以后只向这台服务器发请求。

接着是第二段。

上面结果显示.com域名的13条NS记录,同时返回的还有每一条记录对应的IP地址。

然后,DNS服务器向这些顶级域名服务器发出查询请求,询问math.stackexchange.com的次级域名stackexchange.com的NS记录。

上面结果显示stackexchange.com有四条NS记录,同时返回的还有每一条NS记录对应的IP地址。

然后,DNS服务器向上面这四台NS服务器查询math.stackexchange.com的主机名。

上面结果显示,math.stackexchange.com有4条A记录,即这四个IP地址都可以访问到网站。并且还显示,最先返回结果的NS服务器是ns-463.awsdns-57.com,IP地址为205.251.193.207。

七、NS 记录的查询

dig命令可以单独查看每一级域名的NS记录。

$ dig ns com
$ dig ns stackexchange.com

+short参数可以显示简化的结果。

$ dig +short ns com
$ dig +short ns stackexchange.com

八、DNS的记录类型

域名与IP之间的对应关系,称为”记录”(record)。根据使用场景,”记录”可以分成不同的类型(type),前面已经看到了有A记录和NS记录。

常见的DNS记录类型如下。

(1) A:地址记录(Address),返回域名指向的IP地址。

(2) NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。

(3)MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。

(4)CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,详见下文。

(5)PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名,详见下文。

一般来说,为了服务的安全可靠,至少应该有两条NS记录,而A记录和MX记录也可以有多条,这样就提供了服务的冗余性,防止出现单点失败。

CNAME记录主要用于域名的内部跳转,为服务器配置提供灵活性,用户感知不到。举例来说,facebook.github.io这个域名就是一个CNAME记录。

$ dig facebook.github.io

;; ANSWER SECTION:
facebook.github.io. 3370 IN CNAME github.map.fastly.net.
github.map.fastly.net. 600 IN A 103.245.222.133

上面结果显示,facebook.github.io的CNAME记录指向github.map.fastly.net。也就是说,用户查询facebook.github.io的时候,实际上返回的是github.map.fastly.net的IP地址。这样的好处是,变更服务器IP地址的时候,只要修改github.map.fastly.net这个域名就可以了,用户的facebook.github.io域名不用修改。

由于CNAME记录就是一个替换,所以域名一旦设置CNAME记录以后,就不能再设置其他记录了(比如A记录和MX记录),这是为了防止产生冲突。举例来说,foo.com指向bar.com,而两个域名各有自己的MX记录,如果两者不一致,就会产生问题。由于顶级域名通常要设置MX记录,所以一般不允许用户对顶级域名设置CNAME记录。

PTR记录用于从IP地址反查域名。dig命令的-x参数用于查询PTR记录。

$ dig -x 192.30.252.153

;; ANSWER SECTION:
153.252.30.192.in-addr.arpa. 3600 IN PTR pages.github.com.

上面结果显示,192.30.252.153这台服务器的域名是pages.github.com。

逆向查询的一个应用,是可以防止垃圾邮件,即验证发送邮件的IP地址,是否真的有它所声称的域名。

dig命令可以查看指定的记录类型。

$ dig a github.com
$ dig ns github.com
$ dig mx github.com
九、其他DNS工具

除了dig,还有一些其他小工具也可以使用。

(1)host 命令

host命令可以看作dig命令的简化版本,返回当前请求域名的各种记录。

$ host github.com
github.com has address 192.30.252.121
github.com mail is handled by 10 ALT4.ASPMX.L.GOOGLE.COM.
github.com mail is handled by 10 ALT3.ASPMX.L.GOOGLE.COM.
github.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.COM.
github.com mail is handled by 1 ASPMX.L.GOOGLE.COM.

$ host facebook.github.com
facebook.github.com is an alias for github.map.fastly.net.
github.map.fastly.net has address 103.245.222.133

host命令也可以用于逆向查询,即从IP地址查询域名,等同于dig -x 。

$ host 192.30.252.153
153.252.30.192.in-addr.arpa domain name pointer pages.github.com.

(2)nslookup 命令

nslookup命令用于互动式地查询域名记录。

$ nslookup

facebook.github.io
Server: 192.168.1.253
Address: 192.168.1.253#53

Non-authoritative answer:
facebook.github.io canonical name = github.map.fastly.net.
Name: github.map.fastly.net
Address: 103.245.222.133

(3)whois 命令

whois命令用来查看域名的注册情况。

$ whois github.com

十、参考链接
DNS: The Good Parts, by Pete Keen

DNS 101, by Mark McDonnell

…………………………end…………………………

附,DNS百科,可过滤

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

DNS功能

每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。

主机名到IP地址的映射有两种方式:

1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;

2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。

DNS服务器

提供DNS服务的是安装了DNS服务器端软件的计算机。服务器端软件既可以是基于类linux操作系统,也可以是基于Windows操作系统的。装好DNS服务器软件后,您就可以在您指定的位置创建区域文件了,所谓区域文件就是包含了此域中名字到IP地址解析记录的一个文件,如文件的内容可能是这样的:primary name server = dns2(主服务器的主机名是 )

serial = 2913 (序列号=2913、这个序列号的作用是当辅域名服务器来复制这个文件的时候,如果号码增加了就复制)

refresh = 10800 (3 hours) (刷新=10800秒、辅域名服务器每隔3小时查询一个主服务器)

retry = 3600 (1 hour) (重试=3600秒、当辅域名服务试图在主服务器上查询更新时,而连接失败了,辅域名服务器每隔1小时访问主域名服务器)

expire = 604800 (7 days) (到期=604800秒、辅域名服务器在向主服务更新失败后,7天后删除中的记录。)

default TTL = 3600 (1 hour) (默认生存时间=3600秒、缓存服务器保存记录的时间是1小时。也就是告诉缓存服务器保存域的解析记录为1小时)

DNS安全问题

1.针对域名系统的恶意攻击:DDOS攻击造成域名解析瘫痪。

2.域名劫持:修改注册信息、劫持解析结果。

3.国家性质的域名系统安全事件:“.ly”域名瘫痪、“.af”域名的域名管理权变更。

4.系统上运行的DNS服务存在漏洞,导致被黑客获取权限,从而篡改DNS信息。

5.DNS设置不当,导致泄漏一些敏感信息。提供给黑客进一步攻击提供有力信息。

链接 :

脚本之家 DNS 系列 (16篇):https://www.jb51.net/list/list_219_1.htm

DNS服务-详解 : http://blog.51cto.com/fighter/500957
Linux DNS 服务器安装、配置和维护 :https://mp.weixin.qq.com/s/4olKISlmf8mnm0x5XcXdsQ
CentOS下搭建智能DNS系统wdDNS 的方法 : http://blog.51cto.com/xiaogongju/2071106

虚拟化云计算-使用windowsserver2012r2配置AD&DNS&DHCP服务器 : http://blog.51cto.com/11555417/2162547

linux服务之DNS : http://blog.51cto.com/best0/105682

DNS区域主从复制 : http://blog.51cto.com/xiaoluoge/1555221

[Dns] Linux(centos 6) DNS(bind)服务器安装及dns理论详解 : http://blog.51cto.com/itwish/2128257

Linux环境下DNS域名解析服务 : https://mp.weixin.qq.com/s/RTydo9ta5yKIgU78u55sQQ

浅谈DNS体系结构:DNS系列之一 : http://blog.51cto.com/yuelei/106228
高可用dns方案 荐 : http://blog.51cto.com/caiguangguang/1357867

Linux环境下DNS域名解析服务 : Linux环境下DNS域名解析服务

详解DNS的常用记录(上):DNS系列之二 荐: http://blog.51cto.com/yuelei/106921

详解DNS的常用记录(下):DNS系列之三 荐 : http://blog.51cto.com/yuelei/107676

配置DNS辅助服务器:DNS系列之四 荐 : http://blog.51cto.com/yuelei/108672

揭秘DNS后台文件:DNS系列之五 荐 : http://blog.51cto.com/yuelei/109657

亲手缔造DNS体系,创建DNS私有根:DNS系列之六 荐 : http://blog.51cto.com/yuelei/110700

DNS不平凡的查询过程 : http://blog.51cto.com/zhangqi/32224

DNS服务-详解 荐 : http://blog.51cto.com/fighter/500957

脚本实现自动创建DNS域名服务器 : http://blog.51cto.com/fighter/500005

CentOS 7实现DNS+DHCP动态更新详解 : https://www.jb51.net/os/RedHat/534684.html

CentOS下DNS的基本和高级配置详解 : https://www.jb51.net/os/RedHat/527825.html

centos5.3 搭建DNS多域名解析服务器的教程 : https://www.jb51.net/os/RedHat/34043.html

四招教你快速解决DNS服务器未响应 : http://server.51cto.com/sOS-569801.htm
CentOS6.7服务器上部署内网DNS服务 : http://server.51cto.com/sOS-582509.htm
模拟构建DNS解析流程 : http://blog.51cto.com/11010461/2123639

Linux DNS服务系列之主从复制、子域授权和转发、view配置详解 : http://blog.51cto.com/scholar/1631058

Linux DNS服务系列之原理介绍及正反向解析配置 : http://blog.51cto.com/scholar/1629834

DNS正向反向解析与主从复制 : http://blog.51cto.com/11010461/2105703

DNS基础与bind的安装 : http://blog.51cto.com/11010461/2105534

DNS软件bind使用(一) : http://blog.51cto.com/cuchadanfan/1710387

DNS软件bind使用(二) : http://blog.51cto.com/cuchadanfan/1711165

原 RH134-第二十三节-DNS高速缓存 : https://blog.csdn.net/sinat_37757403/article/details/77132298

系统架构师-DNS学习笔记 : https://www.jianshu.com/p/4cde538315a8

DNS原理介绍和具体搭建DNS 荐 : http://blog.51cto.com/guoting/1536612

搭建DNS服务,反向解析ip : http://blog.51cto.com/13728740/2143039

搭建DNS服务,正向解析域名 ; http://blog.51cto.com/13728740/2142704

一次dns缓存引发的惨案 : https://www.cnblogs.com/ityouknow/p/6380603.html

问题dsn=5.0.0, stat=Service unavailable解决方法  :   http://blog.51cto.com/nanchunle/1643840

使用dnsmasq支持hosts泛解析与DNS加速  :  https://blog.ansheng.me/article/dnsmasq-hosts-pan-parsing-and-dns-acceleration

超清晰的 DNS 原理入门指南 (资源)相关推荐

  1. 超清晰的 DNS 原理入门指南

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 来源:8rr.co/7Num DNS 是互联网核心协议之一.不管是 ...

  2. windows如何添加本机dns记录_运维必看!超清晰的 DNS 原理入门指南

    来源:阮一峰的网络日志 作者:阮一峰 链接:http://www.ruanyifeng.com/blog/2016/06/dns.html DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发, ...

  3. 互联网协议入门及DNS原理入门

    互联网协议入门及DNS原理入门 互联网协议入门 作者: 阮一峰 日期: 2012年5月31日 我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信.上海的某一块网 ...

  4. 变身抓重点小能手:机器学习中的文本摘要入门指南 | 资源

    鱼羊 编译整理 量子位 出品 | 公众号 QbitAI 如果你是科研狗,一定有过被摘要支配的恐惧. 如果你想在浩如烟海的互联网信息里寻找重点,一定想要快速排除多余的内容. 基于机器学习的自动文本摘要工 ...

  5. 最全面的 DNS 原理入门

    DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一.D ...

  6. gridcontrol值为0时设置为空_XASSET 4.0入门指南

    XASSET 5.1已经发布 XASSET 5.1为Unity项目提供了可以快速投入到生产环境中使用的具有更智能和灵活的资源分包.热更新机制和稳健高效的资源加载和内存管理的资源管理方案.它不仅可以服务 ...

  7. 推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐,业界广告推荐技术最新进展

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...

  8. 立体视觉入门指南(3):相机标定之张式标定法【超详细值得收藏】

    亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知距离,导航避障,从而翱翔于天地之间.而当今世界是智能化的世界,我们的科学家们探索各种机器智能技术,让机器能够拥有人类的三维感 ...

  9. 生成对抗网络入门指南(内含资源和代码)

    python进阶教程 机器学习 深度学习 长按二维码关注 进入正文 前言:春节假期结束了,在这个假期中,原本好好的计划终究没能跟上变化,发生了很多意想不到的事情,导致公众号有近十天没能更新,首先给长期 ...

最新文章

  1. linux 编译opencl,OpenCL编译环境配置(VS+Nvidia)
  2. canvas 文字颜色_Canvas技术概述
  3. [luoguP2896] [USACO08FEB]一起吃饭Eating Together(DP)
  4. 小王利用计算机设计了一个计算程序,七年级数学上册5.3代数式的值巧求计算机里的代数式的值素材(新版)青岛版...
  5. Qt学习笔记之数据库
  6. MySQL索引知识点
  7. Navicat Premium试用期破解方法(转)
  8. 现在写程序要像蚊子一样WZ132
  9. 微机原理与接口耿恒山答案_KYN28-12柜二次系统元器件介绍及接线应用原理(接上篇)...
  10. 腾讯视频《庆余年》再搞超前点播,网友:不是每部剧都叫《陈情令》
  11. windows IDA 调试SO
  12. Selenium3元素定位详解与封装
  13. Java 多线程(一)并发、并行、线程、多线程、进程
  14. java struts2_Java struts2面试题及答案
  15. 10 个错过即损失的智能合约开发者工具
  16. 猴子搬香蕉 php,猴子搬香蕉
  17. ##Mysql数据库DQL查询工具的使用
  18. react-native >0.69版本 链接@ant-design/icons-react-native
  19. 关于微信小程序分享及分享朋友圈、复制链接
  20. 【转】男生,请别亲手毁掉女生的猫性

热门文章

  1. php7从基础到商业实战,TP5从基础到项目实战全套
  2. kill -9 无法杀掉进程
  3. 两种方法上传本地文件到github
  4. Extjs的打印解决方案
  5. 爱立信卫翰思:已囊括拉美一半以上…
  6. JDK源码学习笔记——String
  7. MySQL FAQs (持续更新中)
  8. Python中通过cx_Oracle访问数据库遇到的问题总结
  9. pace.js – 加载进度条插件
  10. Cocos2dx 学习之CCTableView