浏览器输入url按下回车后发生了什么

总体过程:

1.输入地址。
2.DNS解析。

DNS解析的过程就是寻找哪台机器上有你需要资源的过程。当你在浏览器中输入一个地址时,例如http://www.baidu.com,其实不是百度网站真正意义上的地址。互联网上每一台计算机的唯一标识是它的IP地址,但是IP地址并不方便记忆。用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机,也就是上面提到的百度的网址。所以互联网设计者需要在用户的方便性与可用性方面做一个权衡,这个权衡就是一个网址到IP地址的转换,这个过程就是DNS解析。

3.TCP连接(三次握手)。
在这里插入图片描述

第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认;
第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;
第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。

4.发送http请求。
5.返回http响应。
6.浏览器解析渲染页面。

服务器返回html文档之后,浏览器的渲染引擎开始dom解析过程(构建DOM树->渲染树(Render tree)->布局render树->绘制render树)
浏览器解析页面时,会找到每一个文件夹(css、js、html、img…),每一个文件夹下的资源会重新走到第二步,去找到相应的服务器,然后一步步执行。

7.断开连接(四次挥手)。
在这里插入图片描述

1.客户端 A 发送一个 FIN,用来关闭客户 A 到服务器 B 的数据传送;
2.服务器 B 收到这个 FIN,它发回一个 ACK,确认序号为收到的序号加 1。和 SYN 一样,一个 FIN 将占用一个序号;
3.服务器 B 关闭与客户端 A 的连接,发送一个 FIN 给客户端 A;
4.客户端 A 发回 ACK 报文确认,并将确认序号设置为收到序号加 1。

为什么是四次挥手:
1.tcp是全双工通信,服务端和客服端都能发送和接收数据。
2.tcp在断开连接时,需要服务端和客服端都确定对方将不再发送数据。

参考:https://blog.csdn.net/kongcheng_001/article/details/107412289
https://blog.csdn.net/tennysonsky/article/details/45622395

猜你喜欢

转载自blog.csdn.net/weixin_44019523/article/details/114239592