前言:本文将简单介绍一下http协议.同时也借助抓包工具wireshark来对HTTP数据简单分析
一,认识http协议
http协议也叫超文本传输协议,是TCP/IP五层模型中的应用层协议,起到重要的作用
(一)为什么需要http协议
http协议是在TCP/UDP协议之上,再次做了一层加工处理.我们知道,IP地址和端口号是网络通信的重要因素,如果把通信的过程比作快递员送货,那么http协议就是对于收到的货进行再次处理,
只不过由于http是应用层协议,他的所有处理都是基于上一层的TCP协议层来完成的

(二)http协议的工作模式
http协议也遵循客户端 - 服务器这样的模型,也自然包括了请求 和响应这两个基本通信流程
http协议目前广泛运用在Web浏览器和服务器中,但我们在浏览器中输入一个网址,相当于发起一个请求,在这个请求中包含的一些信息,就是在向服务器索要数据.
对应的服务器接收到发来的请求时,需要进行一定的处理逻辑,然后把返回的数据按照一定 HTML 文件、JSON 数据或图片)连同状态信息一起返回给客户端。
(三)具体作用
我们知道,协议的本质就是通信双方的一种约定,http协议也是一种约定规则.
只不过约定的内容是传输的数据的格式,和通信传输数据的规则,
这套规则有以下几点作用:
- 1.规定通信格式
大家都按同一套格式发请求、回响应,不然谁也看不懂谁。 - 2.实现资源请求
你想看网页、发接口、传图片、登录、提交表单,本质都是:- 客户端:我要 ×× 资源
- 服务器:好,给你 ×× 资源 / 我没有 / 你没权限
- 3.基于请求 - 响应模型
- 客户端先发请求(Request)
- 服务器后给响应(Response)
一次请求对应一次响应。
二,http的核心特点
(一)无连接
-
核心概念: 限制每次连接只处理一个请求。在早期的 HTTP 协议中,服务器处理完客户端的请求并给出响应后,就会立即断开 TCP 连接。
这一点并不像之前的TCP 服务器那里,服务器一经启动就源源不断的接收客户端请求,只有客户端主动下线才能断开连接
无连接的这一点好像打电话,对方(服务器)说一句话就挂断,对方想要继续沟通就需要重新拨号沟通建立连接

-
优缺点: 初衷是为了尽快释放资源 ,提高服务器的并发处理能力。但随着网页变得复杂(包含大量图片、CSS、JS等),频繁地建立和断开 TCP 连接(三次握手、四次挥手)会产生巨大的网络延迟和性能开销。
-
演进: 从 HTTP/1.1 开始,默认开启了长连接(
Connection: keep-alive),允许在一个 TCP 连接上发送和接收多个 HTTP 请求/响应。这算是对"无连接"特性的妥协与优化,但协议本身依然不是一种像 WebSocket 那样的持续数据流连接。
(二)无状态
-
核心概念: 协议对事务处理没有任何"记忆能力"。对于服务器而言,每一次请求都是各自独立的,服务器不知道请求之间是否来自同一个用户。
就好比你外卖点餐,分别点了两次,但是商家无法判断这两份订单都是你的,
于是就用两个快递员来负责派送,就会消耗了更多的包装以及时间
-
优缺点: 优点是服务器不需要分配额外的资源来记录请求状态,架构更简单,非常利于服务器集群的扩展和负载均衡。缺点是无法支持连续的业务交互,如果后续请求需要用到前面的数据,就必须将数据全部重传,增加了报文体积。
-
解决方案: 为了在"无状态"的协议上实现"有状态"的业务(比如保持登录状态、实现购物车等),业界引入了 Cookie 、Session 以及 Token 等机制来帮助服务器识别用户身份。就好比商家后台看到这段时间内你这个地址和电话号码连续发送了多个订单,就把这些订单合并,使用一个快递员来派送,可提高了效率
(三)基于文本
-
核心概念: 传统的 HTTP(指 HTTP/1.1 及之前版本)报文头部是由纯文本(主要是 ASCII 字符)组成的,人类可以直接阅读其中的请求行、状态行和首部字段。
这里我们使用抓包工具来分析一个HTTP的数据包,

可以清晰的阅读请求行以及相关的信息,至于这些信息包含什么含义,在后面的分析HTTP报文结构中会涉及
-
优缺点: 最大的优点是可读性极强,对开发者非常友好,抓包后一眼就能看懂请求内容,极其方便调试。缺点是相比于二进制协议,文本解析的效率较低,且占用带宽稍大。
-
演进: 为了提升性能,HTTP/2 彻底改变了这一点,引入了"二进制分帧层",将文本形式的 HTTP 消息转化为二进制格式,大大提升了计算机解析的效率。
(四)默认明文
-
核心概念: HTTP 协议在网络中传递数据时,默认是不进行任何加密的,信息以"裸奔"的状态在客户端和服务器之间传输。

-
优缺点: 优点是简单高效,不需要消耗 CPU 进行复杂的加解密计算。缺点则是存在严重的安全隐患,极其容易被中间人"窃听"(比如盗取账号密码)、"篡改"(比如在网页中插入恶意广告)或"伪装"。
-
解决方案: 现代互联网已经全面普及了 HTTPS(HTTP over SSL/TLS)。它在 HTTP 和传输层之间加入了一个安全层,实现了数据的加密传输、防篡改和身份认证。