输入url到页面返回的全过程
https://blog.csdn.net/Cs_hnu_scw/article/details/79896621
https://blog.csdn.net/ty987654/article/details/78007319
https://blog.csdn.net/samjustin1/article/details/52650520
第一步.查询DNS(域名解析),获取域名对应的IP地址
1. 我们输入一个域名:www.baidu.com
a. 浏览器查找浏览器缓存,如果有域名的IP地址则返回,如果没有继续查找;
b. 系统查找系统缓存,如果有域名的IP地址则返回,如果没有继续查找;
c. 路由器查找路由器缓存,如果有域名的IP地址则返回,如果没有继续查找;
(这是客户端的DNS缓存)
2. 本地域名服务器采用迭代查询,它先向一个根域名服务器查询;
3. 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址;
4. 本地域名服务器向顶级域名服务;器dns.com进行查询;
5. 顶级域名服务器dns.com告诉本地域名服务器,下一次应查询的权限域名服务器dns.baidu.com的IP地址;
6. 本地域名服务器向权限域名服务器dns.baidu.com进行查询;
7. 权限域名服务器dns.baidu.com告诉本地域名服务器,所查询的主机www.baidu.com的IP地址
8. 本地域名服务器最后把查询结果告诉主机;
2-8是DNS解析过程
第二步:浏览器得到服务器端的IP地址后,与服务器端建立TCP连接
建立TCP连接的过程就是三次握手过程
9. 主机浏览器获取到Web服务器的IP地址后,与服务器建立TCP连接;
10. 浏览器所在的客户机向服务器发出连接请求报文;
11. 服务器接收报文后,同意建立连接,向客户机发出确认报文;
12. 客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;
13. 此处客户机与服务器之间的TCP连接建立完成,开始通信;
3.建立TCP连接后,浏览器向服务器发送http请求
例如:浏览器发出取文件指令GET。
4.服务器响应http请求,将请求的指定资源发送给浏览器
5.浏览器释放TCP连接
释放TCP连接的过程就是四次挥手过程。
20. 浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;
21. 服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;
22. 服务器数据传输完毕后,向客户机发送连接释放报文;
23. 客户机接收到报文后,发出确认,然后等待一段时间后,释放TCP连接;
6.浏览器得到完整的html代码开始进行解析与渲染,如果遇到外部引用的css,图片等资源,同样发送一个http请求。
7.浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现出来。