DNS 协议

DNS(Domain Name System):全称域名系统,它是 TCP/IP 模型中应用层协议,可以把它看做域名和 IP 地址相互映射的分布式数据库,通过它实现主机名(域名)到具体 IP 地址间的映射,方便用户访问互联网

DNS 采用分布式设计方案,其域名空间采用如下图所示树状结构:
DNS 分布式结构

  • 根域名服务器:最顶层服务器,在因特网上有13个,大部分位于北美洲
  • 顶级域名服务器:第二层服务器,这些服务器主要负责记录顶级域名和国家级域名
  • 权威域名服务器:第三层服务器,主要记录因特网上公共可访问主机所在组织机构提供的 DNS 记录

除上述三类服务器外,用户想要访问因特网还离不开本地 DNS 服务器:每个网络服务提供商都包含一台本地服务器,当主机接入网络服务商后,网络服务商提供该主机 IP 地址。之后当主机发起 DNS 请求后,该请求会被发送到本地 DNS 服务器,本地 DNS 服务器起到代理的功能,通过它将请求转发到 DNS 分布式服务器架构

下面我通过一次 DNS 全过程介绍具体处理逻辑:

  1. 用户通过浏览器访问 ip 地址:www.abc.com
  2. 用户主机向本地域名服务器发送 DNS 查询报文
  3. 本地域名服务器首先在自身数据库查询,绝大多数域名对应 ip 在这里查到,查不到时将请求转发至 根域名服务器
  4. 根域名服务器根据后缀 .com 将负责 .com 的顶级域名服务器 IP 地址返回本地域名服务器
  5. 本地域名服务器再向顶级域名服务器发送 DNS 查询报文
  6. 顶级域名服务器根据 abc 将对应的权威域名服务器 IP 地址返回本地域名服务器
  7. 本地域名服务器向权威域名服务器发送请求报文,至此得到 www.abc.com 的实际 IP 地址
  8. 浏览器根据实际 IP 发送 HTTP 报文,拿到响应结果,刷新页面

通常情况下 顶级域名服务器 并不知道所有 权威域名服务器 的 IP 地址,只知道中间某个服务器地址,此处可能经过多次访问后才能拿到具体 权威域名服务器 地址

整个过程中,对于用户主机来说,只需和 本地 DNS 服务器打交道即可,本地 DNS 服务器分别和 DNS 分布式域名体系中的各个服务器交互,最终将实际 IP 拿回,并将结果保存在本地 DNS 服务器,方便快速响应用户下次访问

DNS 协议在传输层分别用到 TCP 和 UDP,两者使用的场景分别如下:

  • TCP:当进行区域传输,主域名服务器同步数据给辅助域名服务器时采用 TCP,因为此时需要交互的数据量大,TCP 允许的报文长度更高,更安全
  • UDP:平常查询域名对应 IP 采用 UDP,此时报文小,UDP 不需要三次握手,响应速度更快,但需要域名服务器自身处理超时重传保证可靠

辅助域名服务器:类似集群,每个区域的域名服务器一般不只一台,因为一旦它挂了区域内所有主机都无法正常访问网页。采用主从的方式同步数据,一旦主机挂机或相应慢可以更换机器,保证用户体验

总得来说具体使用哪种协议还是根据数据报大小以及效率考虑,域名解析一旦打到根域名服务器就有点像大海捞针,采用 TCP 不知道要经过多少次三次握手,这种情况下效率简直不敢估算

最后我简单介绍下 DNS 劫持:攻击者冒充原域名所属机构,通过电子邮件等方式恶意修改域名信息,并将新的域名信息保存在指定区域的 DNS 服务器,从而使一定范围内用户无法正常访问目的地址,转而访问黑客设计的木马网站

一般情况下黑客只能修改某一片区域内的域名服务器,使域名指向其它 ip 地址,对于用户来说可以通过 IP 直连的方式或通过网络设置让 DNS 指向正常的域名服务器的方式解决问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值