一次HTTP请求的详细过程
本文参考其他大佬的博客文章总结,首先跪谢大佬们……
本文的前提是当你通过客户端浏览器输入一个合法的URL。例如:http(/https)://www.xxx.com(.cn/xxx)
- 搜索自身DNS
- chrome:chrome://net-internals/#dns
- firefox:about:config ->network.dnsCacheExpiratio
- 搜索操作系统自身的DNS
- 如果浏览器没有找到缓存或者缓存过期失效,浏览器就会搜索操作系统自身的缓存,没有找到或者失效,解析结束(操作系统的缓存:window系统是一天,mac系统严格根据DNS协议中的TTL)
- 读取本地的host文件
-
- %SystemRoot%\system32\drivers\etc\(大致的查找地址)*
-
浏览器发起一个DNS的系统调用
- hosts中没有找到对应的配置项的话,浏览器发起一个DNS的调用(向本地主控DNS服务,一般来说是你的运营商提供的)
DNS参考地址:DNS域名解析解剖
- hosts中没有找到对应的配置项的话,浏览器发起一个DNS的调用(向本地主控DNS服务,一般来说是你的运营商提供的)
TCP的三次握手
- 为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。
TCP的三次握手和四次分手参考地址:通俗大白话来理解TCP协议的三次握手和四次分手
- 为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。
TCP连接建立,并发送请求
- request
- 服务器端读取请求,并将结果返回
- response
- 客户端接受响应,浏览器渲染结果,并显示在页面上
- html/css/javascript渲染
- html/css/javascript渲染