LectureWeb应用与H.ppt
Lecture?,Web应用与HTTP,历史上,先后问世了多个具有重大社会影响的电子通信技术:,计算机网络概述,Web应用与HTTP,一是19世纪70年代发明的电话。它对社会有重大的影 响有好的也有坏的。,三是改变了人们的生活与工作方式的Web技术。,二是20世纪20-30年代问世的广播收音机/电视机。它对 社会同样有重大的影响有好的也有坏的。,Web还有许多大家喜爱的其他精彩特性:1、任何个人都可以极其容易地在Web上公布任何 信息;2、任何人都可能以极低的成本成为发行人;3、超链接和搜索引擎;4、图形化的用户界面;,计算机网络概述,Web应用与HTTP,Web最吸引用户的是它的按需(on demand)操作性。,5、表单、Java小应用程序、Active X控件以及 其他许多设备使得我们能与Web页面和站点交 互;6、Web还越来越普遍地提供存放在因特网中、可 按需访问(即点播)的大量音频和视频材料 的菜单接口。,计算机网络概述,Web应用与HTTP,Web page(也称为文档)由多个对象构成。对象可仅仅是由单个URL寻址的文件(如 HTML文件、JPEG图像、GIF图像、Java小应用程序、语音片段等)。,计算机网络概述,Web应用与HTTP,3.2.1 HTTP概述,Web的应用层协议HTTP是Web的核心。,但大多数Web页面由单个基本HTML文件和若干个所引用的对象构成。,3.2.1 HTTP概述 Web的应用层协议HTTP是Web的核心。HTTP在Web的客户程序和服务器程序中得以实现。运行在不同端系统上的客户程序和服务器程序通过交换HTTP消息彼此交流。HTTP定义这些消息的结构以及客户和服务器如何交换这些消息。术语:Web page(也称为文档)由多个对象构成。对象可仅仅是由单个URL寻址的文件,例如HTML文件、JPEG图像、GIF图像、Java小应用程序、语音片段等。大多数Web页面由单个基本HTML文件和若干个所引用的对象构成。,计算机网络概述,Web应用与HTTP,基本HTML文件使用相应的URL来引用本页面的其他对象。每个URL由存放该对象的服务器主机名和该对象的路径名两部分构成。例如,在如下的URL中:/someDepartment/picture.gif,服务器主机名,路径名,计算机网络概述,Web应用与HTTP,EX:如果一个Web页面包含HTML文本和5个JPEG图像,那么它由6个对象构成,即一个基本HTML文件加5个图像。,文件名,HTTP定义Web客户(即浏览器)如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户。,图3.2.1 HTTP的请求-响应行为,HTTP Request,HTTP Request,HTTP Response,HTTP Response,Server runingNCSA Web Server,PC runingExplorer,MAC runingNavigator,计算机网络概述,Web应用与HTTP,HTTP/1.0,计算机网络概述,Web应用与HTTP,HTTP有两个版本:,HTTP/1.1,它们都把TCP(port 80)作为底层的传输协议。,HTTP客户首先发起建立与服务器TCP连接。,计算机网络概述,Web应用与HTTP,一旦建立连接,浏览器进程和服务器进程就可以 通过各自的套接字来访问TCP。,客户或服务器一旦把某个消息送入各自的套接 字,这个消息就完全落入TCP的控制之中。,(2)TCP还使用一个拥塞控制机制。该机制迫使每个新的TCP连接一开始以相对缓慢的速率传输数据,然而只要网络不拥塞,每个连接可以迅速上升到相对较高的速率。这个慢速传输的初始阶段称为缓启动(slow start)如下图。,计算机网络概述,Web应用与HTTP,(1)TCP给HTTP提供一个可靠的数据传输服务;从中可看到分层网络体系结构的一个明显优势 HTTP不必担心数据会丢失,也无需关心TCP如何从数据的丢失和错序中恢复出来的细节。这些是TCP和协议栈中更低协议层的任务。,慢速启动阶段的TCP时序 TCP slot in slow start phase,Initiate TCPconnection,Requestobject,First window=S/R,Second window=2S/R,Third window=4S/R,Fourth window=8S/R,Completetransmission,RTT,Objectdelivered,Sever time,client time,(3)HTTP是一个无状态的协议(stateless protocol)。因为在向客户发送所请求文件的同时,服务器并没有存储关于该客户的任何状态信息。即便某个客户在几秒钟内再次请求同一个对象,服务器也不会响应说:自己刚刚给它发送了这个对象。相反,服务器重新发送这个对象,因为它已经彻底忘记早先做过什么。HTTP服务器不维护客户的状态信息。,计算机网络概述,Web应用与HTTP,非持久连接(non-persistent connection),,如:HTTP/1.1 则默认使用持久连接。,如:HTTP/1.0,计算机网络概述,Web应用与HTTP,3.2.2 非持久连接和持久连接,持久连接(persistent connection)。,非持久连接 每次服务器发出一个对象后,相应的TCP连接就被关闭,即每个TCP连接只用于传输一个请求消息和一个响应消息。,计算机网络概述,Web应用与HTTP,假设某页面由1个基本HTML文件和10个JPEG图像构成,而且所有这些对象都存放在同一台服务器主机中。再假设该基本HTML文件的URL为:www.someSchool.edu/someDepartment/index.html。,1.HTTP客户初始化一个与服务器主机中的HTTP服务器的TCP连接。,则具体步骤为:,2.HTTP客户经由与TCP连接相关联的本地套接字发出一个HTTP请求消息。,3.HTTP服务器经由与TCP连接相关联的本地套接字接收这个请求消息,再从服务器主机的内存或硬盘中取出对象,经由同一个套接字发出包含 该对象的响应消息。,4.HTTP服务器告知TCP关闭这个TCP连接(不过TCP要到客户收到刚才这 个响应消息之后才会真正终止这个连接)。,5.HTTP客户经由同一个套接字接收这个响应消息。TCP连接随后终止。该消息标明所封装的对象是一个HTML文件。客户从中取出这个文件,加以分析后发现其中有10个JPEG对象的引用。,6.给每一个引用到的JPEG对象重复步骤14。,请问共产生几个TCP连接?,往返时间(round-trip time,简称RTT)是一个小分组从客户主机游动到服务器主机再返回客户主机所花的时间。,考虑一下某个用户点击某个超链接时会发生什么事情?它的响应延时又是多少?,计算机网络概述,Web应用与HTTP,RTT包括分组传播延迟、在中间路由器和交换机上的分组排队延迟以及分组处理延迟。,Client,Server,Close connection,Close connection,总的响应时间:约等于是2个RTT加上服务器发送这个HTML文件的时间。,计算机网络概述,Web应用与HTTP,用户的点击导致浏览器发起建立一个与Web服务器的TCP连接(三次握手)。三次握手过程的前两次结束时,流逝的时间为1个RTT。此时客户把HTTP请求消息发送到TCP连接中,接着客户把三次握手过程最后一次中的确认捎带在包含这个消息的数据分节中发送出去。服务器收到来自TCP连接的请求消息后,把相应的HTML文件发送到TCP连接中,服务器接着把对早先收到的客户请求的确认捎带在包含该HTML文件的数据分节中发送出去。这个HTTP请求/响应交互也花去1个RTT时间。因此,总的响应时间约等于是2个RTT加上服务器发送这个HTML文件的时间。,计算机网络概述,Web应用与HTTP,最后,每个对象都遭受TCP缓启动。因为每个TCP连接都起始于缓启动阶段。不过并行TCP连接的使 用能够部分减轻RTT延迟和缓启动延迟的影响。,计算机网络概述,Web应用与HTTP,持久连接,非持久连接的缺点:首先,客户得为每个待请求的对象建立并维护一个新的连接。,其次,每个对象都有2个RTT的响应延长。,同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。整个Web页面(上例中为包含一个基本HTML文件和10个图像的页面)可以通过单个持久TCP连接发送;甚至存放在同一个服务器中的多个Web页面也可以通过单个持久TCP连接发送。,计算机网络概述,Web应用与HTTP,在持久连接下,服务器在发出响应后让TCP连接继续打开着。,持久连接可分为:,计算机网络概述,Web应用与HTTP,带流水线(with pipelining),不带流水线(without pipelining),不带流水线持久连接,计算机网络概述,Web应用与HTTP,是指客户只在收到前一个请求的响应后才发出新的请求。这种情况下,Web页面所引用的每个对象(上例中的10个图像)都经历1个RTT的延迟,用于请求和接收该对象。与非持久连接2个RTT的延迟相比,不带流水线的持久连接已有所改善(如下图所示)。,Client,Server,.,.,不带流水线持久连接,.,2RTT,Close connection,带流水线的持久连接,计算机网络概述,Web应用与HTTP,不带流水线的缺点:服务器送出一个对象后开始等待下一个请求,而这个新请求却不能马上到达。这段时间服务器资源便闲置了。,带流水线的持久连接,而带流水线时,HTTP客户每碰到一个引用就立即发出一个请求,因而HTTP客户可以一个接一个紧挨着发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。如果所有的请求和响应都是紧挨着发送的,那么所有引用到的对象一共只经历1个RTT的延迟(而不带流水线时,每个引用到的对象都各有1个RTT的延迟)。,另外,带流水线中服务器空等请求的时间比较少。从而又比前者进一步降低了响应延迟(如下图所示)。,计算机网络概述,Web应用与HTTP,Client,Server,带流水线持久连接,1个RTT,.,.,Close connection,Close connection,其原因在于既然各个对象使用同一个TCP连接,服务器发出第一个对象后就不必再以一开始的缓慢速率发送后续对象。相反,服务器可以按照第一个对象发送完毕时的速率开始发送下一个对象(如上图所示)。,计算机网络概述,Web应用与HTTP,与非持久连接相比,持久连接(不论是否带流水线)除低了1个RTT的响应延迟外,缓启动延迟也比较小。为什么?,3.2.3 HTTP消息格式,Figure 3.2.2 Request message,HTTP消息可分为 请求消息 响应消息,计算机网络概述,Web应用与HTTP,计算机网络概述,Web应用与HTTP,GET/somedir/page.html HTTP/1.1 请求行(方法、URL、版本)Host:指定存放所请求对象的主机Connection:close 是否使用持久连接(否)User-agent:Mozilla/4.0 指定用户代理Accept-language:fr 指出要是所请求对象有法语版本,那么用户宁愿接收(额外的回车符和换行符)这个版本;如果没有法语版本,那么服务器应该 发送其默认版本。Accept-language:仅仅是HTTP的 众多内容协商头部之一。,头部行,计算机网络概述,Web应用与HTTP,例如:一条HTTP请求消息,Request message-Request line Request line,计算机网络概述,Web应用与HTTP,Request message-URL URL,计算机网络概述,Web应用与HTTP,URL-Methods,GET HEAD POST PUT PATCH COPY MOVE DELETE LINK UNLINK OPTION,对服务器的CGI进行访问,客户端一般需要提供一些表单参数,其参数传递方式主要有两种:GET和POST。,GET传递参数方法 在HTTP请求行中包含传送的参数字符串。如,在中查询字符串“test”,因为是GET方法,所有服务器端的CGI需要参数都通过浏览器发出的URL传递,这里是:search?q=test&btnG=Google%CB%D1%CB%F7&h1=zh-CH&safe=off 而真正的HTTP消息请求行应该是:GET/search?q=test&btnG=Google%CB%D1%CB%F7&h1=zh-CH&safe=off 请求消息中没有消息实体。,这里,参数的写法应该注意,整个字符串是若干域组成的,每个域有形如“名字=值”这样的构成,不同域之间用“&”分隔,“%”引起一个双字节的十六进制转义字符,字符串中间有空格,则用“+”来代替,如:,name1=value1&name2=value2&name3=value3,其中value1 可能是“all+right”,其本来应该是“all right”;而 value2 可能是“%2B”,表示一个“+”;value3 甚至可以是个中文字符串,如“%D0%AD%D2%E9”,就代表“协议”二字。,计算机网络概述,Web应用与HTTP,POST传递参数方法 在HTTP请求消息的实体正文中包含要传送的字符串参数。如,在中查询字符串“test”,采用POST方法,则上述在HTTP协议消息中就应该如下所示:POST/search HTTP/1.1 Accept:image/gif,image/x-xbitmap,*/*Accept-language:zh-cn Content-Type:application/x-www-form-urlencoded Accept-Encoding:gzip,deflate User-Agent:Mozilla/4.0 Content-Length:43 Connection:Keep-Alive 空一行 q=test&btnG=Google%CB%D1%CB%F7&h1=zh-CH&lr=,在服务器端,CGI程序要接收客户端传递来的参数,如果是GET方法,就通过WEB服务器提供的环 境变量来获取;如果是POST方法,则直接通过标准I/O来进行 输入输出。,计算机网络概述,Web应用与HTTP,与GET方法比起来,POST更适合传送比较大量的数据。,HTTP响应消息:,Response message,计算机网络概述,Web应用与HTTP,计算机网络概述,Web应用与HTTP,Response message-Status line Status line,计算机网络概述,Web应用与HTTP,例如:一条HTTP响应消息,头部行,计算机网络概述,Web应用与HTTP,HTTP/1.1 200 OKConnection:closeDate:Thu,06 Aug 1998 12:00:15 GMTServer:Apache/1.3.0(Unix)Last-Modified:Mon,22 Jun 1998 09:23:24 GMTContent-Length:6821Content-Type:text/html(数据 数据 数据 数据 数据.),其中状态行有3个字段:协议版本字段、状态码字段、原因短语字段 本例的状态行表明,服务器使用HTTP/1.1版本,响应过程完全正常(也就是说服务器找到了所请求的对象,并正在发送)。,计算机网络概述,Web应用与HTTP,该条HTTP响应消息分为3部分:,1个起始的状态行(status line)6个头部行 附属体,头部行:,Connection:close 告知客户自己将在发送完本消息后关闭 TCP连接。,Date:指出服务器创建并发送本响应消息的日期和时间。注意,这并不是 对象本身的创建时间或最后修改时间,而是服务器把该对象从其文 件系统中取出,插入响应消息中发送出去的时间。,Server:指出本消息是由Apache Web服务器产生的;它与HTTP请求消息 中的User-Agent:头部行类似。,Last-Modified:指出对象本身的创建或最后修改日期或时间。,Content-Length:指出所发送对象的字节数。,Content-Type:指出包含在附属体中的对象是HTML文本。对象的类型是 由Content-Type:头部而不是由文件扩展名正式指出的。,HTTP响应消息中的状态代码和原因短语,客户端错误,成功,重定向,客户端错误,服务器端错误,100 继续,101 交换协议,200 成功,201 已创建,202 接收,203 非认证信息,204 无内容,205 重置内容,205 部分内容,300 多路选择,301 永久转移,302 暂时转移,303 参见其他,304 未修改,305 使用代理,500 内部错误,501 未实现,502 网关失败,503 不可用,504 网关超时,HTTP版本 不支持,400 错误请求,401 未认证,402 需要付费,403 禁止访问,404 未找到,405 不允许,406 不接受,407 需代理认证,408 请求超时,HTTP响应消息中的状态代码和原因短语,客户端错误,成功,重定向,客户端错误,服务器端错误,409 冲突,410 失败,411 需要长度,412 条件失败,413 实体太长,414 URL太长,不支持媒 体类型,一些常见的状态码和相应的原因短语:200 OK:请求成功,所请求信息在响应消息中返回。301 Moved Permanently:所请求的对象已永久性迁移;新的URL在 本响应消息的Location:头部指出。客户软件会自动请求这个新 的URL。304 Not Modified:表示客户可以放心使用所请求对象的高速缓存版本。400 Bad Request:表示服务器无法理解相应请求的普遍错误的状态码。401 Authorization Required:表示请求认证消息。404 Not Found:服务器上不存在所请求的文档。505 HTTP Version Not Supported:服务器不支持所请求的HTTP协议版本。,计算机网络概述,Web应用与HTTP,Example 1,This example retrieves a document.We use the GET method to retrieve an image with the path/usr/bin/image1.The request line shows the method(GET),the URL,and the HTTP version(1.1).(1)The header has two lines that show that the client can accept images in GIF and JPEG format.The request does not have a body.(2)The response message contains the status line and 4 lines of header.The header lines define the date,server,MIME version,and length of the document.The body of the document follows the header(see Fig.3.2.9,next slide).,计算机网络概述,Web应用与HTTP,Example 1,Example 2,This example retrieves information about a document.We use the HEAD method to retrieve information about an HTML document(see the next section).(1)The request line shows the method(HEAD),URL,and HTTP version(1.1).The header is one line showing that the client can accept the document in any format(wild card).The request does not have a body.(2)The response message contains the status line and 5 lines of header.The header lines define the date,server,MIME version,type of document,and length of the document(see Fig.3.2.10,next slide).Note that the response message does not contain a body.,计算机网络概述,Web应用与HTTP,Example 2,HTTP身份认证(提供一个用户名-口令对才能访问服务器),计算机网络概述,Web应用与HTTP,3.2.4 用户-服务器交互:,HTTP身份认证 和 cookie,客户发送一个不含特殊头部的普通请求消息。,服务器以空的附属体和一个“401 Authorization Required”状态码作为响应。服务器还在这个响应消息中包含一个WWW-Authenticate:头部,说明具体如何执行身份认证。这个头部的典型值是指出用户需要提供一个用户名-口令对。,3.2.4 用户-服务器交互:HTTP身份认证 和 cookie HTTP身份认证 许多Web站点要求用户提供一个用户名-口令对才能访问存在其服务器中的文档。这种要求称为身份认证。一、客户发送一个不含特殊头部的普通请求消息。二、服务器以空的附属体和一个“401 Authorization Required”状态码作为响应。服务器还在这个响应消息中包含一个WWW-Authenticate:头部,说明具体如何执行身份认证。这个头部的典型值是指出用户需要提供一个用户名-口令对。,计算机网络概述,Web应用与HTTP,客户收到这个响应消息后,提示用户输入用户名和口令,然后重新发送请求消息。这一回客户在请求消息中包含了一个Authorization:头部,其中包含有用户输入的用户名和口令。,计算机网络概述,Web应用与HTTP,取得第一个对象后,客户在同为请求该服务器上对象的后续请求中继续发送这个用户名-口令对。这个做法一般将持续到用户关闭浏览器为止。,在浏览器未被关闭之前,这个用户名-口令对是高速缓存着的,因此浏览器不会每请求一个对象就提示用户输入一次用户名和口令。通过上述方式,要求用户授权的Web站点就能标识出每个请求的用户了。,cookies是一种可由Web站点用来跟踪用户的候选机制。有些Web站点使用cookie,有些Web站点则不用。,计算机网络概述,Web应用与HTTP,Cookie,假设一个客户首次联系一个使用cookie的Web站点。服务器会在其响应中包含一个Set-Cookie:头部。该头部的值通常是一个由Web服务器产生的标识数,例如:Set-Cookie:1678453,客户收到这个响应消息,看到其中的Set-Cookie:头部和标识数后,往存放在客户主机中的某个特殊的cookie文件中添加一行。这一行一般包含服务器主机的主机名和这个与用户关联的标识数。在一段时间之后请求同一个服务器时,由同一个用户启动的新客户会在请求消息中包含一个Cookie:头部,其值为早先由该服务器产生的标识数,例如:Cookie:1678453,计算机网络概述,Web应用与HTTP,在这种方式中,服务器并不知道提出请求的用户的用户名,但是它确实知道该用户与一个星期前提出请求的用户是同一个。,Web服务器什么时候可以使用cookie:,计算机网络概述,Web应用与HTTP,如果服务器要求身份认证,但又不想在同一用户每次访问本Web站点时都麻烦他输入用户名和口令,那么可以设置一个cookie。,如果服务器想要记住用户的偏好,以便在他们后续访问期间有目的地提供广告,那么可以设置一个cookie。,如果Web站点提供购物服务,那么服务器可以使用cookie跟踪用户购买的物品,也就是建立一个虚拟的购物车,那么也可以设置一个cookie。,思考:cookie不适用于会从不同主机访问同一Web站点的游动用户。(为什么?),这种情况下,该Web站点会把同一个用户在不同主机上的使用看成是由新的用户执行的。,计算机网络概述,Web应用与HTTP,3.2.5 带条件的GET,计算机网络概述,Web应用与HTTP,Web高速缓存在降低用户可感知的响应时间的同 时,却引入了一个新的问题高速缓存中存放 的对象的拷贝可能是过期的。,Web高速缓存技术通过就近存放先前取得的对象 来降低对象检索延迟,减少因特网上的Web流量。,3.2.5 带条件的GET Web高速缓存技术通过就近存放先前取得的对象来降低对象检索延迟,减少因特网上的Web流量。Web的高速缓存既可以驻留在客户主机中,也可以驻留在中间网络高速缓存服务器主机中。Web高速缓存在降低用户可感知的响应时间的同时,却引入了一个新的问题高速缓存中存放的对象的拷贝可能是过期的。换句话说,存放在Web服务器中的对象可能已在客户高速缓存下它的一个拷贝之后被修改了。,计算机网络概述,Web应用与HTTP,为此,HTTP引入了带条件GET的新机制,使得在允许客户进行高速缓存的同时,仍确保传递给浏览器的所有对象都是最新的。,计算机网络概述,Web应用与HTTP,(1)使用GET方法,(2)包含If-Modified-Since:头部的HTTP请求消息,但须满足两个条件:,为此,HTTP提供一个专门的机制,使得在允许客户进行高速缓存的同时,仍确保传递给浏览器的所有对象都是最新的。这个机制称为带条件的GET(conditional GET)。满足条件:(1)使用GET方法(2)包含If-Modified-Since:头部的HTTP请求消息,计算机网络概述,Web应用与HTTP,Web服务器把带这个对象的一个响应消息发送给客户:,带条件GET是如何工作:,有一个浏览器从某个Web服务器请求一个尚未高速缓 存的对象:,GET/fruit/kiwi.gif HTTP/1.0 User-agent:Mozilla/4.0,HTTP/1.0 200 OK Date:Wed,12 Aug 1998 15:39:29 Server:Apache/1.3.0(Unix)Last-Modified:Mon,22 Jun 1998 09:23:24 Content-Type:image/gif(数据 数据 数据 数据 数据.),假设:一个星期之后,同一个用户请求同一个对象,而该对象仍然存放在高速缓存中。既然Web服务器中的该对象有可能已在最近一个星期被修改过,于是浏览器发出一个带条件的GET消息,执行判定高速缓存的对象拷贝是否为最新的检查:,客户把这个对象显示给用户,同时把它保存在自己的本地高 速缓存中。注意:客户还随该对象本身高速缓存最后修改日期与时间。,GET/fruit/kiwi.gif HTTP/1.0 User-agent:Mozilla/4.0 If-Modified-Since:Mon,22 Jun 1998 09:23:24,计算机网络概述,Web应用与HTTP,其中,If-Modified-Since:头部的值就等于一个星期前由服务器发送的Last-Modified:头部的值。,这个带条件的GET消息告知服务器,只有在该对象自所指定的时间以来被修改了的前提下才发送它。,假设:该对象在这段时间内未曾被修改过,那么服务器将发送一个附属体为空的响应消息给客户:,计算机网络概述,Web应用与HTTP,HTTP/1.0 304 Not Modified Date:Wed,19 Aug 1998 15:39:29 Server:Apache/1.3.0(Unix)(空的附属体)?,注意:此响应消息的状态为“304 Not Modified”,它告知客户可以放心使用所请求对象的高速缓存版本。,计算机网络概述,Web应用与HTTP,Web服务器仍然发送了一个响应消息作为对带条件的GET消息的响应,不过其中不包含所请求的对象。(这样做有什么好处?),若包含该对象只会浪费带宽,并延长用户可感知的响应时间,特别是在该对象很大的时候。,第3章,3、假定你在浏览器中点击了一条超链接获得Web页面。假定相关的URL的IP地址没有缓存在本地主机上,因此有必要进行DNS查询从而获得IP地址。如果主机从DNS得到IP地址之前,已经访问了n个DNS服务器;相继产生的RTT依次为RTT1、.RTTn。进一步假定与链路相关的Web页面只包含一个对象,即少量的HTML文本。令RTT0表示本地主机和包含对象服务器之间的RTT值。假定该对象舆传输时间为零,则从客户机点击该超链接到它接收到这些对象需要多长时间?,