1.输入网址,浏览器解析URL信息,准备发送HTTP请求
输入一个网址(URL)并准备发送HTTP请求时,可以从URL中获取以下信息:
协议:URL的开头部分,如
http://
或https://
,指示了使用的网络协议。http
代表超文本传输协议,而https
表示安全超文本传输协议,后者使用SSL/TLS加密数据。域名:URL中的主要部分,如
www.example.com
,它代表了要访问的服务器的域名。域名可以进一步分解为子域名、主域名和顶级域名。端口:可选部分,用来指定服务器上监听的端口号,默认情况下
http
是80端口,https
是443端口。如果使用非标准端口,可以在域名后指定,格式为:端口号
。路径:URL中用来指定服务器上资源的路径,如
/path/to/resource
。它告诉服务器请求哪个文件或目录。查询字符串:URL中的
?
后面跟随的部分,用来传递参数给服务器,格式为key1=value1&key2=value2
等。这些参数通常用于请求特定的数据或执行特定的操作。片段标识符:URL中的
#
后面跟随的部分,用于指定页面内的某个位置或资源。片段标识符主要用于客户端,不发送到服务器。主机名或IP地址:在某些情况下,URL中的域名部分可能被替换为服务器的IP地址。
2.浏览器检查浏缓存里是否有缓存该资源,如果有直接返回;如果没有进入下一步网络请求。
3.DNS域名解析:网络请求前,进行DNS解析,以获取请求域名的IP地址。如果请求协议是HTTPS,那么还需要建立TLS连接。DNS解析时会按本地浏览器缓存->本地Host文件->路由器缓存->DNS服务器->根DNS服务器的顺序查询域名对应IP,直到找到为止。
4.TCP三次握手建立连接:浏览器与服务器IP建立TCP连接。
- HTTP/1.1:默认使用TCP作为其底层传输协议。
- HTTP/2:同样依赖于TCP,但引入了头部压缩、多路复用等特性,以提高性能。
- HTTP/3:使用基于UDP的QUIC协议,以进一步提高性能和减少延迟。
5.客户端发送HTTP请求:连接建立后,浏览器端会构建请求行、请求头等信息,并把和该域名相关的Cookie等数据附加到请求头中,向服务器构建请求信息。如果是HTTPS的话,还涉及到HTTPS的加解密流程。
6.服务器处理请求并返回HTTP资源:服务器接收到请求信息,根据请求生成响应数据。
7.TCP四次挥手断开连接:浏览器与服务器IP断开TCP连接。
8.浏览器解析响应并渲染页面