HTTP报文分析

86 阅读3分钟

协议分析

报文分析: 报文是客户端与服务端之间传输的通信数据。它遵循请求-响应模型。主要分为请求报文和响应报文。

请求报文

是由客户端(通常是浏览器) 向服务器发送请求。包含了 请求行,请求头部 空行 请求体(可选)

  • 请求行(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指定的类型来决定