HTTP/1.0/1.1/2.0 在并发请求上主要区别是什么?
1、HTTP/1.0
每个TCP连接只能发送一个请求,当服务器响应后关闭连接,再次请求需要再次建立TCP连接。
2、HTTP/1.1
默认采用持久连接,TCP, Connection:keep-alive
Connection:close
管道机制,在同一个TCP连接里,允许多个请求同时发送。一问一答的形式
所有的数据通信是有顺序的,A B C,A先到达服务器开始响应,10S,队头阻塞。
3、HTTP/2.0
加了双工模式,服务器也能同时处理多个请求了,解决了队头阻塞的问题。
多路复用,没有次序概念了。
加了服务器推送功能。
HTTP/ 1.1的长连接和2.0的多路复用有什么区别?
1.1: 同一时间一个TCP链接只能处理一个请求,采用一问一答的形式。上一个请求响应后才能处理下一个请求。
追问: 听说chrome浏览器支持最大6个同域请求的并发: 因为chrome支持最大6个TCP连接
2.0: 同域名上的所有通信都在单个连接上完成。单个连接上可以并行交错的进行请求和响应。
为什么1.1不能实现多路复用?
HTTP/2.0是基于二进制帧的协议,HTTP/1.1是基于文本分隔解析的协议。
1.1的报文结构里,服务器需要不断的读入字节,直到遇到换行符,处理的顺序是串行的。
2.0以帧为最小数据单位,每个帧都会有标识自己属于哪个流,多个帧组成一个流。
多路复用,其实就是一个TCP存在多条流。