更多文章
输入url发生了什么(二)--TCP
输入url发生了什么(三)--HTTP
输入url发生了什么(四)--浏览器渲染
前言
之前面试的时候也遇到了问这个问题的,这个问题涉及的面还是比较广的,有DNS、TCP、HTTP,HTML、CSS、JS绘制到页面的过程,这中间又会涉及到安全、优化一些列问题,很是值得去了解一下
DNS简介
DNS即域名系统,当访问某个域名时最终会解析为ip地址,实际访问的也就是这个ip地址,但是ip地址并不方便记忆,所以后来发明了DNS服务,它是域名和IP地址相互映射的一个分布式数据库
域 & 域服务器
以本博客https://www.chasejourney.top
为例,.
符号是命名空间用来分割各个域,其实.top
后还有一个.
(通常不写),这个.
就是根域,.com
就是顶级域,.chasejourney
是二级域,www
是三级域,它们共同组成了三级域名
- 根服务器
全球有13台IPv4根服务器、25台IPv6根服务器,中国部署了1台IPv6主根服务器3台IPv6辅根服务器,理论上说所有域名查询都是从根服务器开始的,只有根服务器会告诉我们顶级域名在哪里托管
DNS协议使用了端口上的UDP和TCP协议,UDP通常用于查询和响应,TCP多次验证比较慢用于传输,UDP正常工作的最大长度是512字节,512字节限制了根服务器的数量和名字,所以IPv4根服务器只能限制在13个,且命名为A-M
- 顶级域名 & 顶级域名服务器
一般性顶级域名(gTLD): .com(公司)、.net(网络服务机构)、.org(非盈利组织)、.int(国际组织)、.edu(教育机构)等
国别顶级域名(ccTLD):.cn(中国)、us(美国)、uk(英国)、.io(英属印度洋领地)、.cc(科科斯群岛)
顶级域名服务器负责注册的二级域名
域名解析流程
- 浏览器缓存
浏览器会去查询缓存中是否有该域名对应的ip地址,如果有解析就此结束
- 系统缓存
浏览器没有查到相应的ip地址,会去本地hosts文件中查找有没有相应的ip地址,windows中hosts一般在C:\Windows\System32\drivers\etc
- 路由器缓存
系统没有查到缓存,就会向路由器发送查询请求
- 本地DNS服务器
以上缓存都没有查询到IP就会向本地DNS服务器查询,本地DNS主要指的是各个服务商,如移动联通电信等
- 递归查询
至此还没有查到ip,那就只能本地DNS服务向根服务器查询,根服务将所查询的顶级域名所在的服务器Ip地址返回给本地DNS,本地DNS在向顶级服务器在进行查询,顶级服务器将二级域名ip地址返回给本地服务器,之后重复该步骤,直到本地DNS拿到完整的ip地址并返给主机,本地DNS会缓存自己查询到的ip地址,如果此时有另外一个主机访问该域名,会直接返回缓存的ip地址
DNS预解析
- meta标签预解析
<meta http-equiv="x-dns-prefetch-control" content="on" />
- link标签来强制对DNS做预解析
<link rel="dns-prefetch" href="https://www.chasejourney.top" />
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!