美文网首页
域名里有哪些门道?

域名里有哪些门道?

作者: Drew_MyINTYRE | 来源:发表于2022-01-25 11:48 被阅读0次

你要访问 www.apple.com,就要进行下面的三次查询:

  • 访问 根域名服务器,它会告诉你 com 顶级域名服务器的地址;

  • 访问 com 顶级域名服务器,它再告诉你 apple.com 域名服务器的地址;

  • 最后访问 apple.com 域名服务器,就得到了 www.apple.com 的地址

操作系统里也会对 DNS 解析结果做缓存,如果你之前访问过 www.apple.com,那么下一次在浏览器里再输入这个网址的时候就不会再跑到 DNS 那里去问了,直接在操作系统里就可以拿到 IP 地址。

键入网址再按下回车,后面究竟发生了什么?

  • 浏览器从地址栏的输入中获得服务器的 IP 地址和端口号;

如果浏览器看到了网址是 www.chrono.com,发现它不是数字形式的 IP 地址,那就肯定是域名了,于是就会发起域名解析动作,通过访问一系列的域名解析服务器,试图把这个域名翻译成 TCP/IP 协议里的 IP 地址。

  • 浏览器用 TCP 的三次握手与服务器建立连接;

  • 浏览器向服务器发送拼好的报文;

  • 服务器收到报文后处理请求,同样拼好报文再发给浏览器;

  • 浏览器解析报文,渲染输出页面。

在域名解析的过程中会有多级的缓存,浏览器首先看一下自己的缓存里有没有,如果没有就向操作系统的缓存要,还没有就检查本机域名解析文件 hosts。

做个总结:

  • HTTP 协议基于底层的 TCP/IP 协议,所以必须要用 IP 地址建立连接;

  • 如果不知道 IP 地址,就要用 DNS 协议去解析得到 IP 地址,否则就会连接失败;

  • 建立 TCP 连接后会顺序收发数据,请求方和应答方都必须依据 HTTP 规范构建和解析报文;

  • 为了减少响应时间,整个过程中的每一个环节都会有缓存,能够实现“短路”操作;

比如 CDN,因为 CDN 会缓存网站的大部分资源,比如图片、CSS 样式表,所以有的 HTTP 请求就不需要再发到目标服务器,CDN 就可以直接响应你的请求,把数据发给你。

思考:如果访问的是一个不存在的域名,那么浏览器的工作流程会是怎么样的呢?

首先浏览器判断是不是 IP 地址,不是则进行域名解析,依次通过 浏览器缓存 -> 系统缓存 -> host文件,还是没找到(域名映射的 IP 地址),则请求 DNS 服务器获取 IP 解析(解析失败的浏览器尝试换别的 DNS 服务器,最终失败的进入错误页面),如果某 CDN 服务器获取到了 IP 地址,访问 CDN 时先看是否缓存了,缓存了则直接响应用户,无缓存或者缓存失效,则回源到服务器。经过防火墙外网网管路由到 Nginx 接入层。Nginx 缓存中存在的直接返回,不存在的负载到 Web 服务器。Web 服务器接受到请后处理,路径不存在404。存在的直接返回结果。原路返回,CDN 加入缓存响应用户。

相关文章

网友评论

      本文标题:域名里有哪些门道?

      本文链接:https://www.haomeiwen.com/subject/chlwhrtx.html