1、浏览器(客户端)进行了地址解析。
浏览器对这个url地址进行解析=>获取协议,主机,端口,路径等信息。
2、将解析出的域名进行dns解析。
通过地址解析=>获得主机地址也就是域名=>dns解析转换为ip地址
3、通过ip寻址和arp,找到目标(服务器)地址。
通过dns解析=>获取ip地址=>ip寻址找到对应服务器=>arp协议转换mac地址
4、进行tcp三次握手,建立tcp连接。
找到目标服务器地址=>浏览器发出请求建立稳定的tcp连接
三次握手:
1)Client:嘿,李四,是我,听到了吗?
发送端发送带有SYN标志的数据包给接收方。
2)Server:我听到了,你能听到我的吗?
接收方接收后回传带有SYN/ACK标志的数据包确认信息
3)Client:好的,我们互相都能听到对方的话,我们的通信可以开始了。
最后发送方回传带有ACK标志的数据包、握手结束
四次挥手:
1)Client:我所有东西都说完了
发送方发送一个FIN给接收方用来关闭数据传送通道
2)Server:我已经全部听到了,但是等等我,我还没说完
接收方接收后发送ACK标志数据包给发送方表示确认、并确认是否完全传输完所有数据
3)Server:好了,我已经说完了
接收方确认完全传输完所有数据发送FIN给发送方用于关闭数据传送通道
4)Client:好的,那我们的通信结束l
发送方收到FIN后发送ACK标志数据包给接收方表示确认并关闭数据传通道
5、浏览器发送数据,等待服务器响应。
建立tcp连接=>请求包装=>发送请求报文到服务器
6、服务器处理请求,并对请求做出响应。
服务器接收到请求报文=>处理请求报文=>执行接口对应代码=>响应客户端
7、浏览器收到服务器响应,得到html代码。
浏览器接收响应数据=>处理并解析数据
需要注意的是content-type在accept中能正常解析、如果不能解析会直接下载、或者解析报错。
accept代表发送端(客户端)希望接受的数据类型
content-type代表服务器返回的数据类型
8、渲染页面。
成功解析=>渲染页面
解析步骤:
html解析->外部样式、脚本加载->外部样式执行->外部脚本执行->html继续解析->dom树构建完成->加载图片->页面加载完成。
————————————————
转载自 略有简化补充
https://blog.csdn.net/weixin_38150378/article/details/79408886
https://blog.csdn.net/weixin_38150378/article/details/79443584