HTTP协议初步

Posted T2科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议初步相关的知识,希望对你有一定的参考价值。

HTTP协议初步

— hypertext transfer protocol —



一.简介

1.HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。

2.HTTP是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

3.HTTP基于TCP/IP通信协议来传递数据。



二.特点

1.支持客户/服务器模型(C/S)

2.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。(当今多数服务器支持Keep-Alive功能,使用服务器支持长连接,解决无连接的问题)

3.无状态:无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即客户端发送HTTP请求后,服务器根据请求,会给我们发送数据,发送完后,不会记录信息。(使用cookie机制可以保持session,解决无状态的问题)

4.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。



HTTP协议初步


三.版本

1.HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。

2.HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。




HTTP基本术语

连接(connection)

为通信而在两个程序间建立的传输层虚拟电路。

消息(message)

HTTP通信中的基本单元。它由一个结构化的八比特字节序列组成并通过连接得到传送。

请求(request)

一种HTTP请求消息

响应(response)

一种HTTP响应消息

资源(resource)

一种网络数据对象或服务资源可以以多种表现方式(例如多种语言,数据格式,大小和分辨率)或者根据其它方面而而不同的表现形式。

实体(entity)

实体是请求或响应的有效承载信息。一个实体包含元信息和内容,元信息以实体头域(entity-header field)形式表示,内容以消息主体(entity-body)形式表示。在第7节详述。

表现形式 (representation)

一个响应包含的实体是由内容协商(content negotiation)决定的。有可能存在一个特定的响应状态码对应多个表现形式。

内容协商(content negotiation)

当服务一个请求时选择资源的一种适当的表示形式的机制(mechanism)任何响应里实体的表现形式都是可协商的(包括出错响应).

变量(variant)

在任何给定时刻,一个资源对应的表现形式(representation)可以有一个或多个(译注:一个URI请一个资源,但返回的是此资源对应的表现形式,这根据内容协商决定)。每个表现形式(representation)被称作一个变量。使用变量这个术语并不是意味着资源(resource)是必须由内容协商决定的.

客户端(client)

为发送请求建立连接的程序.

用户代理(user agent)

初始化请求的客户端程序。常见的如浏览器,编辑器,蜘蛛(网络穿越机器人),或其他的终端用户工具.

服务器(Server)

服务器是这样一个应用程序,它同意请求端的连接,并发送响应(response)。任何给定的程序都有可能既做客户端又做服务器;我们使用这些术语是为了说明特定连接中应用程序所担当的角色,而不是指通常意义上应用程序的能力。同样,任何服务器都可以基于每个请求的性质扮演源服务器,代理,网关,或者隧道等角色之一。

源服务器(Origin server)

存在资源或者资源在其上被创建的服务器(server)被成为源服务器(origin server)。 

代理( Proxy)

代理是一个中间程序,它既担当客户端的角色也担当服务器的角色。代理代表客户端向服务器发送请求。客户端的请求经过代理,会在代理内部得到服务或者经过一定的转换转至其他服务器。一个代理必须能同时实现本规范中对客户端和服务器所作的要求。透明代理(transparent proxy)需要代理授权和代理识别,但不修改请求或响应。非透明代理(non-transparent  proxy)需修改请求或响应,以便为用户代理(user agent)提供附加服务,附加服务包括组注释服务,媒体类型转换,协议简化,或者匿名过滤等。除非透明行为或非透明行为经明确指出,否则,HTTP代理既是透明代理也是非透明代理。

网关(gateway)

网关其实是一个服务器,扮演着代表其它服务器为客户端提供服务的中间者。与代理(proxy)不同,网关接收请求,仿佛它就是请求资源的源服务器。请求的客户端可能觉察不到它正在同网关通信。

隧道(tunnel)

隧道也是一个中间程序,它一个在两个连接之间充当盲目中继(blind relay)的中间程序。一旦隧道处于活动状态,它不能被认为是这次HTTP通信的参与者,虽然HTTP请求可能已经把它初始化了。当两端的中继连接都关闭的时候,隧道不再存在。

缓存(cache)

缓存是程序响应消息的本地存储。缓存是一个子系统,控制消息的存储、取回和删除。缓存里存放可缓存响应(cacheable response)为的是减少对将来同样请求的响应时间和网络带宽消耗。任一客户端或服务器都可能含有缓存,但高速缓存不能被一个充当隧道(tunnel)的服务器使用。

可缓存(cacheable)

我们可以说响应(response)是可缓存的,如果一个缓存(cache)为了响应后继请求而被允许存储响应消息(response message)的副本。确定HTTP响应的缓存能力(cacheability)。即使一个资源(resourse)是可缓存的,也可能存在缓存是否能利用缓存副本的约束。

第一手的(first-hand)

如果一个响应直接从源服务器或经过若干代理(proxy),并且没有不必要的延时,最后到达客户端,那么这个响应就是第一手的(first-hand)。

如果响应被源服务器(origin server)验证是有效性(validity)的,那么这个响应也同样是第一手的。

明确过期时间(explicit expiration time)     

是源服务器希望实体(entity)如果没有被进一步验证(validation)就不要再被缓存(cache)返回的时间。

启发式过期时间(heuristic expiration time)      

当没有明确终止时间(explicit expiration time)可利用时,由缓存所指定的终止时间.

年龄(age)

一个响应的年龄是从被源服务器发送或被源服务器成功确认的时间点到现在的时间。

保鲜寿命(freshness lifetime)

一个响应产生的时间点到过期时间点之间的长度。

保鲜(Fresh)    

如果一个响应的年龄还没有超过保鲜寿命(freshness lifetime),它就是保鲜的.

陈旧(Stale)

一个响应的年龄已经超过了它的保鲜寿命(freshness lifetime),就是陈旧的.

语义透明(semantically transparent)

缓存(cache)可能会以一种语意透明(semantically transparent)的方式工作。这时,对于一个特定的响应,使用缓存既不会对请求客户端产生影响也不会对源服务器产生影响,缓存的使用只是为了提高性能。当缓存(cache)具有语意透明性时,客户端从缓存接收的响应跟直接从源服务器接收的响应完全一致(除了使用hop-by-hop头域)。

验证器(Validator)

验证器其实是协议元素(例如:实体头(entity tag)或最后更改时间(last-modified time)等),这些协议元素被用于识别缓存里保存的数据(即缓存项)是否是源服务器的实体的副本。

上游/下游(upstream/downstream)

上游和下游描述了消息的流动:所有消息都从上游流到下游.

向内/向外(inbound/outbound)

向内和向外指的是消息的请求和响应路径:"向内"即"移向源服务器","向外"即"移向用户代理(user agent)". 




以上是关于HTTP协议初步的主要内容,如果未能解决你的问题,请参考以下文章

HTTP协议初步解析

爬虫学习之HTTP协议初步了解

web框架简介, 以及 HTTP协议初步了解

初步了解HTTP

http协议初探

三PHP基础——HTTP协议 & 文件编程