参考:java3y《对线面试官》
介绍
HTTP协议是客户端和服务器交互的一种通讯方式
所谓协议是双方约定好的“格式”,让双方都能看得懂
“交互”就是请求和响应
HTTP个版本间的区别
Http1.0默认是短连接,每次与服务器交互都需要新开一个连接
HTTP1.1 最主要的是“默认持久连接”。只要客户端服务端没有断开TCP连接,就一直保持连接,可以发送多次HTTP请求,
其次是“断点续传”。利用Http看消息头使用分块传输编码,将实体主体分块进行传输
HTTP/2不再以⽂本的⽅式传输,采⽤「⼆进制分帧层」,对头部进⾏了「压缩」,⽀持「流控」,最主要就是HTTP/2是⽀持「多路复⽤」的(通过单⼀的TCP连接「并⾏」发起多个的请求和响应消息)
HTTP1.1提出的「管线化」只能「串⾏」(⼀个响应必须完全返回后,下⼀个请求才会开始传输)
HTTP/2多路复⽤则是利⽤「分帧」数据流,把HTTP协议分解为「互不依赖」的帧(为每个帧「标序」发送,接收回来的时候按序重组),进⽽可以「乱序」发送避免「⼀定程度上」的队⾸阻塞问题
但是,⽆论是HTTP1.1还是HTTP/2,response响应的「处理顺序」总是需要跟request请求顺序保持⼀致的。假如某个请求的response响应慢了,还是同样会有阻塞的问题。
这受限于HTTP底层的传输协议是TCP,没办法完全解决“线头阻塞”的问题
HTTP/3 跟前⾯版本最⼤的区别就是:HTTP1.x和HTTP/2底层都是TCP,⽽HTTP/3底层是UDP。使⽤HTTP/3能够减少RTT「往返时延」(TCP三次握⼿,TLS握⼿)
标签:HTTP,请求,响应,TCP,传输,Https,Http,连接 From: https://www.cnblogs.com/deity-night/p/17207057.html