HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口

简介: 【6月更文挑战第23天】HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。

HTTP请求的基本流程可以分为以下几个步骤:

  1. 构建请求行

    • 浏览器根据用户提供的URL来构建一个HTTP请求。请求行包括三个部分:请求方法(如GET、POST)、请求的资源路径和HTTP版本号。
  2. 查找浏览器缓存

    • 在真正发送请求之前,浏览器会先检查本地缓存中是否有这个请求的响应结果。如果有且没有过期,那么就直接使用缓存中的数据,否则继续执行下一步。
  3. 准备IP地址和端口号

    • 根据URL中的域名解析出服务器的IP地址,并确定需要连接的TCP端口(默认为80或443)。
  4. 等待TCP队列(仅适用于HTTP/1.1):

    • 如果是HTTP/1.1版本的请求,在建立TCP连接之前还需要确认当前请求是否需要在建立TCP连接前排队等候。这是因为HTTP/1.1允许复用TCP连接以提高性能。
  5. 建立TCP连接

    • 使用TCP协议与服务器建立连接。这涉及到三次握手过程,确保客户端和服务器之间的通信通道已经准备好。
  6. 发送HTTP请求头

    • 一旦TCP连接建立成功,浏览器将开始发送HTTP请求报文。首先发送的是请求行,接着是一系列的请求头,它们包含了关于请求的各种信息,如Accept、Cookie、User-Agent等。
  7. 发送HTTP请求体

    • 对于POST、PUT等带有请求体的方法,此时浏览器会发送请求体数据。例如表单提交的数据会被编码后随请求一起发送到服务器。
  8. 服务器处理请求

    • 服务器接收到完整的请求后,会对请求进行处理。这可能涉及数据库查询、文件操作或其他业务逻辑。
  9. 服务器返回响应

    • 处理完成后,服务器构建HTTP响应报文并将其通过已建立的TCP连接发送回给客户端。响应报文包含状态行、响应头以及可选的响应体。
  10. 关闭TCP连接

    • 完成数据传输后,通常情况下TCP连接会被关闭。但在HTTP/1.1中,如果请求头指定了Connection: keep-alive,则该连接可能会被保持一段时间以便重用。
  11. 浏览器接收响应

    • 浏览器从TCP连接中读取响应数据,解析响应报文并展示给用户。
  12. 更新浏览器缓存

    • 如果响应头指示了某些内容应该被缓存,浏览器会将其存储起来,以便后续的请求可以直接使用。

以上就是HTTP请求的基本流程。需要注意的是,不同的HTTP版本(如HTTP/1.0、HTTP/1.1和HTTP/2)之间存在一些差异,但基本原理是相同的。

相关文章
|
2月前
|
存储 域名解析 弹性计算
阿里云上云流程参考:云服务器+域名+备案+域名解析绑定,全流程图文详解
对于初次通过阿里云完成上云的企业和个人用户来说,很多用户不仅是需要选购云服务器,同时还需要注册域名以及完成备案和域名的解析相关流程,从而实现网站的上线。本文将以上云操作流程为核心,结合阿里云的活动政策与用户系统梳理云服务器选购、域名注册、备案申请及域名绑定四大关键环节,以供用户完成线上业务部署做出参考。
|
7月前
|
JSON 测试技术 API
优化你的 REST Assured 测试:设置默认主机与端口、GET 请求与断言
REST Assured 是一个强大的 Java 库,用于简化 RESTful API 测试。本文详解了其核心功能:设置默认主机和端口以减少代码重复、发起 GET 请求并验证响应结果,以及通过断言确保接口行为符合预期。同时推荐 Apipost 工具,助力开发者提升 API 测试效率,实现更高效的接口管理与团队协作。掌握这些技巧,可显著优化测试流程与代码质量。
|
6月前
|
域名解析 网络协议 网络安全
SSL证书验证全攻略:DNS/HTTP/手动解析怎么选?
SSL证书在网络安全中至关重要,1Panel提供三种验证方式:DNS验证、HTTP验证和手动解析。DNS验证便捷,适合CDN网站;HTTP验证快速,需服务器在线;手动解析灵活,但操作复杂。根据需求选择合适确认方式,定期检查证书状态。
787 2
|
8月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
829 29
|
8月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
9月前
|
域名解析 弹性计算 负载均衡
新手上云教程参考:阿里云服务器租用、域名注册、备案及域名解析流程图文教程
对于想要在阿里云上搭建网站或应用的用户来说,购买阿里云服务器和注册域名,绑定以及备案的流程至关重要。本文将以图文形式为您介绍阿里云服务器购买、域名注册、备案及绑定的全流程,以供参考,帮助用户轻松上手。
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
375 0
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
248 0
|
Java
JAVA 获取 URL 指定参数的值
JAVA 获取 URL 指定参数的值
197 0

推荐镜像

更多
  • DNS