HTTP笔记

2018-02-02  本文已影响20人  zziazm

网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上通讯时只能识别诸如“ 208.80.152.2”之类的IP地址,而不能直接识别如“www.wikipedia.org”这样的域名
然而,IP地址很难记忆,实际中我们访问网站时,更多的是在浏览器地址栏里输入域名,就能看到所需要的页面,这是因为有一个叫”DNS服务器“的计算机会自动把我们输入的域名转换成对应的IP地址,然后调出IP地址对应的网页。

什么是DNS

DNS(Domain Name System)是“域名系统”的英文缩写。它是一个将域名和IP地址相互映射的分布式数据库。

DNS的过程

用浏览器打开一个网址为例:
1.用户主机上运行着DNS的客户端,就是我们的PC机或手机运行着DNS客户端;
2.浏览器接收到url中抽取域名字段,就是访问的主机名,比如 http://www.baidu.com/,并将这个主机名传送给DNS应用的客户端;
3.DNS客户端会向DNS服务器发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作);
4.该DNS客户端最终会收到一份回答报文,其中包含有该主机名对应的IP地址;
5.一旦该浏览器收到来自DNS的IP地址,就可以像该IP地址定位的HTTP服务器发起TCP链接。

DNS服务器的体系架构

DNS服务器一般分为三种,根DNS服务器,顶级DNS服务器,权威DNS服务器


根域名服务器是DNS中最高级别的域名服务器,负责返回顶级域的权威域名服务器地址。全球一共有13个根域名服务器(是指13个IP地址,但机器数量却不是13台)。

域的划分

域名(英语:Domain Name是由一串用.分隔的名字组成的internet上某一台计算机或计算机组的名称。
1.根域:就是所谓的".",其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后会有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯。
2.根域下来就是顶级域(Top-level domains 缩写TLDs)或者叫一级域(irst-level domains),也翻译为国际顶级域名。顶级域用来指示某个国家/地区或组织使用的名称的类型名称,如.com
3.除了顶级域名,还有二级域名(SLD,second-level domain),就是最靠近顶级域名左侧的字段。如zh.wikipedia.org中,wikipedia就是二级域名有资料认为, 在顶级域名后面, 还存在一级域名, 那么zh就是二级域名)。
4.再接下来就是三级域名,即最靠近二级域名左侧的字段,从右向左便可依次有四级域名,五级域名等等。举个正在使用中的三级域名实例,www.ncic.ac.cn,其中www前缀表明此域名对应着万维网服务,每一级域名由英文半角句号区分,“nice”作为三级域名是“ac.cn”的子域名。
[图片上传失败...(image-333fc7-1517537687645)]

DNS分两大类:权威DNS,递归DNS:

权威DNS

权威DNS是特定域名记录(例如“example.com”)在域名注册商处所涉字的DNS服务器,用于特定域名本身的管理(增加,删除,修改等)。
权威DNS服务器只对自己所拥有的域名进行域名解析,对于不是自己的域名则拒绝访问。比如像“example.com”的权威服务器查询“test.com”的域名坑定会查询失败。

递归DNS

递归DNS(也称本地DNS或者缓存DNS)用于域名查询。递归DNS会迭代权威服务器返回的应答,直至最终查询到的IP地址,将其返回给客户端,并将请求结果保存在本地。
对用户发出的域名解析请求,递归DNS必须给出一个最终的IP地址。完整的递归DNS查询流程需要递归DNS服务器从根域名服务器(“.”),顶级域名服务器(例如“.com”),一级域名服务器(例如“example.com”)
等一级一级递归查询,直到最终找到权威服务器取得结果,并返回给客户。同时,递归服务器根据域名TTL,缓存查询结果,便于相同域名重复查询。递归DNS的访问过程如下图所示(递归 DNS 在图中表示为 Local DNS):


website access.png

递归 DNS 服务器大多数在运营商端,负责网络接入终端的 DNS 查询,即网络访问设备上配置的 DNS 服务器 IP。
综上,
权威 DNS 由域名解析服务商建设,提供域名管理服务,维护域名解析记录。
递归 DNS 由网络运营商建设,提供域名查询解析服务。
DNS完整的解析流程会很长,会先从本地缓存取,若没有就到最近的DNS服务器取,若没有再到主域名服务器去取,每一层都有缓存,但为了域名解析的实时性,每一层都有过期时间,DNS解析机制的缺点:
1.缓存时间设置得长,域名更新不及时,设置得短,大量 DNS 解析请求影响请求速度。
2.域名劫持,容易被中间人攻击,或被运营商劫持,把域名解析到第三方 IP 地址,据统计劫持率会达到7%。
3.DNS 解析过程不受控制,无法保证解析到最快的IP
4.一次请求只能解析一个域名。
为了解决这些问题,就有了 HTTPDNS,原理很简单,就是自己做域名解析的工作,通过 HTTP 请求后台去拿到域名对应的 IP 地址,直接解决上述所有问题:
1.域名解析与请求分离,所有请求都直接用IP地址,无需 DNS 解析,APP 定时请求 HTTPDNS 服务器更新IP地址即可。
2.通过签名等方式,保证 HTTPDNS 请求的安全,避免被劫持。
3.DNS 解析由自己控制,可以确保根据用户所在地返回就近的 IP 地址,或根据客户端测速结果使用速度最快的 IP。
4.一次请求可以解析多个域名。


dns-51.jpg
上一篇下一篇

猜你喜欢

热点阅读