HTTP协议又称超文本传输协议;是OSI模型中的第七层应用程中协议;具有以下特点:
1、支持客户/服务器模式;
2、简单快速;
3、灵活;
4、无连接;
5、无状态;
这里我们主要解释4和5特点:
无连接:指的是每次连接只处理一个请求,服务端处理完客户端一次请求,等到客户端作出回应之后便断开连接;这种方式有利于节省传输时间;然后随着互联网的发展,一台服务器同一时间处理的请求越来越多,如果依然采用原来的方式,将会在建立和断开连接上花费大部分时间;
为了避免这一劣势,
HTTP/1.0:持久连接被提出来;即当一个TCP连接服务器多次请求:客户端会在请求Header中携带Connection:Keep-Alive;向服务器请求持久连接,如果服务端允许就会在响应报文中加上相同的字段;
HTTP/1.1时代:持久连接称为了默认的连接方式;同时持久连接的弊病也展现出来,即所有的连接都是串行的,HOLB;当某一个请求阻塞时就会导致同一条连接的后续请求被阻塞;
为了解决这一问题:提出了pipellining的概念;客户端发起一次请求时不必等待响应便直接发起第二个请求;服务端按照请求的顺序一次返回结果;
SPDY和HTTP/2:multiplexing:多路复用技术出现;能够让多个请求和响应的传输完全混杂在一起进行;通过streamID来互相区别;
PS:HTTP借助于底层的TCP虚拟连接,HTTP协议本身无需连接;就好比A和B打电话,A和B是借助于底层的简化先连接交换信息;但是A和B本身无需连接;
无状态:是指服务端对于客户端每次发送的请求都认为它是一个新的请求,上一次会话和下一次会话没有联系; HTTP 协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。
为了解决HTTP“无状态”特性,程序员相出了许多的方法,比如我们常听到的:cookies,token,session,如果您想具体的了解这三个概念的区别,可以来这里看一看:https://www.cnblogs.com/moyand/p/9047978.html
CCHTTP提供了数据表用于将HTTP协议传输变为“有状态”连接,这类似于SESSION,如果您感兴趣可以来了解学习一下:
有状态连接