1、查找域名对应的ip地址
首先去浏览器缓存中找,如果不久前刚刚输入过,那么在缓存会留下ip地址,缓存周期一般在几分钟到半小时
查找系统缓存(host文件),浏览器进行系统调用(windows中是gethostbyname)
查找路由缓存,前两步都不需要网络,这里需要用到网络,路由器上有自己的DNS缓存,这是ISP互联网提供商在路由器留下的DNS缓存
递归查找ISP的DNS服务器 (这才是真正的第三方DNS服务器)
本地域名服务器向根域名服务器的查询是迭代查询。
2、浏览器和服务器经过三次握手建立TCP连接
浏览器发送请求报文,服务器确认请求并返回给浏览器确认信息,浏览器收到确认信息,再发一次请求告诉服务器收到刚才的服务器确认信息。建立通信
引申:为什么要有第三次握手,防止已失效的请求报文段突然又传送到了服务端而产生连接的误判
3、浏览器通过http协议发送请求
4、服务器处理请求
5、发出HTML响应 (有时候为了负载均衡或者导入流量来提高SEO优化,会返回一个永久重定向301,这时候在Location找到重定向地址,重复上述操作)
6、四次挥手释放TCP连接
四次挥手(和地址栏发生的事情无关),由于TCP是双全工的也就是双通道,需要双通道都单独关闭
1. 浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;
2. 服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;
3. 服务器数据传输完毕后,向客户机发送连接释放报文;
4. 客户机接收到报文后,发出确认,然后等待一段时间后,释放TCP连接;
7、浏览器渲染页面
8、获取图片url、js的src资源