前端讲义12_HTTP协议的无状态和keep-alive

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/msh2016/article/details/89741889

HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性。

当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。

无状态是指协议从另一方面来看,打开一个服务器上的网页和之前打开这个服务器上的网页之间没有任何联系,服务器不知道客户端状态。

深入讨论

Keep-Alive模式 ,客户端如何判断请求所得到的响应数据已经接收完成?
HTTP服务器发送玩数据不会自动断开连接,所有不能再使用返回EOF(-1)来判断。
这时借助Conent-Length表示实体内容长度,客户端(服务器)可以根据这个值来判断数据是否接收完成。
但是如果消息中没有Conent-Length,那该如何来判断呢?

请看消息首部字段Transfer-Encoding

PS:任何不含有消息体的消息(如1XXX、204、304等响应消息和任何头(HEAD,首部)请求的响应消息),总是由一个空行(CLRF)结束。 

 

扫描二维码关注公众号,回复: 6098171 查看本文章

 

 

猜你喜欢

转载自blog.csdn.net/msh2016/article/details/89741889