目录
article
HTTP 之在浏览器地址栏输入域名地址后的完整流程
HTTP 之在浏览器地址栏输入域名地址后的完整流程
- Chrome 搜索自身的 DNS 缓存,找到则结束解析,返回内容
- 搜索操作系统自身的 DNS 缓存 (浏览器缓存没找到或失效),找到则结束解析,返回内容
- 读取本地 HOST 文件,查找配置项
- 如果 HOST 中也没有找到,则浏览器会发起一个 DNS 的系统调用,访问宽带运营商的 DNS 服务器
- 宽带运营商服务器会查看本身的缓存
- 如果没有找到缓存,则运营商服务器会发起一个迭代 DNS 解析的请求 (从最高级域名开始,层层向下解析,直到找到最底层域名的服务器的 IP,然后最底层服务器会向运营商服务器返回域名所对应的 IP。然后运营商服务器会把结果返回给操作系统内核同时缓存起来,接着操作系统内核会把结果返回给浏览器,最终浏览器拿到了域名地址对应的 IP 地址。)
- 浏览器获得域名对应的 IP 地址后,发起 HTTP 三次握手(浏览器通过随机端口向 Web 服务器发起连接请求,这个连接请求通过层层路由设备,最终到达服务器的网卡,然后进入到内核的 TCP/IP 协议栈,还有可能经过防火墙的过滤,最终到达 Web 服务端,此时就建立起了 TCP 连接)
- TCP/IP连接建立起来以后,浏览器就可以向服务器发送HTTP请求了
- 服务器端接收到这个请求,根据路径参数,经过后端的一些处理之后,拔出力结果返回给浏览器,比如 HTML 页面代码
- 浏览器拿到了完整的 HTMl 页面代码,在解析和渲染这个页面的时候,里面的 JS,CSS,图片静态资源都是通过一个个 HTTP 请求来获取到的
- 最终浏览器根据拿到的资源对页面进行渲染,把一个完整的页面呈现给用户