从浏览器输入URL到页面加载的具体流程
参考文章:https://mp.weixin.qq.com/s/Y9nyhX-0N7ChbrWd76UIYQ
过程
- DNS解析;
- TCP连接;
- 发送HTTP请求;
- 服务器处理请求并返回HTTP报文;
- 浏览器解析渲染页面;
- 连接结束;
DNS解析
解析过程就是寻找哪台机器上有你需要的资源,就是将网址到IP地址的转换。
DNS缓存
可以看到上面的解析流程十分繁琐耗时,所以有了DNS的缓存。
有浏览器缓存、系统缓存、路由器缓存、IPS服务器缓存、根域名服务器缓存、顶级域名服务器缓存、主域名服务器缓存。这些缓存将请求过得网址和IP地址都储存下来,如果下次再使用就直接知道。
TCP连接
http协议是基于tcp连接的
HTTP请求
构建HTTP请求报文并通过TCP协议发送到服务器指定端口,请求报文由三部分组成:请求行、请求报头和请求正文。
- 请求行:
GET index.html HTTP/1.1
常用方法:GET,POST,PUT,DELETE,OPRIONS,HEAD - 请求报头:允许客户端向服务器传递请求参数的附加信息和客户端自身的信息;
- 当使用POST,PUT方法时,通常需要客户端向服务端传递数据,这些数据就储存在请求正文中。
服务器处理请求并返回HTTP报文
HTTP响应报文也由三部分组成:状态码、响应报头、响应报文;
- 状态码由3位数组成,第一个数定义了相应的类别:
- 1xx:指示信息-表示请求已接收,继续处理;
- 2xx:成功-表示请求已被成功接收、理解、接受;
- 3xx:重定向-要完成请求必须进行更进一步的操作;
- 4xx:客户端错误-请求有语法错误或请求无法实现;
- 5xx:服务端错误,服务器未能实现合法的请求;
常见状态码:常见的状态码有:200, 204, 301, 302, 304, 400, 401, 403, 404, 422, 500
-响应报文:服务器返回给浏览器的文本信息,通常为HTML、CSS、JS图片等文件。