1.请求报文与响应报文
1-1 请求报文
- 请求行(请求方法、URI、协议版本)
- 可选的请求首部字段
- 内容实体
// 请求行
POST /form/entry HTTP/1.1
// 可选的首部字段
Host: hackr.jp
Connction: keep-alive
Content-Type: application/x-www-form-urlencoded
// 内容实体
name=ueno&age=18
1-2 响应报文
- 响应行(协议版本、状态码、状态码原因短语)
- 响应首部字段
- 主体
//响应行
HTTP/1.1 200 OK
//响应首部字段
Date: True, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html
// 主体
<html>
...
2.HTTP 是不保存状态的协议
- HTTP协议自身不对请求和响应之间的通信状态进行保存
- 即协议对于发送过的请求和响应都不做持久化处理
- 可以使用cookie实现保持状态功能
3.告知服务器意图HTTP方法
- GET: 获取获取
- POST: 传输实体主体
- PUT: 传输文件
- DELETE: 删除文件
- TRACE: 追踪路径
- CONNECT: 要求用隧道协议连接代理
- CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。
- 主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输安全层)协议把通信内容加密后经网络隧道传输。
4.持久连接节省通信量
- 持久连接
- 管线化
为什么需要持久连接?
- HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接
- 在浏览一个包含多张图片的HTML页面时,也会请求页面包含的其它资源(例如图片),每次的请求都会造成无畏的TCP连接建立和断开,增加通信量的开销。
4-1 持久化连接
- 特点:只要任意一段没有明确提出断开连接,则保持TCP连接状态
- 好处:减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载
4-2 管线化
- 持久连接使得多数请求以管线化方式发送成为可能
- 从前发送请求后需等待并收到响应,才能发送下一个;管线化后不用等待响应亦可直接发送下一个请求(并行请求)