一种dns系统及方法

文档序号:8475222阅读:270来源:国知局
一种dns系统及方法
【技术领域】
[0001]本发明涉及一种计算机网络技术,特别是涉及一种DNS系统及方法。
【背景技术】
[0002]DNS是域名系统(Domain Name System)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个唯一的IP地址,在Internet上域名与IP地址之间是——对应的,DNS就是进行域名解析的服务器。在我们设定IP网路的时候,都要告诉每台主机关于DNS伺服器的位置(我们可以手动的在每一台主机设置,也可以使用DHCP来指定)。设定DNS目的就是请DNS帮忙解析域名与IP地址。在这个设定过程中,DNS被称为resolver (也就是负责解析的DNS服务端),而被设定的主机则被称为DNS客户端,也就是提出解析请求的主机。
[0003]现有的DNS技术应用广泛,但是却存在不安全的问题,现在比较普遍的一种DNS攻击的原理就是非法主机将自己伪装成合法的DNS服务端,当用户要浏览自己的网页时,非法的DNS服务端将用户要访问的域名解析为一个其它的IP地址,从而造成用户访问的页面出错。如果不法分子制作一个假冒的购物网站,则用户会在完全不知晓的情况下将自己的用户名和密码发送给不法分子。
[0004]鉴于此,如何确定DNS服务端的合法性以提高DNS服务的安全性就成为了本领域技术人员亟待解决的问题。

【发明内容】

