深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1

 备注

因为文章太长,所以将它分为三部分,本文是第二部分。

第一部分

需要说明的是Root DNS Server一般有13个,后面有个点(.),别忘了。
a.root-servers.net.
c.root-servers.net.
j.root-servers.net.
b.root-servers.net.
i.root-servers.net.
d.root-servers.net.
k.root-servers.net.
f.root-servers.net.
l.root-servers.net.
h.root-servers.net.
m.root-servers.net.
g.root-servers.net.
e.root-servers.net.

DNS的优化

我们发现,一个DNS查询在没有缓存的情况下会有6步,这将是一个耗时的过程,如果DNS 查询时间过长,甚至会影响到用户体验。
 
那么现阶段是怎么优化的呢?缓存。DNS是存在着多级缓存,从离浏览器的距离排序的话,有以下几种: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。
 
我们以Chrome为例子,输入chrome://net-internals/#dns,我们会看到如下界面:
这里的Capacity: 1000,代表缓存1K条,那么每条记录缓存多久呢?参看
timeout 1
这里的1代表1分钟。
如果是系统缓存,一般分2种情况:
 
Linux 操作系统
见下图,一般在/etc/hosts下。

 

Windows操作系统
一般在C:\Windows\System32\Drivers\etc\hosts
 
谈到这里,我给大家分享一个特别有用的技巧
我们在做开发和测试时,会有一种情况,经常会去访问某个(测试)URL,例如http://192.168.1.8:8080/admin/login, 如果这样的话,我们极有可能存在一个问题,觉得每次输入ip真的很麻烦。怎么解决?那么我们可以这么做,利用DNS的原理,将某个伪hostname(abc-test)加入到hosts里,只需加入一条记录:
192.168.1.8. abc-test
这样就可以用http://abc-test:8080/admin/login去访问了,简单易用,对吧。

DNS负载均衡

不知道大家有没有注意或思考过一个问题,Google在全球都有服务器,不同的国家或区域访Google,是不是都很快,这就是Google GSLB的作用。也就是说不同的区域访问Google返回的IP是不一样的,甚至在同一个办公室访问Google,返回回来的IP也有可能是不一样的。
为什么呢?这里用的就是DNS负载均衡,不然Google怎么去支持全球几十亿客户的请求呢。总之,DNS会根据你的位置或IP返回一个合适的IP给你用。除了Google,一些CDN的SP例如Akamai、AWS、Azure、阿里云都有类似的服务。

DNS Record(记录)

DNS记录是一个非常重好的概念。DNS记录类型如下表。
记录类型
含义简介
A(Address)
指定域名对应的IPv4地址
AAAA
指定域名对应的IPv6地址
NS(Name Server)
指定该域名由哪个DNS服务器来进行解析
MX(Mail Exchanger)
邮件交换记录,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器
CNAME
别名记录,多个域名映射到同一台计算机(如同一主机提供mail和www服务)
TXT
主机名或域名的说明
TTL(Time-To-Live)
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信