协议分析
报文分析: 报文是客户端与服务端之间传输的通信数据。它遵循请求-响应模型。主要分为请求报文和响应报文。
请求报文
是由客户端(通常是浏览器) 向服务器发送请求。包含了 请求行,请求头部 空行 请求体(可选)
- 请求行(Request Line)包含三个主要部分:
请求方法(Request Method):表示客户端对资源执行的操作,比如GET,POST等
请求URL(Request-URI):表示要访问的资源路径或URL
HTTP版本(HTTP Version):表示所使用的HTTP协议版本 比如 HTTP/1.1 or HTTP/2
- 请求头部(Request Headers)
请求头部是由一系列键值对组成,提供了客户端,请求以及可接受的响应格式等的元数据。常见有:
Host:指定请求的服务器域名,通常与请求的URL中的主机部分一致
User-Agent:告诉服务器请求者的浏览器和操作系统信息
Accept:告诉服务器客户端可以接受哪些类型的响应数据 例如 text/html application/json
Accept-Language:指定客户端能接受的语言
Accept-Encoding:指定客户端支持的压缩编码格式 例如 gzip deflate
Connection:指示是否保持连接 例如 keep-alive 表示保持连接,close表示关闭连接
Cookie:客户端发送的Cookie数据,用于会话保持
- 空行(Blank Line)
请求头和请求体之间必须有一个空行,用于分隔头部和体
- 请求体(Request Body)
请求体包含了发给服务器的实际数据,通常用于POST ,PUT 等方法。对于GET请求,通常没有请求体。常见的请求体内容包括表单数据(application/x-www-form-urlencoded),JSON(application/json)数据等
响应报文
是服务器返回客户端的消息,包含服务器处理的结果。状态行 响应头部 空行 响应体
- 状态行(Status Line)包含三个主要部分:
HTTP版本 :服务器使用的HTTP协议版本
状态码:表示服务器处理请求的结果 例如 200 404 405 等
状态描述:对于状态码的简短描述,用来帮助理解状态码的意义 例如 200 它用 OK 来标识
- 响应头部(Response Headers)
响应头部包含了与响应相关的元数据,包含服务器信息,缓存策略等。常见有:
Content-Type: 响应体的媒体类型 例如 text/html applicaiton/json
Content-Length:响应体的大小,以字节为单位
Date:响应报文的发送时间
Server:表示处理请求的服务器软件信息 例如 Apache/2.4.1
Location:在重定向响应中,指示客户端应该去的新的URL 常用于 301 Moved Permanetly or 302 Found
Cache-Control:控制缓存行为的指令。
Set-Cookie:服务器返回给客户端的Cookie数据
- 空行(Blank Line)
响应头和响应体之间必须有一个空行,用于分隔头部和体
- 响应体(Response Body)
响应体包含服务器返回的实际数据,是客户端请求的资源内容。响应体的内容由 Content-Type指定的类型来决定