• 数据交换方式

分为电路交换与分组交换
电路交换是指在通信时建立一条专用的物理连接,该连接将一直保持开放,直到通信结束。在此过程中,通信双方可以实时地交换信息,就好像它们直接连接在一起一样。传统的电话通信就是一个很好的例子。在电路交换中,通信资源一直被占用,因此当通信量很大时,电路交换可能会变得不太有效。

分组交换是指将数据分割成较小的数据包(称为分组),并在网络上通过路由器和交换机等设备进行传输。每个数据包包含发送和接收的地址信息,以确保它们最终到达正确的目的地。分组交换的优点是可以有效地利用通信资源,因为每个数据包只需要在传输时占用网络资源的一小部分。此外,它还可以允许多个用户同时共享网络资源。Internet是使用分组交换技术的典型例子。

  • 协议

协议的存在依赖于连接。当两个或多个实体相互连接,拥有发送数据的需求时,便需要协议来确定交换报文(就是数据)的格式和顺序,以及一些动作。

  • http

1.队头堵塞

要理解队头堵塞,首先要认识到这一特性是由于http的无状态性和串行性导致的。所谓无状态性,指的是http这一协议不负责记录连接的状态,也就是每一个请求的状态都不会被http记录在案,导致请求与回应是相互独立的。所谓串行性,是指请求与响应按照特定顺序进行。正是这些特性导致若是某一个请求遭遇堵塞,后面的请求不论是否准备好与否,都必须等待,直到这个请求通过。

HTTP队头阻塞会导致网络性能下降,因为它会使客户端与服务器之间的通信延迟增加。为了避免HTTP队头阻塞,可以采取以下措施

  1. 使用HTTP/2或HTTP/3协议,它们支持多路复用,可以在一个连接上同时进行多个请求和响应,减少HTTP队头阻塞的影响。
  2. 对于长时间运行的请求或响应,可以使用分块传输编码(chunked encoding)将其分成多个小块进行传输,这样可以让其他请求或响应先行传输。
  3. 减少请求和响应的大小,尽可能缩短请求和响应的传输时间,从而减少HTTP队头阻塞的影响。

tip: http1.1是无法多路复用的。

2.http2的帧

帧实际上是将原先http1.x的文本级别的消息变成现在比特级别的消息,如此有以下一些优点

  • 采用了多路复用的技术,一个连接可以传送多个http请求和响应,而每个请求与响应是通过流来进行的,流有独特的ID,互相独立,一个流可以包含多个帧。

  • 客户端和服务器通过流ID和帧类型来区分不同的帧,因此可以同时发送和接收多个帧,并发传输,提高了网络带宽的利用程度,提高了网络传输效率。

  • 相比文本内容,不容易被篡改,更加安全。

  • 会进行头部压缩,更加高效。(头部消息由字段和值构成,会在多个帧出现,压缩有利于传播)

  • 在HTTP/2协议中,每个流都有一个权重(Weight)和一个依赖关系(Dependency)。权重用于定义该流在所有并发流中的相对优先级,依赖关系用于定义该流依赖于哪个流,也就是该流应该在哪个流的帧之后进行传输。
    HTTP/2协议中的帧可以通过调整帧的流ID、权重和依赖关系来调整帧的优先级,从而影响响应消息的传输顺序。比如,如果一个流的优先级很高,那么在传输响应消息时,该流的帧会被优先传输,从而减少用户等待时间,提高用户体验。
    通过调整帧的优先级,HTTP/2协议可以更加有效地利用网络带宽,提高网络传输效率。同时,优先级机制还可以防止低优先级的帧过多占用网络资源,影响高优先级帧的传输,从而提高了网络传输的公平性。

  • 有server push,即客户端向服务器发送请求后,服务端会主动给客户端发送一些可能需要的数据,以提高用户体验和页面加载速度。

  • HTTP/2协议中的队头阻塞问题主要是由于TCP协议的拥塞控制机制导致的。

在TCP协议中,拥塞控制是用来防止网络拥塞的一种机制,它可以根据网络拥塞程度来调整数据传输速率,以保证网络的可靠性和公平性。在HTTP/2协议中,由于多个HTTP请求共用同一个TCP连接,如果其中一个请求阻塞,就会影响其他请求的传输,导致队头阻塞问题。

具体来说,当HTTP/2协议中的一个请求的某个帧被阻塞时,后续的帧就无法发送,这会导致其他请求的帧也无法发送,从而形成了队头阻塞的问题。因为TCP协议的拥塞控制机制会认为网络发生了拥塞,从而触发拥塞控制算法,导致数据传输速率降低,进一步影响其他请求的传输速度。

解决办法:

  1. 使用多个TCP连接,每个连接只处理一个请求,这样就可以避免多个请求共用同一个TCP连接导致的队头阻塞问题。
  2. 使用流优先级,对请求进行优先级排序,高优先级的请求先进行处理,从而减少队头阻塞的影响。
  3. 使用帧优先级,对帧进行优先级排序,高优先级的帧先进行传输,从而减少队头阻塞的影响。
  4. 使用流量控制,限制每个流的带宽,避免某个流占用过多的网络资源,从而减少队头阻塞的影响。
  • RTT

HTTP/2协议使用单一的TCP连接来传输多个HTTP请求和响应,通过使用二进制分帧和头部压缩等技术,可以减少HTTP/1.x协议中存在的请求头过大、TCP连接建立和拆除的开销等问题,从而提高网络传输效率和速度。因此,HTTP/2协议的RTT一般会比HTTP/1.x协议的RTT要小一些。

HTTP/3协议则采用了基于UDP的QUIC协议来传输数据,通过使用多路复用、0-RTT握手和头部加密等技术,可以进一步减少传输延迟和网络拥塞的问题,从而提高网络传输效率和速度。因此,HTTP/3协议的RTT一般会比HTTP/2协议的RTT要小一些。

  • QUIC

QUIC基于UDP协议进行通信,并且在协议层面上提供了多路复用、快速连接建立、数据流量控制、重传和拥塞控制等功能,以支持更快、更高效的网络通信。
QUIC的主要特点包括:

  1. 快速连接建立:QUIC使用了0-RTT(Zero Round Trip Time)的技术,允许在未建立完全连接的情况下就可以发送数据,从而减少了连接建立所需的时间。
  2. 多路复用:QUIC支持多路复用,允许在一个连接上同时传输多个数据流,从而提高了网络传输的效率。
  3. 数据流量控制:QUIC可以在协议层面上对数据流进行流量控制,以避免网络拥塞和数据丢失。
  4. 重传和拥塞控制:QUIC可以在协议层面上进行重传和拥塞控制,以保证网络传输的可靠性和效率。
  5. 安全性:QUIC默认使用TLS加密,提供了端到端的安全性保证,同时还提供了一些其他的安全功能,如连接迁移、零窃听等。
  • 网络安全

https=http+TLS

TLS=身份验证+加解密

身份验证靠PKI

PKI是分发以及验证证书的基础安全体系

数字签名是对公开内容的一种身份验证方式,防止其被随意篡改。其实质是用私钥加密,验证者用公钥验证。

而要想实现在公开环境下的秘密通话,必须要先有秘密信息,此处即指公钥。