HTTP请求的整个过程
总体进行一个理解:
DNS解析—>TCP 连接—>浏览器发送http请求—>服务器响应请求—>浏览器解析html文件—>浏览器布局渲染
· DNS 解析:将域名解析成 IP 地址
· TCP 连接:TCP 三次握手
· 发送 HTTP 请求
· 服务器处理请求并返回 HTTP 报文
· 浏览器解析渲染页面
· 断开连接:TCP 四次挥手
1.DNS域名解析。
1) 首先会在浏览器DNS缓存中搜索是否有对应的IP映射(并且是有效的),如果找到的话,就调用该映射并且停止解析;如果没找到的话就执行第二步;
2)在操作系统DNS缓存中查找是否有对应的IP,如果有的就停止解析,否则就执行第三步;
3)查找本地系统 hosts 文件,在hosts文件中查找是否有对应的IP,如果有的话就停止解析,否则就向本地配置首选的DNS服务器发起域名解析的请求。
2.TCP连接。
TCP通过三次握手创建连接【保证数据传输的可靠性】,具体说一下三次握手的过程(此处就不细说了)。
3.客户端的浏览器向服务器发起http请求。【请求报文包括请求行、请求报头、空行、正文】在此不再详述
4.服务器对浏览器发过来的请求作以响应。【报文中 包括状态行、响应头部、空行、响应正文】在此也不详述(在这里常见的状态码要记住)
5.浏览器对HTML进行解析
客户端的浏览器收到服务器的响应之后就按照顺序一个一个地对HTML文件进行解析,构建DOM树,当解析到外部资源文件CSS或JS文件时,会对服务器发送请求,下载资源文件,如果下载的是CSS文件,浏览器会一边下载CSS文件,一边对后面的html文件进行解析,并且构建DOM树,如果下载的是JS文件,那么浏览器就停止对后面html文件的解析,此时就会出现JS页面阻塞的问
题。