软件测试面试:浏览网页时都发生了什么?
当我们浏览一个网站时,从打开网址到返回网页结果,整个过程涉及多个步骤和技术,以下是一个详细的介绍。
1. 用户输入网址
用户在浏览器的地址栏中输入网站的URL(Uniform Resource Locator)。
2. DNS解析
浏览器将输入的URL发送给DNS 服务器,进行域名解析。DNS服务器将域名转换为对应的IP地址,以便后续的通信。
3. 建立TCP连接
浏览器使用HTTP(或HTTPS)协议 与服务器建立TCP(Transmission Control Protocol)连接。TCP协议确保数据可靠传输,并提供错误检测和纠正。
4. 发起HTTP请求
浏览器会先检查浏览器缓存,如果缓存中存在该资源,并且缓存未过期,则浏览器会直接使用缓存中的资源,不会向服务器发起HTTP请求。
如果缓存不存在或缓存已过期,则浏览器会向服务器发送HTTP请求。
请求由以下部分组成:
a. 请求行:包含请求方法(GET、POST等)、请求的URL和HTTP协议的版本。
b. 请求头:包含关于请求的额外信息,如用户代理(浏览器的类型和版本)、请求的资源类型、Cookie等。
c. 请求体:用于POST请求,包含请求时提交的数据。
在请求头中,浏览器会发送包含Cookie信息的HTTP请求头,这些Cookie通常是在前一次用户访问时通过Set-Cookie响应头设置的。
服务器可以通过读取HTTP请求头中的Cookie信息来识别用户身份,提供个性化的服务和功能。
5. 服务器处理请求
服务器收到浏览器发送的HTTP请求后,会根据请求的内容进行相应的处理。包括以下步骤:
a. 路由和处理:服务器根据请求的URL,将请求交给相应的处理程序(如后端框架、服务器脚本等)进行处理。
b. 数据库查询:如果需要从数据库中获取数据,服务器会执行相应的查询操作。
c. 业务逻辑:服务器根据具体需求执行业务逻辑,如验证用户信息、处理提交的数据等。
d. 构建响应:服务器生成HTTP响应,包含以下部分:
- 状态行:包含响应状态码(表示请求的处理结果)和HTTP协议的版本。
- 响应头:包含关于响应的额外信息,如内容类型(Content-Type)、服务器类型等。
- 响应体:包含响应时返回给浏览器的内容,如网页的HTML代码、资源文件等。
在构建响应时,服务器可以将一些Cookie信息包含在Set-Cookie响应头中,这些Cookie可以包含用户身份信息、会话ID等。
6. 返回HTTP响应
服务器将构建好的HTTP响应发送回浏览器。
7. 下载网页内容
浏览器接收到服务器返回的HTTP响应后,开始下载 网页内容和相关资源,如CSS文件、JavaScript文件、图片等。
这些资源可能在响应头中指定了缓存策略,浏览器会根据缓存策略来决定是否从缓存中获取资源。
8. 解析和渲染网页
浏览器对下载的网页内容进行解析,构建DOM(文档对象模型)树,并将CSS样式应用于DOM树,生成渲染树,浏览器使用渲染树将网页内容显示在屏幕上。
9. 执行JavaScript代码
如果网页中包含JavaScript代码,浏览器会执行这些代码,以实现一些交互和动态效果。JavaScript代码可以修改DOM树和样式,处理用户的交互事件,发送异步请求等。
10. 关闭连接
浏览器完成网页的渲染和执行后,断开与服务器的TCP
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取