Sockets HTTP/1.1、webSocket和HTTP/2.0对套接字的分析

Sockets HTTP/1.1、webSocket和HTTP/2.0对套接字的分析,sockets,http,websocket,Sockets,Http,Websocket,我需要知道HTTP/1.1、webSocket和HTTP/2.0在套接字方面是如何工作的(我对这三种技术之间的不同特性列表不感兴趣) 因此,当我启动HTTP/1.1请求时,我知道在服务器响应之后,我的连接将被关闭。 但是,让我说,当我启动HTTP/1.1时。请求,在传输层级别,套接字将被序列化以将我的HTTP请求(头和数据)发送到Web服务器 所以我有三个问题: 如果HTTP/1.1实现了一个套接字(从我的pc和Web服务器打开)来发送它的请求,为什么它不能使用该套接字来实现越来越多的请求-响应

我需要知道HTTP/1.1、webSocket和HTTP/2.0在套接字方面是如何工作的(我对这三种技术之间的不同特性列表不感兴趣)

因此,当我启动HTTP/1.1请求时,我知道在服务器响应之后,我的连接将被关闭。 但是,让我说,当我启动HTTP/1.1时。请求,在传输层级别,套接字将被序列化以将我的HTTP请求(头和数据)发送到Web服务器

所以我有三个问题:

  • 如果HTTP/1.1实现了一个套接字(从我的pc和Web服务器打开)来发送它的请求,为什么它不能使用该套接字来实现越来越多的请求-响应周期

  • HTTP/1.1和webSocket之间的主要区别是HTTP/1.1在第一个请求-响应周期后关闭套接字,而webSocket在第一个周期后不关闭套接字吗

  • HTTP/2.0如何管理客户端和服务器之间的套接字


  • 提前感谢。

    要回答您的问题:

  • 实际上,HTTP/1.1通过使用“保持活动”特性,允许连接用于多个请求

    这意味着可以通过单个TCP/IP连接发送多个HTTP/1.1请求

    但是,由于HTTP/1.1不允许多路复用,请求(和响应)被序列化,这可能会由于严格的队列而导致更长的请求/响应延迟更短的请求/响应

    仅供参考:关闭连接是一种HTTP/1方法,其中响应的结束将由套接字关闭标记。在HTTP/1.1上,响应的结尾通常由“Content Length”头(或分块编码标记)知道

  • 不,差别要大得多。WebSocket协议不是一个请求-响应协议,它是一个基于消息的协议,这是一个完全不同的beast

    实际上,您可以认为WebSocket与TCP/IP比HTTP更相似,只是TCP/IP是一种流协议,WebSocket是一种基于消息的协议

    WebSockets协议承诺消息不会碎片化,而TCP/IP
    read
    调用可能返回消息片段(或多条消息)

  • HTTP/2.0使用单个连接,但它有一个二进制消息包装层,允许服务器和客户端进行多路复用(使用单个连接管理多个信息流)

    这意味着请求-响应队列是并行的(而不是HTTP/1.1串行队列)。例如,对请求#2的响应可能在对请求#1的响应之前到达

    这解决了HTTP/1.1中的“管道”和消息排序问题,其中长的请求/响应周期可能会导致所有其他请求“等待”

    还有其他属性和差异,但在某些方面,这可能是主要的(除了其他性能因素,如报头压缩、二进制数据格式等)


  • 当您启动HTTP/1.1请求时,您知道响应后连接将保持活动状态,除非您另有请求。你的问题基于一个错误的前提。