一、简介
1)目的
HTTP(超文本传输协议)是应用程序级别分布式协作超媒体信息协议。
HTTP的第一个版本,称为HTTP / 0.9,是一种简单的原始数据传输协议。
通过互联网定义的HTTP / 1.0 得到了改进协议允许消息采用类似MIME的格式消息,包含有关传输数据的元信息请求/响应语义上的修饰符。
但是,HTTP / 1.0可以不考虑等级的影响,代理,缓存,持久连接的需要或虚拟主机。
此外,扩散不完全措施称自己为“HTTP / 1.0”的应用程序需要一个协议版本更改,以便两个通信应用程序确认彼此身份信息。该协议被称为HTTP/1.1,该协议包含了比HTTP/1.0更加严格的要求,以确保其功能可靠并能顺利实施。
实用性的信息系统需要的功能要多于简单功能检索,包括搜索,前段的更新和注释。HTTP允许一组开放式的方法和标题来指示请求的目的地。由统一资源标识符(URI)提供,作为位置的统一资源定位符(URL)统一资源名称(URN)来指示目标资源的信息。
HTTP还用作通用协议之间的通信用户代理和代理/网关到其他Internet系统,包括SMTP ,NNTP ,FTP ,Gopher 支持的那些,和WAIS 协议。通过这种方式,HTTP允许基本的超媒体访问各种应用程序提供的资源
HTTP通过传输协议使得资源在互联网上能够安全的,有效的进行传输。
2)要求
关键词“必须”,“绝不”,“必须”,“必须”,“不要”,在这个“应该”,“不应该”,“推荐”,“可能”和“可选”文档将RFC中的描述进行解释。
如果实现不满足一个或多个,则实现不符合要求它的协议必须或必需的级别要求实现。
满足所有MUST或REQUIRED的实现这个级别和协议的所有SHOULD级别要求都是如此要“无条件地遵守”; 一个满足所有必须的等级要求,但不是所有应该达到的等级要求,称协议是“有条件的”。
3)术语
连接:在两个程序之间建立的传输层虚拟电路,为了沟通的目的。
信息:HTTP通信的基本单元,由结构化组成的语法匹配的八位字节序列,通过连接传输。
请求:HTTP请求消息。
响应:HTTP响应消息。
资源:可以通过URI标识的网络数据对象或服务。资源可能有多种形式表示(例如多种语言,数据格式,大小和决议)或以其他方式变化。
实体:作为请求或有效载荷传输的信息响应。一个实体由形式的元信息组成实体标题字段和实体主体形式的内容。
表示:包含受内容约束的响应的实体宣判,可能存在多个与特定响应状态相关的表示。
内容谈判:该可以协商任何响应中的实体表示(包括错误回复)。
变种:资源可以包含一个或多个表示在任何给定的瞬间与它相关联。每一个表示被称为“变量”。使用术语“变体”并不一定意味着资源受内容的约束谈判。
客户:为发送目的建立连接的程序要求。
用户代理:发起请求的客户端。这些通常是浏览器,编辑,蜘蛛(网络遍历机器人)或其他最终用户工具。
服务器:一个接受连接的应用程序通过发回响应来提供服务请求。任何给定的程序可能能够同时成为客户和服务器; 我们使用这些术语仅指程序为a执行的角色特殊的连接,而不是程序的功能一般来说。同样,任何服务器都可以充当源服务器,代理,网关或隧道,基于性质的切换行为每个请求。
原始服务器:要在其上创建或将要创建给定资源的服务器。
代理:作为服务器和客户端的中间程序为了代表其他客户提出请求。请求在内部提供服务或通过传递它们可能的翻译,到其他服务器。代理必须实现本规范的客户端和服务器要求。一个“透明代理”是不修改请求的代理或超出代理身份验证所需的响应鉴定。“非透明代理”是修改的代理请求或响应,以提供一些额外的服务用户代理,例如组注释服务,媒体类型转换,协议减少或匿名过滤。除了其中显式透明或不透明行为声明,HTTP代理要求适用于这两种类型代理。
网关:作为其他服务器的中介的服务器。与代理不同,网关接收请求,就好像它是请求资源的原始服务器; 请求客户可能没有意识到它正在与网关通信。
隧道:中间程序,充当盲目接力两个连接。一旦激活,隧道不被视为一方到HTTP通信,虽然隧道可能已经由HTTP请求启动。两者都不存在隧道中继连接的末端关闭。
高速缓存:程序的响应消息和子系统的本地存储它控制其邮件存储,检索和删除。一个缓存存储可缓存的响应以减少响应未来的时间和网络带宽消耗,相当于要求。任何客户端或服务器都可以包括缓存,但是缓存不能被充当隧道的服务器使用。
缓存:如果允许缓存存储副本,则响应可缓存用于回答后续请求的响应消息。资源是可缓存的,也可以是否缓存可以使用缓存的附加约束复制特定请求。
第一手:如果直接和没有响应是第一手的来自原始服务器的不必要的延迟,可能是通过一个或多个代理。如果其有效性正确,则回复也是第一手的直接用原始服务器检查。明确的到期时间源服务器打算实体应该的时间没有进一步验证,不再由缓存返回。
启发式到期时间:没有明确到期时由缓存分配的到期时间时间可用。
年龄:回复的年龄是自发送之后的时间,或已成功验证原始服务器。
新鲜的一生:生成响应与其响应之间的时间长度到期时间。
新鲜:如果它的年龄尚未超过其新鲜度,那么它的反应是新的一生。
陈旧:如果其年龄已超过其新鲜度,则回复是陈旧的。
语义透明:缓存以“语义透明”方式运行,具有尊重特定的反应,当它的使用不影响请求客户端和原始服务器,但改进除外性能。当缓存在语义上是透明的时,客户端收到完全相同的响应(逐跳头除外)如果直接处理了它的请求,它会收到由原始服务器。
验证器:协议元素(例如,实体标签或最后修改时间)用于确定缓存条目是否等效实体的副本。
上游/下游:上游和下游描述了消息的流程:全部消息从上游流向下游。
入站出站:入站和出站是指请求和响应路径消息:“入站”表示“朝向原始服务器”,和“出站”是指“向用户代理旅行”
4)整体运作方式
HTTP协议是请求/响应协议。客户端发送一个以请求方法,URI和形式请求到服务器协议版本,后跟包含请求的类似MIME的消息修饰符,客户信息和可能的身体内容与服务器的连接。服务器响应状态行,包括消息的协议版本和成功或错误代码,后跟包含服务器信息,实体的类似MIME的消息元信息,以及可能的实体 - 身体内容。
1.
大部分HTTP通信由用户代理并由一下内容组成资源请求。
请求链------>UA------ v------O.<------响应链
v(单个连接) UA(用户代理)O(源服务器)
2.
当一个或多个中间人出现时,会出现更复杂的情况存在于请求/响应链中。有三种常见的中介形式:代理,网关和隧道。代理是一个转发代理,以绝对形式接收URI请求,重写全部或部分消息,并转发重新格式化的消息对URI标识的服务器的请求。网关是一个接收代理,作为一些其他服务器之上的层,如果必要的,将请求转换为底层服务器协议。隧道充当两个连接之间的中继点不改变消息; 当使用隧道时沟通需要通过中介
请求链------>UA------v------A------v------B------v------C------v------O.<------响应链
上图显示了三个中介(A,B和C)之间用户代理和原始服务器。请求或响应消息旅行整个连锁店将通过四个独立的连接。
3.
任何不作为隧道的通信方可以使用内部缓存来处理请求。缓存的效果是,如果其中之一,请求/响应链缩短链中的参与者有适用于此的缓存响应请求。
请求链------>UA------v------A------ v------B - - - - - - C - - - - - - O .<------响应链
并非所有响应都可以缓存,有些请求可能会包含对缓存行为有特殊要求的修饰符。
实际上,存在各种各样的体系结构和配置目前正在试验或部署的缓存和代理通过万维网。这些系统包括国家层级用于保存跨洋带宽的代理缓存,系统广播或多播缓存条目,分发的组织通过CD-ROM等缓存数据的子集。使用HTTP系统在高带宽链路上的企业内部网中,以及通过具有低功率无线电链路和间歇连接的PDA。该HTTP / 1.1的目标是支持各种各样的配置已经部署,同时引入符合的协议结构构建需要高的Web应用程序的人的需求可靠性,并且失败,至少可靠的指示失败。
HTTP通信通常通过TCP / IP连接进行。该默认端口是TCP 80,但可以使用其他端口。这样做不排除在任何其他协议之上实现HTTP在互联网上或其他网络上。HTTP只假设可靠运输; 可以使用任何提供此类保证的协议;HTTP / 1.1请求和响应结构的映射到有关议定书的运输数据单位不在范围内本规范。
参考:
https://tools.ietf.org/html/rfc2616