浏览器从输入到输出的过程与原理三之DNS

1. DNS

在互联网上的每一个计算机都拥有一个唯一的地址,称作“IP地址”(即互联网协议地址)。由于IP地址(为一串数字)不方便记忆,DNS允许用户使用一串常见的字母(即“域名”)取代。比如,您只需键入www.icann.org,而不是“192.0.34.163”。即可访问ICANN的官方网站。DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与之相关的其他信息,如IP地址。因为,你在上网时输入的网址,是通过域名解析系解析找到相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。

1.1 概念

DNS,全称Domain Name System,即域名解析系统。DNS帮助用户在互联网上寻找路径。在互联网上的每一个计算机都拥有一个唯一的地址,称作“IP地址”(即互联网协议地址)。由于IP地址(为一串数字)不方便记忆,DNS允许用户使用一串常见的字母(即“域名”)取代。

DNS是指:域名服务器(DomainNameServer)。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。

1.2 Hosts

在互联网的早期,网络只有几台电脑。人们用hosts文件记录机器名字到IP的映射,后来网络的规模越来越大。hosts文件记录映射已经不可行了,所以发明了DNS,域名系统。但是hosts文件仍然保留在操作系统中,hosts文件的优先级高于DNS查询。操作系统首先会在hosts文件中找域名对应的IP地址,没有找到它才会去问DNS服务器。

参考:HSTS详解    HTTPS 原理解析

1.3 DNS缓存

为了增加访问效率,计算机有域名缓存机制,当访问过某个网站并得到其IP后,会将其域名和IP缓存下来,下一次访问的时候,就不需要再请求域名服务器获取IP,直接使用缓存中的IP,提高了响应的速度。当然缓存是有有效时间的,当过了有效时间后,再次请求网站,还是需要先请求域名解析。

但是域名缓存机制也可能会带来麻烦。例如IP已变化了,仍然使用缓存中的IP来访问,将会访问失败。再如 同一个域名在内网和外网访问时所对应的IP是不同的,如在外网访问时通过外网IP映射到内网的IP。同一台电脑在外网环境下访问了此域名,再换到内网来访问此域名,在DNS缓存的作用下,也会去访问外网的IP,导致访问失败。根据情况,可以手动清除DNS缓存或者禁止DNS缓存机制。

ipconfig/displaydns -查看被缓存的域名解析

ipconfig/flushdns -清空DNS缓存

参考 一次dns缓存引发的惨案 dns默认缓存时间是多少?dns缓存默认多久刷新?

1.4 区域文件

一个区域内的所有数据,包括主机名和对应IP地址、刷新间隔和过期时间等,都必须要存放在DNS服务器内,而用来存放这些数据的文件就称为区域文件。DNS服务器的区域数据文件一般存放在/var/named目录下。一台DNS服务器内可以存放多个区域文件,同一个区域文件也可以存放在多台DNS服务器中。

1.5 ISP

ISP(Internet Service Provider),互联网服务提供商,即向广大用户综合提供互联网接入业务、信息业务、和增值业务的电信运营商。ICP(Internet Content Provider)是互联网内容提供商,向广大用户综合提供互联网信息业务和增值业务的电信运营商。

在互联网应用服务产业链“设备供应商——基础网络运营商——内容收集者和生产者——业务提供者——用户”中,ISP/ICP处于内容收集者、生产者以及业务提供者的位置。

ISP:全称为Internet Service Provider,即因特网服务提供商,能提供拨号上网服务、网上浏览、下载文件、收发电子邮件等服务,是网络最终用户进入Internet的入口和桥梁。它包括Internet接入服务和Internet内容提供服务。这里主要是Internet接入服务,即通过电话线把你的计算机或其他终端设备连入Internet。

中国三大基础运营商:

中国电信:拨号上网、ADSL、1X、CDMA1X,EVDO rev.A、FTTx、光纤接入EPON、FDD/TDD LTE

中国移动:拨号上网、GPRS及EDGE无线上网、TD-SCDMA无线上网,一少部分FTTx、FDD LTE

中国联通:GPRS,W-CDMA、无线上网、 拨号上网、ADSL、FTTx、FDD/TDD LTE

1.6 根DNS

根服务器主要用来管理互联网的主目录,全世界只有13台(这13台根域名服务器名字分别为“A”至“M”),1个为主根服务器在美国。其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本。

所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理,这13台根服务器可以指挥Firefox或Internet Explorer这样的Web浏览器和电子邮件程序控制互联网通信,由于根服务器中有经美国政府批准的260个左右的互联网后缀(如.com、.xyz、.net、.top等)和一些国家的指定符(如法国的.fr、挪威的.no等),美国政府对其管理拥有很大发言权。[1] 根域名服务器是架构因特网所必须的基础设施。在国外,许多计算机科学家将根域名服务器称作“真理”(TRUTH),足见其重要性。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。

1.7 DNS解析过程

image

Ø 你在浏览器输入了网址,然后浏览器通过UDP协议向本地服务器的53号端口发送了DNS解析请求(1号过程)。

Ø 如果本地DNS服务器缓存了百度的DNS记录(关于DNS缓存在下一节会详细讲),如果没有该记录就回向根服务器请求(2号路径),然后根服务器收到请求后,会返回给本地服务器相应的顶级域名DNS服务器地址。以www.baidu.com为例,就回返回解析com顶级域名的服务器(3号路径)。

Ø 然后本地服务器知道TLD DNS服务器的地址后就会向该服务器发送解析请求(4号请求),然后TLD服务器返回给本地DNS服务器百度的权威服务器的IP地址(5号路径)。

Ø 同上,本地DNS服务器向百度的权威DNS服务器发起查询请求(6号路径)。就回得到百度权威DNS服务器返回给本地服务器的百度服务器的IP地址(7号路径)。

Ø 最后,本地DNS服务器会把百度服务器的IP地址返回给你的电脑(8号路径),同时将这条记录缓存在本地DNS服务器。

注意:以上这种方式称为“先递归,再轮询”的查询方式,计算机网络中还存在其他的查询方式如仅仅的”递归“,可是上面这种查询方式时最常用的。

DNS服务器技术

DNS有一点令人担忧,这就是像wikipedia.org 或者 facebook.com这样的整个域名看上去只是对应一个单独的IP地址。还好,有几种方法可以消除这个瓶颈:

1. 循环 DNS 是DNS查找时返回多个IP时的解决方案。举例来说,Facebook.com实际上就对应了四个IP地址。

2. 负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。

3. 地理 DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。

4. Anycast 是一个IP地址映射多个物理主机的路由技术。 美中不足,Anycast与TCP协议适应的不是很好,所以很少应用在那些方案中。

1.8 结束

通过DNS解析,本机操作系统会得到一个与域名相对应的IP地址,本机下一步要做的是,通过这个IP地址,与相关的服务器取得联系,并最终链接成功。

当然在发送请求通信的报文之前,本机操作系统软体与计算机硬体之间,还有路由器等都有许多底层的交互内容,在这里先留下更深层次的坑。

posted @ 2018-01-07 13:10  nDos  阅读(375)  评论(0编辑  收藏  举报