HTTP 请求流程

HTTP 的请求流程包括地址解析、封装 HTTP 数据包、封装 TCP 包、建立 TCP 连接、客户端发送请求、服务端响应、服务端关闭 TCP 连接,流程如下:

  1. 地址解析:通过域名系统 DNS 解析服务器域名从而获得主机的 IP 地址。例如客户端的浏览器请求:http://localhost.com:8080/index.html,则可从中分解出协议名、主名、端口、对象路径等
  2. 封装 HTTP 数据包:解析协议名、主机名、端口、对象路径等并结合本机自己信息封装成一个 HTTP 请求数据包
  3. 封装 TCP 包:将 HTTP 请求数据包进一步封装成 TCP 数据包
  4. 建立 TCP 连接:基于 TCP 的三次握手机制建立 TCP 连接
  5. 客户端发送请求:在建立连接后,客户端发送一个请求给服务端
  6. 服务端响应:服务端在接收到请求后,结合业务逻辑进行数据处理。然后向客户端返回相应的响应信息。在响应信息中包含状态行、协议版本号,成功或错误的代码、消息体等内容
  7. 服务端关闭 TCP 连接:服务端在向浏览器发送请求响应数据后关闭 TCP 连接。但如果浏览器或者服务端在消息头中加入了 Connection:keep-alive,则 TCP 连接在请求响响应数据发送后仍然保持连接状态,在下一次请求中浏览器可以继续使用相同的连接发送请求。采用 keep-alive 方式不但减少了请求响应的时间,还节约了网络带宽和系统资源
相关推荐
TE-茶叶蛋3 分钟前
Next.js中App Router 全部特殊文件一览
开发语言·javascript·网络
酉鬼女又兒1 小时前
零基础入门计算机网络:物理层核心知识全解——传输方式分类、编码调制原理与信道极限容量计算
网络·计算机网络·考研·职场和发展·分类·数据挖掘·php
程序猿阿伟1 小时前
《从TCP到WebSocket:Discord静默断流的七层排查指南》
websocket·网络协议·tcp/ip
Flash.kkl1 小时前
C++基于websocketpp的多用户网页五子棋项目
开发语言·网络·数据库·c++·websocket·mysql
10WTW011 小时前
计网实验 模拟器的配置与使用
网络·智能路由器
酉鬼女又兒1 小时前
零基础入门计算机网络物理层:核心概念、传输媒体、传输方式、编码调制与信道极限容量完整知识点总结
开发语言·网络·计算机网络·考研·职场和发展·php·信息与通信
开发者联盟league1 小时前
docker登录失败解决方法。http: server gave HTTP response to HTTPS client
http·docker·https
逆境不可逃1 小时前
【WebSocket 01】 入门原理剖析,手写群发消息、私聊会话功能
网络·websocket·网络协议
天一生水water1 小时前
agent教程S01-Agent 最小循环教程整理
java·服务器·网络·agent
网络与设备以及操作系统学习使用者1 小时前
多路由设备静态路由配置详解
运维·网络·学习·华为·智能路由器