HTTP协议的基本工作方式

发布时间:2020-07-07 17:09:47   来源:网络


HTTP协议本身到底是如何工作的?请求和响应消息中都包含什么样的信息?这些信息是如何影响客户端、服务器、网关、代理的工作的?我们又怎么利用这些信息实现Web的加速服务?接下来将通过对HTTP协议进行详细的剖析来寻找这些答案。
 
HTTP协议是一个标准的“请求+响应”协议,即客户端与服务器建立连接后,就向服务器发送一个HTTP请求,告诉服务器客户要操作什么,对什么进行操作以及怎么操作。服务器在完成请求分析后,通知客户端能不能做,为什么不能做等。为了实现这种信息交互,HTTP协议规定请求消息中包含了请求方法(比如获取某个对象、删除某个对象)、统一资源标识符(操作对象的位置和名称)、HTTP协议版本(比如版本1.1)以及其他相关信息,而服务器的响应消息中包含了HTTP协议版本、成功或者错误的代码以及其他相关信息。
 
既然知道了HTTP是一种“请求+响应”的协议,接下来就看看协议中请求和响应是如何实现的。在详细介绍前,我们还是先了解一下HTTP协议中定义的几个关键概念。
 
1.连接(Connection):为通信而在两个程序间建立的传输层虚拟链路,如TCP连接。
 
2.消息(Message):HTP通信的基本单位,包括一个结构化的八元组序列并通过连按传输。
 
3.请求(Request):一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号,比如GET/ netty/ movie/movie. shtmlHTTP/1.1。
 
4.响应(Response):一个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)以及其他一些信息,比如文档的MME类型。
 
5.资源(Resource):由URI标识的网络数据对象或服务,比如存储在服务器中的一个HTML文件。
 
6.实体(Entity):数据资源或来自服务资源响应的一种特殊表示方法,它可能被包围在一个请求或响应信息中,是请求或响应消息的有效承载信息。个实体包括实体头信息和实体内容。实体头信息包含与实体内容相关的原数据信息,包括: Allow、Content-Base、content-encoding、content-language、content-length、content-location、content-md5、content-range、content-type、ETag、Expires、Last- Modified、extension- header等。其中的extension- header允许客户端定义新的实体头信息。实体内容可以是一个经过编码的字节流,它的编码方式由实体头信息中的content-encoding或Content-Type定义,它的长度由实体头信息中的content-length或 Content- Range定义。响应消息中的实体头信息Content-type指示实体内容的编码方式是超文本标记语言文本。
 
7.客户端(Client):为发送HTTP请求而建立连接的应用程序,比如浏览器。
 
8.服务器(Server):一个接受客户端连接请求并对请求返回信息的应用程序。
 
9.源服务器(Origin server):是一个特定资源可以在其上驻留或被创建的服务器。在Web访问中,源服务器通常是编辑产生网页并保持其最新变动的源站。
 
10.代理〔Proxy):是一个处于客户端和服务器之间的中间程序。它对于客户端来说可以充当一个“服务器”,为客户端直接提供服务;对服务器来说可以充当一个“客户端”,在接收到其他客户端的请求后,自身再以一个客户端的方式向源服务器发起请求。从代理对请求和响应的处理来看,代理可以表现为透明方式和非透明方式。透明方式不会对请求和响应进行修改,但可能需要对代理服务器进行认证和授权;而非透明方式则需要修改请求和响应,以便为用户代理提供附加服务,包括注释、类型转换、协议简化、类型过滤等。
 
11.网关(Gateway):也是一个作为中间媒介的服务器。代理主要代表客户端发起请求和提供服务,而网关则是代表源服务器来接收请求和提供服务,发出请求的客户端并没有意识到它在同网关打交道,而是感觉从源服务器获得了响应。
 
12.隧道(Tunnel):是作为两个连接中继的中介程序员。尽管隧道可能由一个HTTP请求初始化,但通常认为它不属于HTTP通信。当被中继的连接两端关闭时,隧道也就随之消失了。比如主机A在防火墙内,主机B在防火墙外防火墙只允许80端口通信,所以主机B如果要 Telnet主机A(端口23),需要在B启动一个隧道程序客户端以及在A启动隧道程序服务器端,这时B与隧道客户端建立连接进行 Telnet通信,隧道程序再把通信内容向A的80端口发送,从而通过防火墙,隧道服务器端从80端口收到内容后再转交给23端口。
 
13.縵存(Cache):是位于源服务器和客户端之间的服务单元。缓存会根据用户代理的请求从服务器获取相关的资源,在为用户代理提供服务的同时也将资源保存在本地,以便后续为相同的请求直接提供服务,而无须再从源服务器或其他服务器获取相关资源。这些保存属于原文件的副本,可以是HTML文件,也可以是图片、视频等多媒体对象。
 
了解了上述基本概念后,接下来详细分析HTTP的请求和响应。比如我们现在打开IE浏览器,在地址栏里输人htp:/ www..com/netty/i_move.movie.shtml,然后按回车键,在网络正常的情况下会显示标题为“电影天翼视讯”的页面。整个过程就是用户利用用户代理(IE)发出一个HTTP请求,请求远端HTTP服务器上的www..com主机发送过来一个web页面,我们通过抓包软件Wireshark捕捉到了这次请求和响应的全过程。
 
CDN互联专业提供国内外高防cdn加速服务
 
猜你喜欢
CDN话题