计算机网络(2) - 一文了解输入 url 到页面呈现的过程
url 到页面呈现的过程
文章目录
1、输入网址
2、浏览器查找域名的 IP 地址(DNS域名解析)
- 请求一旦发起,浏览器首先要做的事情就是解析这个域名。首先会查看本地硬盘的 hosts 文件有没有对应IP地址,若没有使用DNS解析
-
DNS解析
- 浏览器会发出一个 DNS请求到本地DNS服务器(一般都是你的网络接入服务器商提供,比如中国电信,中国移动。)
- 如果没有,本地服务器分别向根服务器,域服务器,询问,最后返回用户一个IP地址。
DNS查询的两种方式:递归查询和迭代查询
1、递归解析:本地DNS服务器 - 根服务器 - 域服务器 - 解析服务器
2、迭代解析:由本地自己去问
3、TCP连接
拿到域名对应的IP地址之后,浏览器会以一个随机端口(1024<端口<65535)向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求。
- 第一次握手:建立连接时,客户端向服务端发送请求报文
- 第二次握手:服务器收到请求报文后,如同意连接,则向客户端发送确认报文
- 第三次握手,客户端收到服务器的确认后,再次向服务器给出确认报文,完成连接。
4、浏览器向 web 服务器发起一个http请求
浏览器构建http请求报文,并通过TCP协议传送到服务器的指定端口。http请求报文一共包括三个部分:
- 起始行:如 GET / HTTP/1.0 (请求的方法 请求的URL 请求所使用的协议)
- 头部信息:User-Agent Host等成对出现的值
- 主体
5、服务器处理请求,并返回响应报文
响应报文包括三个部分:
- 状态码:
状态码 含义 常见示例 1** 服务器已经接受到请求,客户端可继续发送请求 2** 请求成功 200:请求已成功,请求所希望的响应头或数据体将随此响应返回。 3** 重定向 303:对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。 4** 客户端错误 404:请求的网页不存在 5** 服务器错误 503: 服务器超时 - 响应头:包含了响应的相关信息,如日期等
- 响应正文:服务器返回给浏览器的文本信息,通常的html、js、css、图片等就包含在这一部分里面。
6、浏览器展示HTML(浏览器页面渲染)
浏览器接受到http服务器发送过来的响应报文,并开始解析html文档,渲染页面。具体的渲染过程包括:构建DOM树、构建渲染树、定位页面元素、绘制页面元素等。参考:如何渲染的
- 根据需要,浏览器发送请求获取其他在HTML中的资源。