http报文结构分析

http协议请求包结构分析

请求报文的结构:
方法  URL 版本 
字段名: 值
字段名: 值

请求消息主体

1.请求报文中方法的介绍:
GET  请求获取一个Web页面
POST 主要作用是执行操作,比如向服务器提交一个表单
DELETE  请求删除一个Web界面
MOVE 请求移动某个页面到指定位置
HEAD 与GET方法类似区别在于获取Web页面首部,不获取主体
           也就是说只获得一个页面的Head部分,而不获得BODY主体
PUT 请求向服务器上传指定资源。
TRACE  用于测试,要求服务器返回收到的请求
OPTION请求服务器支持哪些方法

2.请求消息头
字段名               说明
Host         消息头用于指定出现在被访问的完整URL中的主机名称  (被访问的完整URL主机名,也就是目的地址)
User-Agent   这个消息头用于提供与浏览器或生成请求的客户端软件有关的消息
Accept  这个消息头用于告诉服务器客户端接收那些内容,如图片类型,办公文档格式等
Accept-Language 用于声明服务器,浏览器支持哪些语言
Accept-Encoding 这个消息头用于告诉服务器 客户端接受那些内容编码
Referer  这个消息头用于指示提出当前请求的原始URL
Cookie
Connection  通知通信的另一方,是否在完成HTTP传输后关闭TCP连接


二、响应报文的结构
响应报文结构图标


版本 状态码 短语
字段名: 值
字段名: 值

响应消息主体


1.有关状态码的介绍
状态码是响应报文状态行中包含的一个三位数字  指明请求是否被满足,如果没有被满足,原因是什么,状态码可以分为以下五大类

状态码         含义                          例子
1XX        表示请求已被接收,继续处理            100:服务器正在处理客户请求
2XX        表示请求已被成功接收,理解,接受          200:请求成功
3XX        客户端被重定向到其他资源                301:表示本网页永久性跳转到另一个地址
                                                                       302:重定向,浏览器自动跳转到新连接
                                                                       304:上次文档已经缓存,还可以继续使用
4XX         请求有语法错误或请求无法实现         400:请求有语法错误
                                                                        403:拒绝提供服务
                                                                        404:请求资源不存在
5XX          服务器执行请求时遇到错误。            500:服务器错误
                                                                        503:服务器不能处理,请稍后再试

2.响应头部字段说明
date     响应返回的时间,GMT代表格林威治时间(北京位于东八区,所以北京时间要加8小时)
server   这个消息头提供所使用的Web服务器软件的相关信息
set-Cookie  这个消息头用于向浏览器发布Cookie,浏览器会在随后的请求中将其返回给服务器
Content-type  这个消息头用于规定消息主题的内容类型 例如html文档的类型为:text/html,
Content-Length  这个消息头用于规定消息主体的字节长度
Connection  通知通信的另一方,是否在完成HTTP传输后关闭TCP连接


<think>嗯,用户想了解Wireshark中的HTTP报文结构,我需要详细解释一下。首先,我应该从Wireshark的基本功能开始,说明它是如何捕获和分析网络数据包的。接着,重点放在HTTP协议的结构上,可能需要分请求和响应两部分来讲解。 用户可能已经对HTTP有基本了解,但需要知道在Wireshark中具体如何查看和解析这些报文。所以,我应该详细描述每个部分在Wireshark中的显示方式,比如Frame、Ethernet、IP、TCP这些底层协议层,然后才是HTTP层。要指出HTTP报文的位置,以及各个字段的含义,比如请求行、状态行、头部字段和消息体。 另外,用户可能对实际应用场景感兴趣,比如调试或安全分析,所以可以举一些例子,比如查看GET请求的具体内容,或者分析POST请求的数据。还需要提醒用户注意HTTPS的情况,因为Wireshark默认无法解密HTTPS流量,可能需要配置SSL密钥。 要确保结构清晰,分步骤讲解,可能用编号列表来组织内容。同时,注意使用正确的术语,但保持语言通俗易懂。最后,检查是否符合用户提供的系统级指令,比如数学公式的格式,但这个问题可能不涉及太多数学内容,不过如果有变量或协议中的数值,可能需要用$符号包裹。</think>以下是Wireshark中HTTP报文结构的逐步解析: --- ### **1. Wireshark基础定位** - Wireshark通过抓取网络接口流量,将HTTP报文封装在TCP/IP协议栈中显示 - 过滤语句:`http` 或 `http.request.method == "GET"` --- ### **2. HTTP报文分层结构** 在Wireshark中按协议栈分层展开: ```text Frame (物理层帧信息) ├─ Ethernet II (数据链路层) ├─ Internet Protocol Version 4 (网络层) ├─ Transmission Control Protocol (传输层) └─ Hypertext Transfer Protocol (应用层) <-- 重点分析层 ``` --- ### **3. HTTP请求报文结构** **示例抓包:** ``` GET /index.html HTTP/1.1\r\n Host: www.example.com\r\n User-Agent: Mozilla/5.0\r\n Accept: text/html\r\n \r\n ``` **Wireshark解析字段:** 1. **请求行** - `Request Method: GET` - `Request URI: /index.html` - `Request Version: HTTP/1.1` 2. **头部字段** - 键值对结构,如: - `Host: www.example.com`(虚拟主机标识) - `User-Agent: Mozilla/5.0`(客户端信息) - `Content-Type`(POST请求特有) 3. **空行** - `\r\n\r\n` 标识头结束 4. **消息体** - POST/PUT请求包含数据,如:`username=test&password=123` --- ### **4. HTTP响应报文结构** **示例抓包:** ``` HTTP/1.1 200 OK\r\n Content-Type: text/html\r\n Content-Length: 1354\r\n \r\n <!DOCTYPE html>... ``` **Wireshark解析字段:** 1. **状态行** - `Status Code: 200` - `Response Phrase: OK` - `Version: HTTP/1.1` 2. **头部字段** - 关键字段: - `Content-Length: 1354`(实体大小) - `Set-Cookie`(会话控制) - `Location`(重定向时出现) 3. **空行** - 同请求报文 4. **消息体** - HTML文档/JSON数据等实际内容 --- ### **5. 特殊场景分析** - **分块传输**:出现`Transfer-Encoding: chunked`时,消息体以十六进制长度分段 - **持久连接**:`Connection: keep-alive`表示TCP连接复用 - **HTTPS解密**:需导入服务器私钥解密TLS层(Edit > Preferences > Protocols > TLS) --- ### **6. 关键过滤技巧** | 过滤表达式 | 作用 | |---------------------------|--------------------------| | `http.request` | 过滤所有HTTP请求 | | `http.response` | 过滤所有HTTP响应 | | `http.host contains "api"`| 抓取特定域名的通信 | | `http.content_type == "application/json"` | 定位JSON数据交互 | --- ### **7. 典型故障排查点** 1. 检查状态码: - `4xx`:客户端错误(如404资源不存在) - `5xx`:服务端错误(如502网关故障) 2. 关注时延指标: - `Time since request`:请求响应时间 - `Time since previous frame`:数据包间隔时间 3. 验证数据完整性: - 对比`Content-Length`与实际消息体字节数 - 检查分块传输的结束标记`0\r\n\r\n` 建议结合Statistics > HTTP > Packet Counter功能进行全局分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值