HTTP协议的 “无连接,无状态” 特点

一、HTTP协议

超文本传输协议(HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应,请求和响应消息的头以ASCII形式给出,而消息内容则具有一个类型MIME的格式。

  • 特点:
  • 1、支持客户/服务器模式
  • 2、简单快速
  • 3、灵活
  • 4、无连接
  • 5、无状态

无连接

指的是限制每次连接只处理一个请求,服务器处理完客户端的请求,并收到客户端的应答后,即断开连接。

特点:请求时建立连接,请求完释放连接,以尽快将资源释放出来给其他客户端,适用于请求非静态资源;
如果请求的是静态资源,即访问图片每次都需要建立一次TCP连接就显得低效;
Keep-Alive被提出来解决这效率低的问题,它能使客户端到服务器端的连接持续有效,它能避免建立或重新建立连接;但如果Keep-Alive值设置过大且这期间无其它操作,也是会造成资源浪费,所以需要根据实际应用设置;

无状态

是指对于事务处理没有记忆能力,即我们给服务器发送HTTP请求后,服务器根据我们的请求,返回响应信息给我们,但服务器不会记录任何信息,这意味着如果下一次请求,需要上一次请求的信息,则它必须重传,这可能导致每次传送的数据量变大,造成应答时间过长。

现如今的Web应用程序,都是需要客户端与服务器进行动态交互 如:用户选中商品加入购物车之后,点击支付时,需要知道哪些商品存在购物车中;
Http的无状态特性影响了这些需要交互的应用程序,为了解决这一问题,Cookie和Session诞生了;

Cookie

Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。

Session

会话控制,是服务器端使用的一种记录客户端状态或信息的机制,属于服务器的解决方案。

在如今的市场或企业里,结合了cookie和session的,进行信息的存储;
通过cookie存储一个session_id,然后具体的数据则保存在session中,如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息;

二、总结

HTTP协议的主要特点可概括如下:

1.支持客户/服务器模式。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

你可能感兴趣的:(基础)