HTTP协议基本格式

本文详细介绍了HTTP协议的概念,其工作过程,包括浏览器发送请求、服务器响应,以及如何使用抓包工具Fiddler观察HTTP请求/响应。重点讲解了协议格式,强调了空行在报文结构中的重要性,防止粘包问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、HTTP协议是什么

二、理解 HTTP 协议的工作过程

三、HTTP协议格式

3.1 抓包工具的使用

3.2 抓包结果


一、HTTP协议是什么

HTTP(全称“超文本传输协议”)是一种应用非常广泛的 应用层协议

HTTP协议往往是基于传输层TCP协议实现的,我们平时打开的网站都是通过HTTP协议来传输数据的。

二、理解 HTTP 协议的工作过程

当我们在浏览器中输入一个 "网址",此时浏览器就会给对应的服务器发送一个 HTTP 请求。对方服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。

事实上,当我们访问一个网站的时候,可能涉及不止一次的 HTTP 请求/响应 的交互过程。可以通过浏览器的开发者工具观察到这个详细的过程。

通过 F12 打开浏览器的开发者工具,切换到 Network 标签页。然后刷新页面即可看到如下图效果。每一条记录都是一次 HTTP 请求/响应

三、HTTP协议格式

3.1 抓包工具的使用

为了详细的观察HTTP协议格式,这里推荐使用抓包工具Fiddler来分析HTTP请求/响应的细节,在官网中进行下载。Fiddler官方下载地址 选择经典版(不收费的版本)下载完成之后一路next。

将Fiddler下载完成之后还需要配置一些工具,才能开始抓包,因为现在的浏览器大部分都是通过https进行传输的。

完成上述操作就可以直接开始抓包了,下面以搜狗网页为例展示抓包的结果(打开Fiddler,访问搜狗主页就可以自动抓包了)

如果页面的抓包过多影响观察,可以选择其中的一个然后ctrl+a选中全部的delete就行了

3.2 抓包结果

以下是搜狗HTTP 请求/响应 的抓包结果

  • 首行: [方法] + [url] + [版本]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; 

HTTP响应

  • 首行: [版本号] + [状态码] + [状态码解释]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中. 

协议格式总结

对于HTTP报文中存在 “空行”:这相当于是“报文的结束标记”,HTTP在传输层依赖TCP协议,TCP是面向字节流的,如果没有空行的话就会产生“粘包问题”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值