
第二章:简单的HTTP协议
2.1 HTTP协议用于客户端和服务器端的通信
2.2 通过请求和响应的交换达成通信


- 请求方法
- 请求URI
- 协议版本
- 可选的请求首部字段
- 内容实体
- 协议版本
- 状态码(200,500,301,404)
- 状态码解析语句
- 可选的响应首部字段
- 响应主体
2.3 HTTP是无状态协议
- HTTP协议自身不对请求和响应之间的通信状态进行保存
- 优点:
更快的处理大量事务,确保协议的可伸缩性。协议本身并不保留之前一切的请求和响应报文信息
无状态协议导致在很多业务场景下不能友好支持业务处理,登录状态、聊天室通信、直播平台等
- HTTP1.1虽然还是无状态协议,但为了保持状态引入了cookie
- 第三方异步通信框架,支持TCP长连接,如PHP的Swoole,Java的netty,底层C,C++等方式
2.4 请求URI定位资源

2.5 告知服务器意图的HTTP方法
- HTTP1.1 中可使用的方法
- GET 获取资源
- POST 传输实体主体
- PUT 传输文本,类似FTP文本上传
- HEAD 获取报文头部信息
- DELETE 删除文件
- OPTIONS 询问支持的方法
- TRACE 追踪路径

2.6 持久连接 节省通讯量
- 持久连接特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态
- 在HTTP1.1中,所有的连接默认都是持久连接
- 优点:
- 减少了TCP连接的重复建立和断开造成的额外开销,减轻了服务器的负载
- 可实现异步通信
2.7 使用cookie的状态管理



- 概念:cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态
- 步骤:
- cookie会根据从服务器端发送的响应报文的Set-Cookie首部字段信息,通知客户端保存cookie。
- 当下次客户端再次发送请求,自动在请求报文中添加cookie
- 服务器端接收cookie值,检查从哪个客户端发送的请求,并对比服务器端session信息,最后得到之前状态信息
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。