#http1.1 与 2 与 3

#http1.1

超文本传输协议

文本就是文字啦

超文本就是也包括音频视频啦

分为 http client 端和 http server 端,大部分配置在 server 端

#http client 端

method path http1.1 请求头

#http server 端

http1.1 状态码 响应头

#TCP 三次握手和四次挥手

  • 客户端问服务端行吗(SYN100)
  • 服务端说可以(SYN101,ACK300)
  • 客户端说那链接吧(ACK301)

SYN Synchronize Sequence Numbers 是随机值,服务端拿到后+1 ACK Acknowledge character 也是随机值,客户端拿到后+1

三次握手和四次挥手后建立链接传输数据

默认采用持续链接(每个 tcp 链接可以被多个请求复用,不用声明 Connection: keep-alive)

  • 客户端说我说完了(FIN1)
  • 服务端说我还有要说的(ACK)
  • 服务端说我说完了(FIN2)
  • 客户端说那拜拜(ACK)

FIN_WAIT_1 FIN_WAIT_2

#http2

同域名下所有通信都在单个连接上完成,同个域名只需要占用一个 TCP 连接,使用一个连接并行发送多个请求和响应。 单个连接可以承载任意数量的双向数据流,单个连接上可以并行交错的请求和响应,之间互不干扰。 数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装。每个请求都可以带一个 31bit 的优先值,0 表示最高优先级, 数值越大优先级越低。

多路复用

#3

nginx 推进

TCP 换 UDP

QUIC 保护传输安全