http服务过程及域名解析过程整理

777 阅读2分钟

前言

今天一起看一下一次完整的HTTP服务过程是什么,以及看一下DNS是如何找到域名的。


一、 一次完整的HTTP服务过程是什么?

当我们在web浏览器的地址栏中输入:www.baidu.com,具体发生了什么?

  1. www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址
  2. 根据这个IP,找到对应的服务器,发起TCP的三次握手
  3. 建立TCP连接后, 发起HTTP请求
  4. 服务器响应HTTP请求,浏览器得到html代码
  5. 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)(先得到html代码,才能去找这些资源)
  6. 浏览器对页面进行渲染呈现给用户
  7. 服务过程完毕, 关闭TCP连接, 四次挥手

1. DNS怎么找到域名的?

DNS域名解析采用的是递归查询的方式,过程是先去找DNS缓存->缓存找不到就去找根域名服务器 ->根域名又会去找下一级,这样递归查找之后,找到了,给我们的web浏览器。

2. 为什么HTTP协议要基于TCP来实现?

TCP是一个端到端的可靠面相连接的协议,HTTP基于传输层TCP协议不用担心数据传输的各种问题(当发生错误时,可以重传)

3. 浏览器是如何对页面进行渲染的?

  • 解析html文件构成 DOM树
  • 解析CSS文件构成渲染树
  • 边解析,边渲染
  • JS 单线程运行,JS有可能修改DOM结构,意味着JS执行完成前,后续所有资源的下载是没有必要的,所以JS是单线程,会阻塞后续资源下载

二、什么是DNS 解析

DNS解析(域名解析服务器) 将 域名 转换成 ip地址 (一个域名和ip的映射关系, 具体登记在哪里, 看我们如何申请关联的!)

假定请求的是 www.baidu.com

  • 首先会搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存)

  • 如果浏览器自身的缓存里面没有找到,那么浏览器会搜索系统自身的DNS缓存

  • 如果还没有找到,那么尝试从 hosts 文件里面去找 (一个系统电脑的文件, 可以编辑, 可以存 域名 和 ip 的对应关系)

  • 在前面三个过程都没获取到的情况下,就递归地去域名服务器去查找(就近查找),具体过程如下

在这里插入图片描述 DNS优化两个方面:DNS缓存、DNS负载均衡 (准备多台dns服务器, 进行dns解析)


总结

Whatever is worth doing is worth doing well.