HTTP解决了什么问题
解决 WWW 信息交互必须面对的需求:
低门槛
可扩展性:巨大的用户群体,超长的寿命
分布式系统下的 Hypermedia:大粒度数据的网络传输
Internet 规模
无法控制的 scalability
不可预测的负载、非法格式的数据、恶意消息
客户端不能保持所有服务器信息,服务器不能保持多个请求间的状态信息
独立的组件部署:新老组件并存
向前兼容:自 1993 年起 HTTP0.9\1.0(1996)已经被广泛使用
浏览器发起HTTP请求的典型场景与ABNF定义HTTP协议格式
一种无状态的、应用层的、以请求/应答方式运行的协议,使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动。
HTTP的协议格式
ABNF(扩充巴科斯-瑙尔范式)操作符
ABNF的核心规则
基于ABNF描述的HTTP协议格式 + 具体实例
网络分层:OSI模型与TCP/IP模型
OSI模型与TCP模型的对照
在不同层之间的报文头部封装
注意一下在图中表明的各层的报文分别叫什么名字。
评估Web架构的关键属性
HTTP 协议应当在以下属性中取得可接受的均衡:
- 性能 Performance:影响高可用的关键因素
- 可伸缩性 Scalability:支持部署可以互相交互的大量组件
- 简单性 Simplicity:易理解、易实现、易验证
- 可见性 Visiable:对两个组件间的交互进行监视或者仲裁的能力。如缓存、分层设计等
- 可移植性 Portability:在不同的环境下运行的能力
- 可靠性 Reliability:出现部分故障时,对整体影响的程度
- 可修改性 Modifiability:对系统作出修改的难易程度,由可进化性、可定制性、可扩展性、可配置性、可重用性构成
从五种架构风格推导出HTTP的REST架构