资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Section 2 B/S,交互协议,HTTP,第,2,章,HTTP,的交互模型,谭晓阳,txy,jsft,.com,南京航空航天大学计算机系,WEB,技术和应用开发,HTTP,的交互模型,本讲内容,1,宏观运作原理,请求,/,响应协议,客户与服务器通信的三种方式,2,内部操作过程,基于网络层的,HTTP,交互过程,一个实际的例子,1,宏观运作原理,1.1,请求,/,响应协议,HTTP,协议是基于请求响应模式的。,客户机向服务器发送请求,(,(,Request,Request,),),绝大多数的,HTTP,通信都是由客户发起的,包含一个作用于服务器上某个资源的请求(例如下载服务器上的文件)。请求包含以下内容:,?,请求方法(,method,),,例如:,get,。,?,统一资源标识符(,URI,),,例如:,www.,nju,.,edu,.,cn,/index.,htm,。,?,协议版本号(,version,),,通常为,HTTP/1.0,或,HTTP/1.1,。,?,MIME,格式的消息,包括:请求限定符(,modifier,)、,客户机信息(,client information,),,还可能会有正文内容(,body content,)。,1,宏观运作原理,服务器向客户发送响应,(,(,Response,Response,),),服务器在收到客户的请求后,按照客户的要求对指定资源进,行适当处理(例如检索到客户所需的文件),并给予相应的响应。,响应包含以下内容:,?,一个状态行,包括:,消息的协议版本号(,version,),一个成功或错误的状态码(,success or error code,)。,?,MIME,格式的消息,服务器信息(,server information,),实体元信息(,meta,-information,),还可能会有实体的正文内容(,body content,)。,1,宏观运作原理,1.2,客户与服务器通信的三种方式,直接通信,(,(,Direct Communication,Direct Communication,),),这种方式是一种最简单的情况,通过用户代理,(,UA),和源服务器,(,O),之间的单个连接来完成,如图所示。,1,宏观运作原理,通过中介的,HTTP,通信,中介有三种常见的形式:,代理,代理,(,Proxy,)、,网关,网关,(,Gateway,),和,隧道,隧道,(,Tunnel,)。,Proxy,Proxy,是一种将请求转发(,forwarding,),的代理(,agent,),接收客户的请求,在对该请求进行局部或者全部的修改后,将请求转发给,URI,所指示的服务器。,服务器把响应发回给,Proxy,Proxy,然后把响应再发给客户端。,1,宏观运作原理,通过中介的,HTTP,通信(续),?,Gateway,:,Gateway,是一种接收(,receiving,),代理,通常作为两类服务器,(,e.g,:,Web,和,Email,),的中介,将一类服务器所支持的协议翻,译为另一类服务器所支持的协议。,示例:,HTTP,POP3,网关在收到客户的请求(,HTTP,协议)时,,对其进行转换,并以其它协议(,POP3,),的格式提交给,POP3,服务器;当收到,POP3,服务器的响应后,将其以,HTTP,的格式,返回给客户。,?,Tunnel,Tunnel,是两个连接之间的中继系统,与,Proxy,和,Gateway,不同,,它不对,HTTP,消息作任何修改。当客户与服务器的通信需要通,过防火墙(,firewall,),等中介系统时,就可以使用,Tunnel,。,1,宏观运作原理,通过中介的,HTTP,通信(续),通常,可以以任意的方式来组合各种中介系统,从而构成不,同的应用解决方案。如图所示。,在用户代理(,UA,),和源服务器(,O,),之间有三个中介(,A,B,和,C,)。,一个通过整个链的请求或响应消息必须经过四个独立的连接。,尽管该图中的连接是线性的,事实上,每个参与者都可能进行多,重的、并发的通讯。例如,,B,还可以从其它许多客户机接收请求,,而不仅仅局限于,A,;,并将这些请求传送给其它的服务器,而不仅,仅局限于,C,;,这些工作可以同时以并发的方式完成。,1,宏观运作原理,1,宏观运作原理,使用缓存的,HTTP,通信,在,HTTP,通信中的任何一个成员,包括:客户代理、服务器、中,介(除隧道外),均可以采用内部的缓存来处理客户请求。,如果,HTTP,通信链中的一个成员已经对某个请求的响应进行了缓,存,那么它就不再将该请求向前传递,而直接将响应返回给用户,,从而缩短请求,/,响应链。,优点:这样的处理方式能减少请求响应链路上的网络负载,提,高响应速度。,在用户经常提出同样的请求,或者多个用户具有类似请求的情况,下,该方式非常有用。例如:公司的,Intranet,上,或者校园网的网,络中心,都可以设置,Proxy,,,对于大家经常下载的公用软件和资,料,可以直接从,Proxy,上获得,这样可以加快下载速度,降低网,络费用。,1,宏观运作原理,下图是针对一个未被,UA,或,A,所缓存的请求,而,B,中曾经对该请求的响应进行过缓存。,B,之所以会对该请求进行缓存,可能是该用户或其它用户在以前提交过同样的请求。,2,内部操作过程,2.1,基于网络层的,HTTP,交互过程,HTTP,是应用层协议,它从应用的角度规定了客户和服务器,在通信时的消息格式和语义,而它的实现必须建立在其下的网络,层之上。,下面,以,Socket,这一最常用的网络层编程接口为例来说明客,户和服务器是如何通过网络层来实现,HTTP,交互。,整个过程包括四个步骤:,建立连接,发送请求,发送响应,关闭连接。,2,内部操作过程,建立连接,HTTP,服务器始终在,HTTP,端口守候客户的连接要求。客户打,开一个套接字(,Socket,),并把它绑定在一个随机选择的端口上,,然后通过该套接字向服务器的,HTTP,端口发出连接要求。当有,一个连接要求到达时,服务器生成一个新的套接字,然后产生,一个新的过程或线程来处理用户的请求。,2,内部操作过程,建立连接(续),2,内部操作过程,发送请求,在客户和服务器成功建立连接后,客户机可以使用,Socket,接,口中的,send,、,write,等,API,将请求消息发送出去,而服务器则可以,使用,Socket,接口中的,recv,、,read,等,API,来接收请求消息。,发送响应,服务器在处理完客户的请求后,要向客户机发送响应消息。,此时可使用,Socket,接口中的,send,、,write,等,API,将响应消息发送出去,,而客户则使用,Socket,接口中的,recv,、,read,等,API,来接收响应消息。,注意:将客户的请求和服务器的响应正确地发送给对方是网络层,的任务,而为了确保客户和服务器能够正确地理解对方传递的消,息则是,HTTP,这一应用层协议的任务,即需要规定客户和服务器,双方所发送消息的格式和语义。,2,内部操作过程,关闭连接,在一次请求,/,响应完毕后,客户和服务器双方都可以通过关,闭套接字来结束,HTTP,交互。,HTTP/1.0,中仅支持非持久连接,因此,在一次请求,/,响应完毕后,,客户或服务器将通过关闭套接字来结束,HTTP,交互。,在,HTTP/1.1,中,连接的缺省类型为持久连接,即在客户与服务器,建立连接后,可以发送多个请求和响应,直到客户或者服务器显,式地关闭该连接。之后,客户在发送新的请求之前,必须与服务,器重新建立连接。,使用持久连接具有以下优点:,节省宿主机的开销,减少用户的等待时间。,将减少网络流量,缓解网络堵塞。,客户的请求和服务器的响应可以以流水线(,pipeline,),的方式,运作。这样可以提高连接的使用效率,减少用户的等待时间。,2,内部操作过程,2.2,一个实际的例子,下面,我们给出一个实际的例子,通过分析客户,/,服务器在,HTTP,交互中发送的数据包来进一步说明,HTTP,作为一个网络层之上的应用是如何利用,TCP/IP,协议所提供的可靠通信服务的。,2,内部操作过程,说明:在实际情况下,上述数据包是相互混杂的。此处为了清晰起见,将它们分开列出。,2,内部操作过程,2,内部操作过程,从该例子中可以看出:,两个,TCP,连接是独立的,它们在各自的数据传输完毕后分别结束。,客户与服务器的交互过程中,除了传输的,HTML,文件和图像文件是有效负载以外,其它的数据包是为了传输文件而发送的额外负载。,即使不传输任何文件,客户和服务器之间为了建立和关闭连接至少需要交换,7,个数据包,这占据,HTTP,协议开销中的一大部分。,THE END,Any suggestion will be welcome,and appreciated,txy,jsft,.com,Review,1 教学目标,从宏观上掌握,HTTP,协议运作的基本原理,包括:请求/响应协议、客户/服务器通信的三种模式。,从微观上理解客户/服务器利用,HTTP,协议进行交互的内部操作过程。,2 知识点,HTTP,是一种请求/响应协议。,HTTP,通信的三种模式:简单通信、通过中介系统的通信、使用缓存的通信。,客户/服务器利用,HTTP,协议进行交互的内部操作过程,包括:建立连接、发送请求、发送响应、关闭连接。,
展开阅读全文