HTTP 协议 -- 基础

概述
HTTP 是基于 TCP/IP 协议的应用层协议,它不涉及数据包(packet)的传输,主要是规定客户端和服务器之间的通讯格式,默认使用 80 端口。
 
HTTP 协议最先版本是 HTTP/0.9,经历了 HTTP/1.0 和 HTTP/1/1 的发展,到目前为止已是 HTTP/2.0 。其中 HTTP/1.0 最为广泛也是目前使用最久的一个版本。
 
HTTP 协议主要有如下几个特色:
  1. 支持 B/S 和 C/S 模式。
  2. 简单快速。客户端向服务器请求时,只须要传送请求方法和路径。
  3. 灵活。HTTP 容许传输任意类型的数据对象。
  4. 无链接。每次链接只处理一个请求。HTTP/0.9 和 HTTP/1.0 采用非持久链接,HTTP/1.1 采用持久链接。
  5. 无状态。HTTP 协议是无状态协议,对事务处理没有记忆能力。一方面,若后续处理须要上一次的信息,那么这些数据须要重传,这致使链接传输的数据量大增。另外一方面,服务器不须要前面的信息时它的应答就会很快。

 

无状态协议
HTTP 协议是无状态的。所谓无状态,是指服务器不会保存客户端请求的数据,这样同一个客户端此次请求和上一个请求是没有对应关系的,对服务器来讲,每个请求都是全新的,它并不知道两个请求来自同一个客户端。
为了解决这个问题,浏览器引入了 Cookie 机制,每次请求客户端都将 Cookie 中的数据所有发给服务端,而服务端将数据写入 Cookie 响应给客户端。
 
 
HTTP/1.1 持久链接
在 HTTP/0.9 和 HTTP/1.0 使用非持久链接。在非持续链接下,每一个 TCP 只链接一个 Web 对象,链接在一次 请求-回应 后都会关闭,而持续链接可让一个链接被多个请求重复利用。这种链接持久化显著减小了请求延迟,由于客户不用在首次请求后再次进行 TCP 交互确认建立链接。HTTP/1.1 引入了持续链接机制,没必要为每一个 web 对象建立一个新的链接,一个链接能够传送多个对象。
HTTP/1.1 还进行了宽带优化,如引入了分块传输编码来容许流化传输持续链接上发送的内容,取代原先的 buffer 模式。HTTP 管道容许客户在上一个回应被收到前发送多重请求从而进一步减小延迟的时间。
 
 
HTTP/1.1 管道机制
HTTP/1.1 引入了管道机制,管道机制前提是在持久链接下完成。在同一个 TCP 链接中,客户端能够同时发生多个请求,而不像之前那样在同一个 TCP 链接中发出请求后须要等待服务器作出回应,而后才能发生下一个请求。不过按 HTTP/1.1 协议,服务器端必须按客户端请求的顺序恢复请求。
 
 
工做流程
一次 HTTP 请求-响应 称为一个事务
1)客户端与服务器创建链接。由于 HTTP 协议是基于 TCP 协议的,因此每次创建链接时都要通过三次握手。
2)创建链接后,客户端发送一个请求给服务端。
3)服务端接收请求后,给予相应的响应消息。
4)客户端接收服务器响应的消息,而后客户端与服务器断开链接。
 
 
参考文章:
Hypertext Transfer Protocol — HTTP/1.1: https://tools.ietf.org/html/rfc2616
相关文章
相关标签/搜索