
本文共 1192 字,大约阅读时间需要 3 分钟。
1、浏览器地址栏输入URL并按下回车
当你在浏览器地址栏输入URL并按回车时,实际上启动了一系列复杂的网络通信和数据处理流程。常见的URL格式为http://www.baidu.com
,其中包含协议名、域名和端口号。协议名如http
或https
决定了数据传输的方式,域名www.baidu.com
则指向特定的服务器地址,端口号默认情况下通常隐藏。URL还可能包含路径、查询参数或片段等信息。
2、浏览器查找当前URL是否存在缓存并比较缓存是否过期
浏览器缓存机制通过cache-control
和expires
头部字段判断是否需要重新请求资源。cache-control
中的max-age
指定了缓存时间间隔,expires
则提供了绝对时间。浏览器优先考虑cache-control
信息。如果资源未过期且未被修改,浏览器会使用缓存内容。
在缓存验证方面,last-modified
和etag
字段起关键作用。last-modified
记录资源最后更新时间,浏览器通过if-modified-since
头部字段发送请求,服务器比较时间判断是否需要返回新资源或返回304
状态码。
3、DNS解析URL对应的IP
输入URL后,浏览器首先通过DNS解析获取服务器IP地址。解析过程从域名开始,逐步向上查询根域、顶级域,直到找到对应的IP地址。浏览器检查本地缓存和hosts文件,如果找不到IP地址则递归查询DNS服务器,最终得到服务器的网络位置。
4、根据IP建立TCP连接(三次握手)
DNS解析完成后,浏览器通过TCP协议建立连接。TCP连接的三次握手过程如下:
5、HTTP发起请求
HTTP请求由请求起始行、请求头部和请求主体组成。起始行包括方法、路径和版本号,头部包含用户代理信息、内容编码方式、语言等。主体则根据请求类型,如GET或POST,包含必要数据。
6、服务器处理请求,浏览器接收HTTP响应
服务器接收请求后,通过处理HTTP报文生成响应。响应包括状态码、响应头和响应报文。状态码分为信息性、成功、重定向、客户端错误和服务器错误五大类。浏览器接收响应后,渲染页面并展示结果。
7、渲染页面,构建DOM树
页面渲染通过解析HTML、CSS并构建DOM和CSSOM树,生成渲染树。浏览器根据渲染树计算节点位置并绘制页面。重排和重绘机制确保页面动态更新,优化性能。
8、关闭TCP连接(四次挥手)
连接关闭通过四次挥手完成:浏览器发送FIN,服务器发送ACK,并在第三次挥手发送FIN,浏览器返回ACK,完成断开。
以上流程完整描述了从输入URL到页面呈现的网络通信过程,涵盖了浏览器缓存、DNS解析、TCP连接、HTTP请求、服务器响应、渲染以及连接关闭等关键环节。
发表评论
最新留言
关于作者
