http协议
http协议的格式
HTTP请求报文
1
2
3
4
5
6
7
|
方法 URL 版本 \n\r (请求行)
首部字段名:值 \n\r
...
...
首部字段名:值 \n\r
\n\r
实体主体(通常不用)
|
- 方法:OPTION GET HEAD POST PUT DELETE TRACE CONNECT
- 请求例子
1
2
3
4
5
6
7
8
|
GET /gts1c3/aaa HTTP/1.1
Host: ocsp.pki.goog
X-Apple-Request-UUID: 111-222-333-444-99999
Accept: */*
User-Agent: com.apple.trustd/2.2
Accept-Language: zh-CN,zh-Hans;q=0.9
Accept-Encoding: gzip, deflate
Connection: keep-alive
|
HTTP返回报文
1
2
3
4
5
6
7
|
版本 状态码 短语\n\r (状态行)
首部字段名:值 \n\r
...
...
首部字段名:值 \n\r
\n\r
实体主体(有些报文不用)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
HTTP/1.1 200 OK
Server: ocsp_responder
Content-Length: 471
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Date: Fri, 22 Dec 2023 13:56:50 GMT
Cache-Control: public, max-age=14400
Content-Type: application/ocsp-response
Age: 1993
0...
......0.... +.....0......0...0.......t.......
n...i.q..6S...c....20231221122544Z....20231228112543Z0
. *.H..
.............M.19ZV..lT.x%..*.>.."w<.{.&...9.........f.,.....):.5....5%e........
.M..@.i...U l.....6
|
HTTP1.0
- HTTP1.0 是http协议的第二个版本,是第一个在通讯中定版本号的HTTP协议
- http1.0 浏览器与服务器只保持短暂的连接,每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后,立即断开TCP连接,服务器不跟踪每个客户,也不记录过去的请求。
- 每次与服务器交互,都需要新开一个连接。
- 性能上有缺陷。
- 如果要建立长连接,需要设置一个非标准的Connection字段
Connnection:keep-alive
HTTP1.1
- HTTP1.1中,默认支持长连接(
Connection:keep-alive
),即在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
- HTTP1.1允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器必须按照接收到客户端请求的先后顺序依次回送响应结果。
- HTTP1.1在HTTP1.0的基础上,增加了更多的请求头和响应头来完善功能:
- 引入了更多的缓存控制策略:if-Unmodified-Since,if-Match,if-None_-Match等缓存头来控制缓存策略。
- 引入range,允许值请求资源某个部分。
- 引入host,实现在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。
- 还添加了:put,delete,options等等请求方法。
HTTP2.0
HTTP2.0在之前版本的基础上性能有很大的提升,添加了特性:
参考: