代理和网关的区别?
代理转发请求,并且只能通过HTTP协议和服务器进行通信。 网关则可以通过非HTTP和服务器进行通信。
下图显示了一个通过HTTP/FTP网关请求某个FTP URI 的HTTP客户端。

记录 - 图1

网关 与代理类似,但它能使通信线路上的服务器提供非 HTTP 服务。能提高通信安全性,在客户端和网关之间进行加密,例如在 Web 购物网站进行信用卡结算时,通过网关和信用卡系统联动。

隧道 建立起一条与服务器的通信线路,使用 SSL 等加密手段进行通信。目的是确保客户端和服务端建立安全的通信,本身不解析 HTTP 请求。隧道在通信双方断开连接时结束。

no-cache 是不缓存过期的资源 缓存会向源服务器进行有效期确认后处理资源;no-store 才是真正地不进行缓存。

Accept-Encoding 优先的内容编码 Accept-Encoding: gzip, deflate 通知服务器用户代理支持的内容编码及优先级。通过 q= 来表示优先级。 编码主要由以下几种

  • gzip:由 GNU zip 程序生成的编码格式
  • compress:由 UNIX 文件压缩程序 compress 生成的编码格式
  • deflate:组合适用 zlib 及由 deflate 压缩算法生成的编码格式
  • identity:不执行压缩或不会变化的默认编码格式

Advent APX Internal Restful API

RESTful

RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。
目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,REST倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。
在服务器端,应用程序状态和功能可以分为各种资源。资源是一个概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POSTDELETE。资源表示通过超链接互联。

RESTFUL特点包括:
1、每一个URI代表1种资源;
2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的方法对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
3、通过操作资源的表现形式来操作资源;
4、资源的表现形式是XML或者HTML;
5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

问题:
DNS
Upgrade: websocket/3.0
Connection: Upgrade

传输层TCP游戏;

socket;
事件监听机制;
websocket
socketIO

127.0.0.1
OBS:推流,收流;

持久化连接? 怎么知道最后一个连接?
服务端可以设置TCP连接的有效时间,服务端发现TCP闲置一段时间后,可以回收掉。
HTTP1.0 用Connection: Keep-alive来维持持久化连接。
HTTP1.1 默认所有的连接都是持久化连接,但是大部分的浏览器还是会带上connection这个
首部字段,如果想要明确表明是短连接,可以设置用Connection:close;

管线化: get,head支持,post不应该被管线化;是对HTTP1.1协议下,服务器不能很好处理并行请求的一个改进。

六、补充
(1)HTTP/方法的幂等性:是指一次和多次请求某一个资源应该具有同样的副作用。幂等性的请求,实际上就是多次操作都不会改变结果的请求,比如GET,我可以多次从同一个地方获取资源,但是对于资源本身来说并不会发生什么变化,我GET10次和GET100次,资源都没有发生任何变化。而Post则不同了,我提交表单10次,和100次,造成的结果是不同的,至少数据库里新增的数据有不同。
(2)其实HTTP管线化就是将客户端的FIFO队列移到了服务端。在客户端可以依次发送所有要发送的请求(当然这些请求是在同一个域下的),一个请求发送完之后,不必等待这个请求的响应被接受到,下一个请求就可以被再次发出。在服务器端维持的FIFO队列,这个队列是按照资源的重要程度排列的。比如HTML比CSS要先返回,JS,CSS比图片先返回。在服务器端会有一个缓冲区,来存放那些已经被处理好了但是还没轮到被发送的响应。比如服务器先后收到了A,B两个请求,A资源比B资源优先级要高,处理A需要10ms,处理B需要1ms,假设服务器可以并行处理请求,那么B的响应肯定是最先处理好了的,但是B响应不能先发出去,必须待在缓冲区里,等待A响应处理好了之后,先把A的响应发出去,B的响应才能够被发出去。因为服务端必须要遵循FIFO这个原则。
(3)HTTP管线化不是HTTP2的内容,是对HTTP1.1协议下,服务器不能很好处理并行请求的一个改进。

2020.7.1 - 52页
3.3.3 分割发送的分块传输编码