HTTP RFC(自学心得)

摘要:
1、 引言1)目的HTTP(超文本传输协议)是一种应用级分布式协作超媒体信息协议。通过互联网定义的HTTP/1.0已得到改进,允许消息采用类似MIME的格式消息,并包含与数据传输相关的元信息请求/响应的语义修饰符。HTTP允许一组开放的方法和标头来指示请求的目的地。HTTP也被用作用户代理和到其他互联网系统的代理/网关之间的通信的通用协议。

一、简介


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

免责声明:文章转载自《HTTP RFC(自学心得)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇手机端--swiper一屏展示下个轮播的一半的效果安卓进阶:元注解Support Annotation Library使用详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ZooKeeper 基础入门

什么是ZooKeeper Apache ZooKeeper 是一个开源的实现高可用的分布式协调服务器。ZooKeeper是一种集中式服务,用于维护配置信息,域名服务,提供分布式同步和集群管理。所有这些服务的种类都被应用在分布式环境中,每一次实施这些都会做很多工作来避免出现bug和竞争条件。 ZooKeeper 设计原则 ZooKeeper 很简单 ZooK...

JavaWeb:实现文件上传与下载

JavaWeb:实现文件上传与下载 文件上传前端处理   本模块使用到的前端Ajax库为Axio,其地址为GitHub官网。 关于文件上传    上传文件就是把客户端的文件发送给服务器端。   在常见情况(不包含文件上传)下,我们POST请求Content-Type是application/x-www-form-urlencoded,这意味着消息内容会经过...

android 网络编程--socket tcp/ip udp http之间的关系

网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,一般编程人员接触最多的就是应用层和运输层,再往下的就是所谓的媒体层了,不是我们研究的对象。 下面是应用层、运输层,网络层、链路层通信协议概图。我们经常接触到的一般是: http协议:应用层协议,并且http协议是基于tcp连接的,主要解决的是如何包装协议的 tcp协议:运输层...

MQTT协议的简单介绍和服务器的安装

转:http://blog.csdn.net/djun100/article/details/25752491   最近公司做的项目中有用到消息推送,经过多方面的筛选之后确定了使用MQTT协议,相对于XMPP,MQTT更加轻量级,并且占用用户很少的带宽。 MQTT是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/预订协议,可以连接大量的远程传感器...

JAVA安装

1.      下载 访问oracle官方网站,下载java运行时环境1.6.33,地址: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#sjre-7u79-oth-JPR   选择 Accept Li...

.htaccess rewrite 规则详细说明

rewrite的语法格式: RewriteEngine On #要想rewrite起作用,必须要写上哦 RewriteBase url-path #设定基准目录,例如希望对根目录下的文件rewrtie,就是”/” RewriteCond test-string condPattern #写在RewriteRule之前,可以有一或N条,用于测试rewrite...