DNS原理

上一篇文章说到HTTP的一些基本知识点,当我们在浏览器输入网址的时候,浏览器会生成HTTP请求报文,然后委托操作系统的协议栈将数据打包发送出去,其实在发送数据之前还有一步,就是通过域名找到IP,这样才能找到目标网站服务器。操作系统提供的Socket库包含一个域名找IP的方法。

DNS:Domain Name System(域名解析系统)。是用来把域名解析成IP的一套系统,为什么需要DNS呢?我们的网址不能直接用IP吗?直接用IP是可以,但相对来说,域名更容易让我们记住,而且IP可能会变动,如果迁移到新的机器,只需要把原来的域名绑定到新的IP上面就行了。

既然说到IP,就顺便看一下IP的基本知识。

IP

IP由4个部分组成,每一部分占8比特。

设计一套DNS

那么,知道这些以后,如果让你设计一套域名解析系统,你会怎么设计?需要考虑到哪些因素呢?

建立域名对应IP的一对一映射,DNS把映射关系保存到本机,客户端发送域名过来,DNS找到域名对应的IP返回,完事。很简单的一个思路,有什么问题吗?

针对上面考虑到的因素,我们的实现方案:

依照上面的思路,DNS架构是这样的: DNS架构V1

按照上面的流程,浏览器需要自己实现多次寻址请求,如果加一台代理去实现会好一点,这样来说对于应用程序来说就是透明的,应用程序只需要调用一次寻址请求就可以了,改进后的架构图是这样的: DNS架构V2

未完待续。。。