HTTP1.1新特性

HTTP1.1新特性

1. 维护长连接
TCP的keep alive是检查当前TCP连接是否活着;HTTP的Keep-alive是要让一个TCP连接活久点。它们是不同层次的概念。
TCP keep alive的表现:
当一个连接“一段时间”没有数据通讯时,一方会发出一个心跳包(Keep Alive包),如果对方有回包则表明当前连接有效,继续监控。
① 长连接:在经过三次握手,建立TCP连接后,在数据传输完成后仍然保持TCP连接,等待同域名下继续用这个通道传输数据。HTTP 1.1 默认保持长连接。
② 短连接:在经过三次握手,建立TCP连接后,在一次数据传输完成后,就进行四次挥手,断开连接。1、每一条TCP通道只有一个POST;2、在数据传输完毕可以看到四次握手包 。以下特殊情形也属于短连接:因为连接是双方的,如果服务器那边关掉了,那么我客户端这边保留着也不能实现长连接。
③ http协议是怎么保持长连接的。在HTTP首部的Connection: Keep-alive中,Keep-Alive: timeout=20,表示这个TCP通道可以保持20秒。max=XXX,表示这个长连接最多接收XXX次请求就断开。如果在客户端,即发请求的时候,没有定义超时时间。服务端也会发起四次挥手的。TCP还有心跳检查机制来当前连接是否活着。TCP的keep alive和HTTP的Keep-alive的区别。TCP的keep alive是检查当前TCP连接是否活着;HTTP的Keep-alive是要让一个TCP连接活久点。TCP keep alive的表现:当一个连接“一段时间”没有数据通讯时,一方会发出一个心跳包(Keep Alive包),如果对方有回包则表明当前连接有效,继续监控。HTTP的Keep-alive中的Keep-alive:timeout =20就是TCP通道保持20秒。
2. 块编码
建立好链接之后客户端可以使用该链接发送多个请求。这样处理就需要在请求中添加“content-length”,这样就可以接收方就可以知道如何解释这些字节信息。
HTTP解析请求的时候来指明字节流将会分块发送。对每一块,块的长度后面会有一个回车/换行符(CR/LF)
3. 状态码100的使用
当客户端需要发送一个较长的请求体的时候,不确定服务端是否能够接收。就会在发送时添加Except: 100 - continue,例如如下的请求头:HTTP/1.1 100 continue

发布了68 篇原创文章 · 获赞 2 · 访问量 1667

猜你喜欢

转载自blog.csdn.net/weixin_45923633/article/details/105463609