HTTP/1.1深入学习(一)

HTTP解决了什么问题

image-20220216145214793

解决 WWW 信息交互必须面对的需求:

  • 低门槛

  • 可扩展性:巨大的用户群体,超长的寿命

  • 分布式系统下的 Hypermedia:大粒度数据的网络传输

  • Internet 规模

    • 无法控制的 scalability

      • 不可预测的负载、非法格式的数据、恶意消息

      • 客户端不能保持所有服务器信息,服务器不能保持多个请求间的状态信息

        独立的组件部署:新老组件并存

        向前兼容:自 1993 年起 HTTP0.9\1.0(1996)已经被广泛使用

image-20220216145500667

浏览器发起HTTP请求的典型场景与ABNF定义HTTP协议格式

image-20220216143022772

image-20220216143059824

image-20220216143217688

一种无状态的、应用层的、以请求/应答方式运行的协议,使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动。

HTTP的协议格式

image-20220216143444135

ABNF(扩充巴科斯-瑙尔范式)操作符

image-20220216143600821

ABNF的核心规则

image-20220216143608965

基于ABNF描述的HTTP协议格式 + 具体实例

image-20220216143758587

image-20220216143824981

网络分层:OSI模型与TCP/IP模型

image-20220216144746312

OSI模型与TCP模型的对照

image-20220216144826027

在不同层之间的报文头部封装

image-20220216144956500

注意一下在图中表明的各层的报文分别叫什么名字。

评估Web架构的关键属性

HTTP 协议应当在以下属性中取得可接受的均衡:

  • 性能 Performance:影响高可用的关键因素
  • 可伸缩性 Scalability:支持部署可以互相交互的大量组件
  • 简单性 Simplicity:易理解、易实现、易验证
  • 可见性 Visiable:对两个组件间的交互进行监视或者仲裁的能力。如缓存、分层设计等
  • 可移植性 Portability:在不同的环境下运行的能力
  • 可靠性 Reliability:出现部分故障时,对整体影响的程度
  • 可修改性 Modifiability:对系统作出修改的难易程度,由可进化性、可定制性、可扩展性、可配置性、可重用性构成

image-20220216154311688

image-20220216154333582

image-20220216154407111

从五种架构风格推导出HTTP的REST架构

image-20220216154624220

数据流风格 Data-flow Styles

image-20220216154806375

image-20220216154827521

复制风格

image-20220216155000320

image-20220216155007623

分层风格

image-20220216155144846

image-20220216155211840

image-20220216155244132

image-20220216155251415

移动代码风格 Mobile Code Styles

image-20220216155401997

image-20220216155440972

点对点风格

image-20220216155509897

image-20220216155556884

不同风格之间的演化

image-20220216155625246

谢谢你的支持哦,继续加油.