http
-
是什么?
- 网络通信协议
- Hyper Text Transfer Protocol --> 超文本传输协议
- 可扩展
- 可扩展性表现在:传输内容,从起初的文本,到布局描述,图片,视频,脚本等等
- 另一层面的可扩展性:链接,可以是普通连接,也可以是加密连接
- 网络通信协议
-
作用:
- 用于 Web 浏览器与 Web 服务器之间的通信
-
特点:
-
典型的 客户端 - 服务端 模型
- client - server 协议 <客户端 - 服务端>
- 客户端打开一个链接以发出请求,然后等待直到收到服务器端响应
-
无状态协议
- 无状态不是指 服务端响应的状态码,是两次请求之间不保留任何数据
- 服务器不会在两个请求之间保留任何数据<状态>
-
http组件
- client - proxy - caches - server
- 客户端
- user-agent 就是任何能够为用户发起行为的工具,主要是指浏览器
- 发起请求 request
- Web服务端
- 响应请求 response
- 代理 Proxies
- 缓存 <公开的,私有的>
- 过滤 <反病毒扫描, 家长控制>
- 负载均衡 <让多个服务器服务不同请求>
- 认证 <对不同资源进行权限管理>
- 日志记录 <允许存储历史信息>
http的基本性质
- 简单的
- 报文易懂,允许简单测试
- 可扩展的
- http 1.0 中出现的 http headers 可设置,服务端和客户端 headers 一致,就可以扩展新功能
- 无状态,有会话
- 两次请求是无关联的,可以通过 http 头部扩展,把上一次请求信息以 cookie 添加到 http header 中,创建一个有状态的会话
- 每次 http 请求都会建立 TCP 连接<因此耗时,占带宽,浪费资源>
- http 1.1 可以设置 connection 把连接改为长连接,改变连接方式
- http 2.0 通过复用连接消息,改连接为暖连接
http 能控制什么
可以被HTTP控制的常见特性
- 缓存
- 可以通过 http 设置文档的缓存方式
- 服务端可以告知客户端缓存的文件,缓存的时长
- 客户端也可以命令中间代理层缓存的文档
- 认证
- 可以设置页面的访问权限
- 通过 http cookies 设置指定的会话
- 开放同源限制
- 代理和隧道
- 会话
http 流
前后端发起通讯<信息交互>的流程
- 打开 < 复用 > 一个TCP连接
- 发送一个 http 报文
- http 2 之前 ,报文是语义可读的
- http 2 报文被压缩,不能直接读取,但原理相同
- 读取服务端返回的报文信息
- 关闭连接,或者为后续服务重用连接
http 报文
不管是请求,还是响应,格式几乎一样
请求:
- method ----> GET
- path ----> /
- vsersion of the protocol ----> HTTP/1.1 <现在大部分 http 版本,都是 1.1>
- Headers ----> 其余的都是 Headers,请求头包裹的信息
响应:
- vsersion of the protocol ----> HTTP/1.1
- status code ----> 一般成功的请求都是 200
- status message ----> OK
- Headers ----> 其余的都是 Headers,响应头包裹的信息