1. HTTP 定义 : HyperText Transfer Protocol(超文本传输协议)
它是一种应用层协议,用于传输超媒体文档, 如 html. 在Web应用中, 浏览器和服务器之间数据的传输便是通过HTTP 协议进行交互。
2. HTTP client-server structure
HTTP 是一种 client-server 协议: 请求由客户端发起,服务器接收到请求后进行响应, 返回给客户端。这途中可能会经过多个间接的转发站,也就是所说的代理。
Client: the user-agent
The user-agent is any tool that acts on the behalf of the user. This role is primarily performed by the Web browser.
Proxies
代理处于客户端和服务器之间,对用户来说,通常是透明的。代理有如下的一些作用:
- 缓存
- 过滤 (对相关请求进行过滤)
- 负载均衡 (让多台服务器分担处理多种不同的请求)
- 权限认证 (控制不同资源的访问权限)
- 记录日志 (记录历史信息)
3. HTTP 特点
HTTP is stateless, but not sessionless
HTTP 是无状态的: 这意味着,在同一个连接中,前后两次请求是没联系的,独立的。但可通过设置 cookies 或是 session 来建立前后请求的会话,共享上下文。
例如,在网站登录中,某用户成功登录一次后,服务端应用可保存该用户的账号密码等信息存于session 中,并放在服务端缓存中,然后生成对应唯一的 sessionId,在响应报文中设置 HTTP headers 中 cookies 字段, 存入 sessionId. 在用户的下次请求中,服务端应用会读取 cookies 中 sessionId 对应的 session 信息,即可以使用户先前会话的上下文。
HTTP is connectionless
http/1.0 v.s. http/1.1 v.s. http/2.0
4. What can be controlled by HTTP
- Cache
- Relaxing the origin constraint
- Authentication
- Proxy and tunneling
- Sessions
5. APIs based on HTTP
- XMLHttpRequest: AJAX
- Fetch API
6. HTTP flow
8.Evolution of HTTP
HTTP/3 - HTTP over QUIC
The next major version of HTTP, HTTP/3, will use QUIC instead TCP/TLS for the transport layer portion.