协议是指计算机通讯网络中两台计算机之间进行通讯所必须共同遵照的规定或规则,超文本传输协议(HTTP)是一种通讯协议,它容许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
在Internet中全部的传输都是经过TCP/IP进行的。HTTP协议做为TCP/IP模型中应用层的协议也不例外。HTTP协议一般承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了咱们常说的HTTPS。
HTTP默认的端口号为80,HTTPS的端口号为443。
浏览网页是HTTP的主要应用,可是这并不表明HTTP就只能应用于网页的浏览。HTTP是一种协议,只要通讯的双方都遵照这个协议,HTTP就能有用武之地。好比我们经常使用的QQ,迅雷这些软件,都会使用HTTP协议(还包括其余的协议)。web
HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,没法实如今客户端没有发起请求的时候,服务器将消息推送给客户端。浏览器
HTTP协议的主要特色可归纳以下:
一、支持客户/服务器模式。支持基本认证和安全认证。
二、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。 请求方法经常使用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不一样。因为HTTP协议简单,使得HTTP服务器的程序规模小,于是通讯速度很快。
三、灵活:HTTP容许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
四、HTTP 0.9和1.0使用非持续链接:限制每次链接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开链接。采用这种方式能够节省传输时间。HTTP 1.1使用持续链接:没必要为每一个web对象建立一个新的链接,一个链接能够传送多个对象。
五、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺乏状态意味着若是后续处理须要前面的信息,则它必须重传,这样可能致使每次链接传送的数据量增大。安全
无状态协议:
协议的状态是指下一次传输能够“记住”此次传输信息的能力。
http是不会为了下一次链接而维护此次链接所传输的信息,为了保证服务器内存。
好比客户得到一张网页以后关闭浏览器,而后再一次启动浏览器,再登录该网站,可是服务器并不知道客户关闭了一次浏览器。
因为Web服务器要面对不少浏览器的并发访问,为了提升Web服务器对并发访问的处理能力,在设计HTTP协议时规定Web服务器发送HTTP应答报文和文档时,不保存发出请求的Web浏览器进程的任何状态信息。这有可能出现一个浏览器在短短几秒以内两次访问同一对象时,服务器进程不会由于已经给它发过应答报文而不接受第二期服务请求。因为Web服务器不保存发送请求的Web浏览器进程的任何信息,所以HTTP协议属于无状态协议(Stateless Protocol)。服务器
HTTP协议是无状态的和Connection: keep-alive的区别:
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另外一方面讲,打开一个服务器上的网页和你以前打开这个服务器上的网页之间没有任何联系。
HTTP是一个无状态的面向链接的协议,无状态不表明HTTP不能保持TCP链接,更不能表明HTTP使用的是UDP协议(无链接)。
从HTTP/1.1起,默认都开启了Keep-Alive,保持链接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP链接不会关闭,若是客户端再次访问这个服务器上的网页,会继续使用这一条已经创建的链接。
Keep-Alive不会永久保持链接,它有一个保持时间,能够在不一样的服务器软件(如Apache)中设定这个时间。网络