HTTP专业术语,你了解多少?
HTTP协议是什么?
超文本传输协议(HTTP)是一种为分布式、协作式的,面向应用层的超媒体信息系统。它是一种通用的、无状态(stateless)的协议,除了应用于超文本传输外,它也可以应用于如名称服务HTTP是建立在统一资源标识符(URI)的约東上的,作为一个地址(URL)或名称(URN)以指定被一个方法使用的资源。消息是以一种类似于互联网邮件消息格式来传输的,互联网消息格式定义于多目的互联网邮件扩展(MIME)里。它也是用手用户代理(useragents)和其他互联网系统的代理网关之间通信的通信协议,HTTP允许不同的应用程序对资源进行基本的超媒体访问。
HTTP/1.0没有充分考虑到分层代理、缓存以及持久连接和虚拟主机的需求的影响。并且随着不完善的HTTP/1.0应用程序的激增,迫切需要一个新的版本,以便使两个通信程序能够确定彼此的真实能力。此规范定义的协议叫作“HTTP/1.1”,这个协议与HTTP/1.0相比,更为严格,以确保各个协议的特征得到可靠实现。
以上官网定义会显得非常难以理解。要明白HTP协议,测试人员必须要先理解一些术语的含义。它们是HTTP通信中各参与者和对象扮演不同角色的说明。
连接(connection)
为通信而在两个程序间建立的传输层虚拟电路。
消息(message)
HTTP通信中的基本单元。它由一个结构化的八比特字节序列组成,与第4章定义的句法相
匹配,并通过连接得到传送。
请求(request)
种HTTP请求消息,从客户端到服务器的消息叫请求消息。
响应(response)
种HTTP响应消息,从服务器返回到客户端的消息叫响应消息
资源(resource)
一种网络数据对象或服务。资源可以有多种表现方式(如多种语言、数据格式、大小和分辨
率)或者是根据其他方面而不同的表现形式。
实体(eniy)
实体是请求或响应的有效承载信息。一个实体包含元信息和内容,元信息以实体头域(entityheaderfield)形式表示,内容以消息主体(entity-bocy)形式表示
表现形式(representation)
一个响应包含的实体是由内容协商(contentnegotiation)决定的。有可能存在一个特定的响应状态码对应多个表现形式。这里向大家推荐一个测试交流裙:1007119548。
内容协商(contentnegotiation)
当服务一个请求时选择资源的一种适当的表示形式的机制(mechanism)。任何响应里实体的表现形式都是可协商的(包括错误响应)。
变量(variant)
在某个时刻,一个资源对应的表现形式(representation)可以有一个或多个(译注:一个URI请求一个资源,但返回的是此资源对应的表现形式,这根据内容协商决定)。每个表现形式(representation)被称作一个变量。“变量”这个术语的使用并不意味着资源(resource)是由内容协商决定的。
客户端(client)
为发送请求建立连接的程序。
用户代理(useragent)
初始化请求的客户端程序。常见的如览器、编辑器、蜘蛛(可网络穿越的机器人),或其他的终端用户工具。
服务器(Server)
服务器是这样一个应用程序,它同意请求端的连接,并发送响应(response)。任何给定的程序都有可能既做客户端,又做服务器。我们使用这些术语是为了说明特定连接中应用程序所担当的角色,而不是指通常意义上应用程序的能力。同样,任何服务器都可以基于每个请求的性质扮演源服务器、代理、网关,或者隧道等角色之一。
源服务器(Originserver)
存在资源或者资源在其上被创建的服务器(Server)被称为源服务器(Originserver)
代理(Proxy)
代理是一个中间程序,它既可以担当客户端的角色,也可以担当服务器的角色。代理代表客户端向服务器发送请求。客户端的请求经过代理,会在代理内部得到服务或者经过一定的转换转至其他服务器。一个代理必须能同时实现本规范中对客户端和服务器所做的要求。透明代理(transparentproxy)需要代理认证和代理识别,而不修改请求或响应。非透明代理(nontransparentproxy)需修改请求或响应,以便为用户代理(useragent)提供附加服务,附加服务包括组注释服务、媒体类型转换、协议简化或者匿名过滤等。除非透明行为或非透明行为被显式地声明,否则,HTTP代理既是透明代理,也是非透明代理。
网关(gateway)
网关其实是一个服务器,扮演着代表其他服务器为客户端提供服务的中间者。与代理(proxy)不同,网关接收请求,仿佛它就是请求资源的源服务器。请求的客户端可能觉察不到它正在同网关通信。
隧道(tunnel)
道也是一个中间程序。它是一个在两个连接之间充当目中维(blindrelay)的中间程序处于活动状态。它不能被认为是这次P通信的参与者、虽然TP请求可能已经把它初始化了。当两端的中维连接都关闭的时候,道不再存在。
缓存(cache)
缓存是程序响应消息的本地存储。缓存是一个子系统,控制消息的存储、获取和除。缓存里存放可缓存的响应(cacheableresponse),为的是减少对将来同样请求的响应时间和网络带宽消耗。任一客户端或服务器都可能含有缓存,但缓存不能存在于一个充当隧道(tunnel)的服务器里。
可缓存的(cacheable)
响应(response)是可缓存的是指可以将这个响应缓存(cache)保存为副本,之后能用此副本继续响应后续的请求。但即使一个资源(resource)是可缓存的,也可能会出现由于请求本身的约束造成缓存副本不能被使用的情况。
第一手的(first-hand)
如果一个响应直接从源服务器或经过若干代理(proxy),并且没有不必要的延时,最后到达客户端,那么这个响应就是第一手的(first-hand)。如果响应通过源服务器(originServer)验证是有效性(validity)的,那么这个响应也同样是第一手的。
显式过期时间(explicitexpirationtime)
显式过期时间是源服务器认为实体(entity)在没有被进一步验证(validation)的情况下,缓存(cache)不应该利用其去响应后续请求的时间(译注:也就是说,当响应的显式过期时间达到后,缓存必须要对其级存的副本进行重验证。否则就不能利用此副本去响应后续请求)。
启发式过期时间(heuristicexpirationtime)
当没有显式过期时间(explicitexpirationtime)可利用时,由缓存指定过期时间。
年龄(age)
一个响应的年龄是从被源服务器发送或被源服务器成功验证到现在的时间。
保鲜寿命(freshnesslifetime)
一个响应产生到过期之间的时间
保鲜(Fresh)
如果一个响应的年龄还没有超过保鲜寿命(freshnesslifetime),那么它就是保鲜的。
陈旧(Stale)
一个响应的年龄已经超过了它的保鲜寿命(freshnesslifetime),那么它就是陈旧的。
语义透明(semanticallytransparent)
缓存(cache)可能会以一种语意透明(semanticallytransparent)的方式工作。这时,对于一个特定的响应,使用缓存既不会对请求客户端产生影响,也不会对源服务器产生影响,缓存的使用只是为了提高性能。当缓存(cache)具有语意透明时,客户端从缓存接收的响应跟直接从源服务器接收的响应完全一致(除了使用hop-by-hop头域)。
验证器(Validator)
验证器其实是协议元素如实体标签(entitytag)或最后修改时间(last-modifiedtime)等,这些协议元素被用于识别缓存里保存的副本(缓存项)是否等价于源服务器的实体的副本。
上游下游(upstream/downstream)
上游和下游描述了消息的流动:所有消息都是从上游流到下游的。
内向外向(inbound/outbound)
内向和外向指的是消息的请求和响应路径:“内向”即“移向源服务器”,“外向”即“移向用户代理(useragent)
把HTTP协议的官方定义进行归纳,得出HTTP协议的4个关键点。
(1)HTTP是建立在TCP/IP协议之上,面向应用层的超文本传输协议。
(2)它由请求和响应组成,完全符合标准的客户端服务器的请求响应模型。
(3)协议很轻便简单,并且请求与请求间没有关联,是无状态性的协议。
(4)为了弥补这种无状态性就需要使用HTP协议的扩展Cookie等方式建立关联。
结语
感谢您的观看,如有不足之处,欢迎批评指正。
获取资料
本次给大家推荐一个免费的学习群,里面概括Python/性能/接口/安全/自动化软件测试以及面试资源等。
对测试感兴趣的同学,欢迎加入Q群:1007119548,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
最后,祝大家早日学有所成。