自学HTTP RCF体会

一.HTTP

1.关于HTTP的诞生

     CERN(欧洲核子研究组织)的蒂姆 • 伯纳斯 - 李(Tim BernersLee)博士提出了一种能让远隔两地的研究者们共享知识的设想。

  最初设想的基本理念是:借助多文档之间相互关联形成的超文本(HyperText),连成可相互参阅的 WWW(World Wide Web,万维网)。

  现在已提出了 3 项 WWW 构建技术,分别是:把 SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文本标记语言的 HTML(HyperText Markup Language,超文本标记语言);作为文档传递协议的 HTTP ;指定文档所在地址的 URL(Uniform Resource Locator,统一资源定位符)。

  1990 年 11 月,CERN 成功研发了世界上第一台 Web 服务器和 Web 浏览器。两年后的 1992 年 9 月,日本第一个网站的主页上线了。

2.HTTP标准演变过程

  HTTP/0.9于 1990 年问世。那时的 HTTP 并没有作为正式的标准被建立。这时的 HTTP 其实含有 HTTP/1.0 之前版本的意思,因此被称为 HTTP/0.9。

  HTTP 正式作为标准被公布是在 1996 年的 5 月,版本被命名为 HTTP/1.0,并记载于 RFC1945。虽说是初期标准,但该协议标准至今仍被广泛使用在服务器端。RFC1945 - Hypertext Transfer Protocol -- HTTP/1.0

  1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初的标准是 RFC2068,之后发布的修订版 RFC2616 就是当前的最新版本。RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1

  当年 HTTP 协议的出现主要是为了解决文本传输的难题。由于协议本身非常简单,于是在此基础上设想了很多应用方法并投入了实际使用。现在 HTTP 协议已经超出了 Web 这个框架的局限,被运用到了各种场景里。

3.HTTP的网络基础TCP/IP

  3.1 TCP/IP协议族

    计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。TCP/IP 是互联网相关的各类协议族的总称

  3.2 TCP/IP 的分层管理

    TCP/IP 协议族按层次分别分为以下 4 层:应用层、传输层、网络层和数据链路层。

    应用层:应用层决定了向用户提供应用服务时通信的活动。

    传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。

    网络层:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。

    数据链路层:用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。

二.HTTP运作方式

  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 .<------响应链

  并非所有响应都可以缓存,有些请求可能会包含对缓存行为有特殊要求的修饰符。

原文地址:https://www.cnblogs.com/z1105/p/10467071.html