如果仔细思考HTTP的通信过程,会发现HTTP协议并没有在不同请求之间提供一种相互联系的机制。而我们在浏览器或进行网上购物等过程时,各个 HTTP请求之间是具有一定逻辑性的,这种逻辑性却没有在HTTP的请求和响应结构中所体现。也就是说,HTTP协议是一种无状态的协议,它不能直接解决 Web应用不同的内在业务逻辑问题。
我们经常使用的协议还有FTP协议,如果大家常用诸如CuteFtp这类的软件就会发现,我们只有成功登录了FTP服务器,FTP服务器就会为我们开设一个专用的连接,服务器会记录下每个用户的运行状态,当用户发出新请求时,无需重新进行身份验证或配置,这样用户获得很好的执行性能,也就是说,FTP是一种有状态的连接。
如果从客户质量的角度来看,FTP可以使客户获得比HTTP协议更好的服务性能,那为什么HTTP协议还是在Web应用中获得了不可代替的成功呢?如果我们从服务器的角度看,这个问题就不难回答了。
如果服务器为每个用户都提供专用的连接,则必须有一个连接数目的限制,例如某FTP服务器限制的最大连接数为100,则当第101个客户申请连接时,即使在已经连接成功的100个客户中有90个正空闲,新来的客户也必须等待已经连接的客户主动注销登录释放连接。也就是说FTP服务器的服务效率是很低的。
反过来看HTTP这种无状态协议,每当HTTP将处理结果回传给客户端,就删除客户的运行状态,并中断该连接。这样对于单个客户而言,获得的服务性能肯定比FTP这种专用服务差,但从服务器的角度看,服务器系统确实无刻都可以让100个真正需要服务器服务的客户同时上线。