计算机网络

  1. TCP连接

    1. 三次握手

      1. 客户端发送syn报文段

      2. 服务端收到后返回syn和ack

      3. 客户端收到后返回ack

    2. 四次挥手

      1. 客户端发出 FIN
      2. 服务端收到后发出 ACK
      3. 服务端发出 FIN
      4. 客户端回复ACK,经过2MSL(最大报文段生存时间)后断开,服务端收到后立即断开
  2. 为什么要三次握手四次挥手

    1. 握手:两次的话服务端不知道客户端是否有接收能力
    2. 挥手:tcp是全双工的,这意味着数据可以在两个方向上传输,第三次和第四次确保了双方数据传输完毕,并且每个方向是独立的被关闭
  3. https连接

    1. 客户端发起 HTTPS 请求,发送客户端生成的随机数和支持的加密算法列表
    2. 服务端返回证书服务端生成的随机数选择的加密方法给客户端;
    3. 客户端对证书进行合法性验证,验证通过后再生成一个随机数,客户端通过证书中的公钥随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数
    4. 三次握手此时已经完成,之后客户端和服务端都会根据这三个随机数,生成一个随机对称密钥,之后的数据都通过随机对称密钥进行加密传输
  4. https 比 http 好在哪

  5. 数据安全

  6. 数据完整性:

  7. 身份验证

  8. https页面白屏问题

  9. 证书过期

  10. 证书不匹配

  11. 证书链不完整

  12. 证书被吊销

  13. 自签名证书

  14. http 2.0

  15. 二进制分帧:在之前的 HTTP 版本中,我们是通过文本的方式传输数据。在 HTTP/2 中信息和数据体都是二进制,并且统称为"":用头信息帧放头部字段,用数据帧放请求数据体,是一堆乱序的二进制帧,它们不存在先后关系,因此不需要排队等待,是HTTP2多路复用的基础。

  16. 头部压缩 HTTP2使用 HPACK算法 压缩头部然后再发送,并在两端维护了索引表,用于记录出现过的 header,后面在传输过程中就可以传输已经记录过的 header 的键名,对端收到数据后就可以通过键名找到对应的值。

  17. 多路复用 在一个连接里,可以同时发送多个请求或回应,且不用按顺序一一对应,这样子解决了HTTP队头阻塞的问题。

  `服务器推送` 允许浏览器发送一个请求后,服务器主动向浏览器推送与这个请求相关的`资源`,这样浏览器就不用发起后续请求去获取一些`资源`。但是`Chrome106`版本禁用了,改为`103状态码`;
  1. http1 => http1.1 => http2 => http3 的区别

  2. http1: 是一个无状态,短连接协议,它很简单但是也存在一些问题

  3. 短链接:每次浏览器和服务端建立连接后处理一个请求响应就会断开

  3. 性能低:如果加载大量资源例如图片,每个资源都需要建立一个新的 tcp 连接
  
  4. 无主机头:不支持同一个ip上部署多个域名,无法区分请求是发送给哪个域名的
  1. http 1.1: 目前使用最广泛的版本之一

  2. 长连接:默认开启,在一个 tcp 连接中可以发送多个请求和处理多个响应,请求串行

  3. 管道化:允许浏览器发送一个请求后不等待响应就可以发送另一个。但是由于服务器必须按照顺序返回响应,如果前面的请求太慢就会导致“队头阻塞”,所以实践中很少使用。发送并行,接收串行

  4. 引入主机头

  5. http 2.0: 解决队头阻塞

  6. 多路复用:允许一个 tcp 连接上同时发送和接收多个独立的请求响应,请求和接收都为并行

  7. 头部压缩:使用HPACK算法对请求和响应头进行压缩

  8. 服务器推送

  9. 二进制分帧:之前的版本都是通过文本的方式传输,http2中数据和信息都是二进制乱序存放,每个帧有唯一标识符,以便浏览器在接收后进行组装

  10. http 3:解决http2在传输层的队头阻塞

    1. 基于 UDP的 QUIC 协议

    2. tcp丢包后其他数据流会被阻塞,quic丢包后不会影响其他数据流

    3. 更快的建立连接

    4. 连接迁移


感谢您的支持 | Thank you for supporting

计算机网络
http://example.com/2025/10/17/3ComputerNetwork/
作者
Eli Bi
发布于
2025年10月17日
更新于
2025年10月20日
许可协议