三、HTTP 协议基础1.通过请求和响应的交换达成通信
应用 HTTP 协议时,必定是一端担任客户端角色,另一端担任服务器端角色 。仅从一条通信线路来说,服务器端和客服端的角色是确定的 。HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回 。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应 。
2.HTTP 是不保存状态的协议
HTTP 是一种无状态协议 。协议自身不对请求和响应之间的通信状态进行保存 。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理 。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的 。
可是随着 Web 的不断发展,我们的很多业务都需要对通信状态进行保存 。于是我们引入了 Cookie 技术 。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了 。
3.使用 Cookie 的状态管理
Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态 。Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存Cookie 。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去 。服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息 。

文章插图
Cookie 的流程
4.请求 URI 定位资源
HTTP 协议使用 URI 定位互联网上的资源 。正是因为 URI 的特定功能,在互联网上任意位置的资源都能访问到 。
5.告知服务器意图的 HTTP 方法(HTTP/1.1)

文章插图
HTTP 方法
6.持久连接
HTTP 协议的初始版本中,每进行一个 HTTP 通信都要断开一次 TCP 连接 。比如使用浏览器浏览一个包含多张图片的 html 页面时,在发送请求访问 HTML 页面资源的同时,也会请求该 HTML 页面里包含的其他资源 。因此,每次的请求都会造成无畏的 TCP 连接建立和断开,增加通信量的开销 。
为了解决上述 TCP 连接的问题,HTTP/1.1 和部分 HTTP/1.0 想出了持久连接的方法 。其特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态 。旨在建立一次 TCP 连接后进行多次请求和响应的交互 。在 HTTP/1.1 中,所有的连接默认都是持久连接 。
7.管线化
持久连接使得多数请求以管线化方式发送成为可能 。以前发送请求后需等待并接收到响应,才能发送下一个请求 。管线化技术出现后,不用等待亦可发送下一个请求 。这样就能做到同时并行发送多个请求,而不需要一个接一个地等待响应了 。
比如,当请求一个包含多张图片的 HTML 页面时,与挨个连接相比,用持久连接可以让请求更快结束 。而管线化技术要比持久连接速度更快 。请求数越多,时间差就越明显 。
四、HTTP 协议报文结构1.HTTP 报文
用于 HTTP 协议交互的信息被称为 HTTP 报文 。请求端(客户端)的 HTTP 报文叫做请求报文;响应端(服务器端)的叫做响应报文 。HTTP 报文本身是由多行(用 CR+LF 作换行符)数据构成的字符串文本 。
2.HTTP 报文结构
HTTP 报文大致可分为报文首部和报文主体两部分 。两者由最初出现的空行(CR+LF)来划分 。通常,并不一定有报文主体 。如下:

文章插图

文章插图
HTTP 报文结构
2.1请求报文结构

文章插图
请求报文结构
请求报文的首部内容由以下数据组成:
- 请求行 —— 包含用于请求的方法、请求 URI 和 HTTP 版本 。
- 首部字段 —— 包含表示请求的各种条件和属性的各类首部 。(通用首部、请求首部、实体首部以及RFC里未定义的首部如 Cookie 等)

文章插图
请求报文示例
2.2响应报文结构

文章插图
响应报文结构
响应报文的首部内容由以下数据组成:
推荐阅读
- 分析Spider抓取情况和SEO优化
- 关于meta标签中的http-equiv属性使用介绍
- 防辐射窗帘优缺点分析
- 日本茶道特性分析
- 祁门红茶的营养成分分析
- 无热胆饮水机优缺点分析
- 饮水机维修技巧分析
- 三种情” 数学学情分析
- 适用全网快递公司快递查询 手机号快递查询
- 首款利用DNS over HTTPS隐藏网络流量的恶意软件Godlua已经现身