[0005]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种DNS系统及方法,用于解决现有技术中非法主机伪装成DNS服务端进行DNS攻击的问题。
[0006]为实现上述目的及其他相关目的,本发明提供一种DNS系统,包括DNS服务端与DNS客户端,所述DNS服务端包括:建立连接模块,用于与DNS客户端建立TCP连接;客户端ID处理模块,用于接收DNS客户端发送的客户端ID,并对所述客户端ID与预设秘钥根据预设算法进行运算得到第一运算结果,将所述第一运算结果发送给DNS客户端;域名解析模块,用于接收DNS客户端发送的域名,并对所述域名进行解析,将解析得到的IP地址发送给DNS客户端。
[0007]可选地,所述预设算法包括将所述ID与所述秘钥进行异或运算得到第一中间值,对所述第一中间值进行MD5加密得到所述第一运算结果。
[0008]可选地,所述DNS服务端还包括连接关闭模块,用于关闭与DNS客户端建立的TCP连接。
[0009]本发明还提供一种DNS系统,包括DNS服务端与DNS客户端,所述DNS客户端包括:连接请求模块,用于与DNS服务端建立TCP连接;客户端ID发送模块,用于随机生成一个客户端ID,并将所述客户端ID发送给所述DNS服务端;客户端ID认证模块,用于接收DNS服务端发送的第一运算结果,并对所述客户端ID与预设秘钥根据预设算法进行运算得到第二运算结果,当所述第一运算结果与所述第二运算结果相等时,所述客户端ID认证成功,当所述第一运算结果与所述第二运算结果不相等时,所述客户端ID认证不成功;域名请求模块,用于当所述客户端ID认证成功时,向DNS服务端发送待解析的域名;IP地址获取模块,用于获取DNS服务端发送的IP地址。
[0010]可选地,所述预设算法包括将所述ID与所述预设秘钥进行异或运算得到第二中间值,对所述第二中间值进行MD5加密得到所述第二运算结果。
[0011]可选地,所述DNS客户端还包括连接关闭模块,用于关闭与DNS服务端建立的TCP连接。
[0012]本发明还提供一种DNS系统,包括如上所述的DNS服务端与如上所述的DNS客户端。
[0013]本发明提供一种DNS方法,应用于包括DNS服务端与DNS客户端的网络,所述DNS方法包括:建立DNS服务端与DNS客户端的TCP连接;DNS客户端随机生成一个客户端ID,并发送所述客户端ID给DNS服务端;DNS服务端接收所述客户端ID,并对所述客户端ID与预设秘钥根据预设算法进行运算得到第一运算结果,将所述第一运算结果发送给DNS客户端;DNS客户端接收所述第一运算结果,并对所述客户端ID与所述预设秘钥根据所述预设算法进行运算得到第二运算结果;当所述第一运算结果与所述第二运算结果相等时,所述客户端ID认证成功,DNS客户端向DNS服务端发送待解析的域名;DNS服务端接收DNS客户端发送的域名,并对所述域名进行解析,将解析得到的IP地址发送给DNS客户端;DNS客户端获取DNS服务端发送的IP地址。
[0014]可选地,所述预设算法包括将所述ID与所述预设秘钥进行异或运算得到中间值,对所述中间值进行MD5加密得到运算结果。
[0015]可选地,所述DNS方法还包括:当所述第一运算结果与所述第二运算结果不相等时,关闭所述TCP连接。
[0016]可选地,所述DNS方法还包括:DNS客户端获取DNS服务端发送的IP地址后,关闭所述TCP连接。
[0017]如上所述,本发明的一种DNS系统及方法,具有以下有益效果:采用TCP协议,并增加安全认证机制,每个客户端都有属于自己的秘钥,DNS服务端必须知道客户端的秘钥才能通过客户端的认证,获得客户端需要解析的域名,并将解析地址发送给客户端。从而提高DNS服务的安全性,有效防范了 DNS攻击。本发明的技术方案采用TCP进行交互,同时客户端向服务端发送解析域名请求之前,会向服务端请求认证,以确保了 DNS服务端的身份合法性,大大提高了安全性。
【附图说明】
[0018]图1显示为本发明的DNS系统的一实施例的模块示意图。
[0019]图2显示为本发明的DNS方法的一实施例的流程示意图。
[0020]图3显示为本发明的DNS方法的一实施例的交互过程示意图。
[0021]元件标号说明
[0022]IDNS 系统
[0023]11 DNS 服务端
[0024]111建立连接模块
[0025]112客户端ID处理模块
[0026]113域名解析模块
[0027]12DNS 客户端
[0028]121连接请求模块
[0029]122客户端ID发送模块
[0030]123客户端ID认证模块
[0031]124域名请求模块
[0032]125IP地址获取模块
[0033]SI ?S7 步骤
【具体实施方式】
[0034]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0035]需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0036]本发明提供一种DNS系统。在一个实施例中,如图1所示,所述DNS系统I包括DNS服务端11与DNS客户端12。DNS服务端11也可以称为DNS服务器。所述DNS服务端11包括建立连接模块111、客户端ID处理模块112以及域名解析模块113。其中:
[0037]建立连接模块111用于与DNS客户端12建立TCP连接。具体地,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务端(服务器)总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP窗口大小信息。在socket编程中,客户端执行connect O时,将触发三次握手。
[0038]客户端ID处理模块112用于接收DNS客户端12发送的客户端ID,并对所述客户端ID与预设秘钥根据预设算法进行运算得到第一运算结果,将所述第一运算结果发送给DNS客户端。具体地,所述预设秘钥包括所述DNS服务端与所述DNS客户端预设的秘钥,每个DNS客户端都有一个属于自己的秘钥,DNS服务端能够获取所连接的DNS客户端的秘钥作为与所述DNS客户端连接的预设秘钥。在一个实施例中,所述预设算法包括将所述ID与所述预设秘钥进行异或运算得到第一中间值,对所述第一中间值进行MD5加密得到所述第一运算结果。
[0039]域名解析模块113用于接收DNS客户端12发送的域名,并对所述域名进行解析,将解析得到的IP地址发送给DNS客户端。
[0040]在一个实施例中,所述DNS服务端11还包括连接关闭模块,用于关闭与DNS客户端12建立的TCP连接。TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-wayhandshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close O操作即可产生挥手操作。
[0041]在一个实施例中,如图1所示,本发明还提供一种DNS系统I,包括DNS服务端11与DNS客户端12,所述DNS客户端12包括连接请求模块121、客户端ID发送模块122、客户端ID认证模块123、域名请求模块124以及IP地址获取模块。其中:
[0042]连接请求模块121用于与DNS服务端建立TCP连接。具体地,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务端(服务器)总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP窗口大小信息。在socket编程中,客户端执行connect O时,将触发三次握手。
[0043]客户端ID发送模块122用于随机生成一个客户端ID,并将所述客户端ID发送给所述DNS服务端11。在一个实施例中,所述客户端ID可以调用随机函数生成。
[0044]客户端ID认证模块123用于接收DNS服务端11发送的第一运算结果,并对所述客户端ID与所述预设秘钥根据预设算法进行运算得到第二运算结果,当所述第一运算结果与所述第二运算结果相等时,所述客户端ID认证成功,当所述第一运算结果与所述第二运算结果不相等时,所述客户端ID认证不成功。具体地,所述预设秘钥包括所述DN
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1