HTTP 协议基础
HTTP(HyperText Transfer Protocol)是互联网中客户端与服务器通信的核心协议。它本质上是无连接、无状态的,这意味着每次请求都是独立的,服务端不会主动发起请求给客户端。为了维持会话状态(比如登录信息),我们需要借助 Session 和 Cookie 机制。
工作流程
当我们在浏览器输入网址时,浏览器作为客户端主动向服务器发送 HTTP 请求,服务器接收并处理后返回响应。这个过程可以简单理解为:
- 客户端:主动发起请求的一方。
- 服务端:被动接收请求并返回数据的一方。
- 请求:客户端发送给服务端的数据包。
- 响应:服务端返回给客户端的数据包。

协议格式解析
理解了基本概念后,我们来看看具体的报文结构。HTTP 报文由文本组成,元素之间用空格和换行符分隔,这有助于解析器区分不同部分。
请求格式
一个典型的 HTTP 请求包含以下部分:

主要包括请求行、请求头、空行以及请求体。其中请求行定义了方法、URL 和协议版本。
响应格式
响应报文的结构类似,但头部信息有所不同:

包含协议版本、状态码、状态描述、响应头和响应体。
请求细节深入
URL 统一资源定位符
URL 是我们访问资源的唯一标识。以 http://www.example.com:8080/product/list?category=book&page=1#top 为例,我们可以拆解它的组成部分:
http://www.example.com:8080/product/list?category=book&page=1#top
- 协议:
http,规定获取资源的方式,还有https、ftp等。 - 主机名:
www.example.com,相当于门牌号,DNS 解析后可得到 IP。 - 端口号:
:8080,指定服务监听的端口。 - 路径:
/product/list,根目录下的具体资源位置。 - 查询参数:
?category=book&page=1,由?引导,参数间用&分隔。



