从输入url到浏览器显示页面的过程

半学半猜,大胆整理一下,有误请指出。

客户端,浏览器中输入www.baidu.com

1、通过DNS查询域名对应IP
2、通过TCP与对方IP建立连接(3次握手)
3、发送http请求报文

  • http_data = http_head + data
  • tcp_data = tcp_head + http_data
  • ip_data = ip_head + tcp_data

4、封装好的报文通过数据链路层,发送给服务端(链路层中还有ARP协议、以太网等)

服务端

5、解析报文,依次经过链路层、网络层、传输层、应用层解析,得到请求数据
6、服务端响应请求,生成response数据
7、经过HTTP、TCP、IP、数据链路层,封装数据,发送给客户端

客户端

8、TCP断开连接,4次挥手
9、各层解析报文,取出头部,浏览器得到响应数据(html)

浏览器解析页面

10.根据html,解析DOM树
11.根据CSS,解析CSS规则树
12.根据DOM树和CSS规则树,生成render树,计算出有哪些节点,以及他们的位置
13.根据render树渲染界面。如果期间加载到js脚本,就运行;若对布局产生影响,就要重新加载;如果遇到img,就先发送请求,继续往下渲染,待图片到来之后重新渲染该部分。

附上各协议报文格式

HTTP:来自https://blog.csdn.net/yutiab69/article/details/82869239
从输入url到浏览器显示页面的过程_第1张图片
响应报文结构图
从输入url到浏览器显示页面的过程_第2张图片
TCP:来自https://blog.csdn.net/qq_38950316/article/details/81087809
从输入url到浏览器显示页面的过程_第3张图片
IP:来自https://blog.csdn.net/mary19920410/article/details/59035804
从输入url到浏览器显示页面的过程_第4张图片

你可能感兴趣的:(网络,网络)