• HTTP 协议是一种请求/响应型的协议


    HTTP 协议是一种请求/响应型的协议。 客户端给服务器发送请求的格式是一个请求方法

    (request method),URI,协议版本号,然后紧接着一个包含请求修饰符(modifiers),客
    户端信息,和可能的消息主体的类MIME(MIME-like)消息。服务器对请求端发送响应的格式
    是以一个状态行(status line),其后跟随一个包含服务器信息、 实体元信息和可能的实体主体
    内容的类MIME(MIME-like)的消息。其中状态行(status line)包含消息的协议版本号和一
    个成功或错误码。HTTP和MIME之间的关系如附录19.4节所阐述。

    大部分的HTTP通信是由用户代理(user agent)发起的,由应用于一个源服务器资源的请求
    构成。 最简单的情形,这可以通过用户代理(UA)和源服务器(O)之间的单一连接(v)来实
    现。
    请求链(Request chain)-------------------------------------- ----------
    用户代理(UA)----------------单一连接(v)--------------源服务器(O)
    <----------------------------------------------------------响应链(response chain)

    有可能在请求/响应链中出现一个或多个中间者(intermediares),这是比较复杂的情形。常见
    的中间者(intermediares)有三种:代理(proxy),网关(gateway)和隧道(tunnel)。代
    理(proxy)是一种转发代理(a forwarding agent),它接收绝对URI(absoulute url,相对
    于相对url)请求,重写全部或部分消息,然后把格式化后的请求发送到URI指定的服务器上。
    网关是一种接收代理(receiving agent),它充当一个在服务器之上的层(layer),必要时它

    会把请求翻译成为下层服务器的协议。隧道不改变消息而充当两个连接之间的中继点;它用于
    通信需要穿过中间者(如防火墙)甚至当中间者不能理解消息内容的时候。
    请求链(request chain)----------------------------------------
    UA-----v-----A-----v-----B-----v-----C------------v-----------------O
    <----------------------------------------响应链(response chain)

    上图显示了用户代理(user agent)和源服务器之间的三个中间者(A,B和C)。整条链的请
    求或响应将会通过四个被隔离开的连接。这个不同点很重要,因为某些HTTP通信选项有可能
    只能采用最近的非隧道邻接点的连接,有可能只采用链的端点(end-point),或者也有可能只
    采用于链上所有连接。 图表尽管是线性的,每个参与者可能忙于多个并发的通信。 例如,B可以
    接收来自不是A的许多客户端的请求,并且/或者可以把请求转发到不是C的服务器,与此同
    时C正在处理A的请求。

    通信中任何非隧道成员都可能会采用一个内部缓存(internal cache)来处理请求。如果沿着链
    的成员有请求已缓存的响应,请求/响应链就会大大缩短。下图阐明了一个最终请求响应链,假
    定B拥有一个来自于O(通过C)的以前请求响应的缓存副本,并且此请求的响应并未被 UA
    或A缓存。

    请求链(request chain)---------->
    UA-----v----------A-----v-----B-----C----O
    <---------响应链 (response chain)

    并不是所有的响应都能有效地缓存,一些请求可能含有修饰符(modifiers),这些修饰符对缓
    存动作有特殊的要求。HTTP对缓存行为(behavior)和可缓存响应(cacheable responses)
    的定义在第13章定义。

    实际上,目前万维网上有多种被实践和部署的缓存和代理的体系结构和配置。这些系统包括节
    省带宽的缓存代理(proxy cache)层次(hierarchies)系统,可以广播(broadcast)或多播
    (multicast)缓存数据的系统,通过 CD-ROM发布缓存数据子集的机构,等等。HTTP系统
    (http system)会被应用于宽带连接的企业局域网中的协作,并且可以被用于PDAs进行低耗
    无线断续连接访问。HTTP1.1的宗旨是为了支持各种各样的已经部署的配置,同时引进一种协
    议结构,让它满足可以建立高可靠性的web应用程序,即使不能达到这种要求,也至少可以可

    靠的定位故障。

    HTTP通信通常发生在TCP/IP连接上。 默认端口是TCP 80,不过其它端口也可以使用。但并不
    排除HTTP协议会在其它协议之上被实现。HTTP仅仅期望的是一个可靠的传输(译注:HTTP
    一般建立在传输层协议之上);所以任何提供这种保证的协议都可以被使用;协议传输数据单
    元(transport data unit)与HTTP/1.1请求和响应的消息结构之间的映象已经超出了本规范的
    范围。

    大部分 HTTP/1.0 的实现都是对每个请求/响应交换(exchange)产生一个新的连接。而
    HTTP/1.1中,一个连接可以用于一个或更多请求/响应交换,虽然连接可能会因为各种原因中

    摘自 RFC2616

  • 相关阅读:
    linux 操作 I/O 端口
    linux I/O 端口分配
    大数问题:求n的阶乘
    POJ 2586 Y2K Accounting Bug
    每天一点儿Java--ComboBox
    android的一些控件
    解决Linux(ubuntu),windows双系统重装后恢复开机选单
    Mysql数据备份与恢复
    log4net 存储到oracle 调试 Could not load type [log4net.Appender.OracleAppender]
    POJ 2533 Longest Ordered Subsequence
  • 原文地址:https://www.cnblogs.com/senion/p/2225826.html
Copyright © 2020-2023  润新知