了解WWW服务和HTTP协议

了解WWW服务和HTTP协议

历史上,先后问世了多个具有重大社会影响的电子通信技术。第一个这样的技术是19世纪70年代发明的电话。电话使得不在同一物理位置的两人得以实时地口头交流。它对社会有重大的影响——有好的也有坏的。下一个电子通信技术是20世纪20年代及30年代问世的广播收音机/电视机。广播收音机/电视机使得人们能收听收视大量的音频和视频信息。它对社会同样有重大的影响——有好的也有坏的。改变了人们的生活与工作方式的第三个重大通信技术是web。web最吸引用户的也许是它的随选(on demand)操作性。用户只在想要时收到所要的东西。这一点不同于广播收音机/电视机。广播收音机/电视机的用户是在其内容供应商播出内容期间被迫收听收视。除了随选操作性,Web还有许多大家喜爱的其他精彩特性。任何个人都可以极其容易地在Web上公布任何信息;任何人都可能以极低的成本成为发行人。超链接和搜索引擎帮助我们在Web站点的海洋中导航。图形和动画刺激着我们的感官。表单、Java小应用程序、Activex控件以及其他许多设备使得我们能与Web页面和站点交互。Web还越来越普遍地提供存放在因特网中的、可随选访问(即点播)的大量音频和视频材料的菜单接口。

HTTP概貌

Web的应用层协议HTTP是Web的核心。HTTP在Web的客户程序和服务器程序中得以实现。运行在不同端系统上的客户程序和服务器程序通过交换HTTP消息彼此交流。HTTP 定义这些消息的结构以及客户和服务器如何交换这些消息。在详细解释HTTP之前,我们先来回顾一些web中的术语。

Web页面(web page,也称为文档)由多个对象构成。对象(object)仅仅是可由单个URL 寻址的文件,例如HTML文件、JPG图像、GIF图像、JA V A小应用程序、语音片段等。大多数Web页面由单个基本HIML文件和若干个所引用的对象构成。例如,如果一个Web页面包含HTML文本和5个JPEG图像,那么它由6个对象构成,即基本H1ML文件加5个图像。基本HTML文件使用相应的URL来引用本页面的其他对象。每个URL由存放该对象的服务器主机名和该对象的路径名两部分构成。例如,在如下的URL中: https://www.360docs.net/doc/2110124181.html,/urlpath/picture.qif

https://www.360docs.net/doc/2110124181.html,是一个主机名,/urlpath/picture.qif是一个路径名。浏览器是web的用户代理,它显示所请求的Web页面,并提供大量的导航与配置特性。Web浏览器还实现HTTP 的客户端,因此在web上下文中,我们会从进程意义上互换使用“浏览器”和“客户”两词。流行的Web浏览器有Netscape Communicator,firefox和微软的IE等。Web服务器存放可由URL寻址的Web对象。web服务器还实现HTTP的服务器端。流行的Web服务器有Apache、微软的IIS以及Netscape Enterprise Server。Netcraft提供了web服务器的概要剖析[Netcrft 2000]。

HTTP定义Web客户(即浏览器)如何从web服务器请求Web页面,以及服务器如何把Web页面传送给客户。下图展示了这种请求—响应行为。当用户请求一个Web页面(譬如说点击某个超链接)时,浏览器把请求该页面中各个对象的HTTP请求消息发送给服务器。服务器收到请求后,以运送含有这些对象HTTP响应消息作为响应。到1997年底,基本上所有的浏览器和Web服务器软件都实现了在RFC 1945中定义的HTTP/1.0版本。1998年初,一些Web服务器软件和浏览器软件开始实现在RFC 2616中定义的HTTP/1.1版本。H1TP/1.1与HTTP/1.0后向兼容;运行1.1版本的web服务器可以与运行1.0版本的浏览器“对话”,运行1.1版本的浏览器也可以与运行1.0版本的Web服务器“对话”。

图1 HTTP请求与响应行为

HTTP/1.0和HTTP/1.1都把TCP作为底层的传输协议。HTTP客户首先发起建立与服务器TCP连接。一旦建立连接,浏览器进程和服务器进程就可以通过各自的套接字来访问TCP。如前所述,客户端套接字是客户进程和TCP连接之间的“门”,服务器端套接字是服务器进程和同一TCP连接之间的“门”。客户往自己的套接字发送HTTP请求消息,也从自己的套接字接收HTTP响应消息。类似地,服务器从自己的套接字接收HTTP请求消息,也往自己的套接字发送HTTP响应消息。客户或服务器一旦把某个消息送入各自的套接字,这个消息就完全落入TCP的控制之中。TCP给HTTP提供一个可靠的数据传输服务;这意味着由客户发出的每个HTTP请求消息最终将无损地到达服务器,由服务器发出的每个HTTP响应消息最终也将无损地到达客户。我们可从中看到分层网络体系结构的一个明显优势——HTTP不必担心数据会丢失,也无需关心TCP如何从数据的丢失和错序中恢复出来的细节。这些是TCP和协议栈中更低协议层的任务。

TCP还使用一个拥塞控制机制。该机制迫使每个新的TCP连接一开始以相对缓慢的速率传输数据,然而只要网络不拥塞,每个连接可以迅速上升到相对较高的速率。这个慢速传输的初始阶段称为缓启动(slow start)。

需要注意的是,在向客户发送所请求文件的同时,服务器并没有存储关于该客户的任何状态信息。即便某个客户在几秒钟内再次请求同一个对象,服务器也不会响应说:自己刚刚给它发送了这个对象。相反,服务器重新发送这个对象,因为它已经彻底忘记早先做过什么。既然HTTP服务器不维护客户的状态信息,我们于是说HTTP是一个无状态的协议(stateless protocol)。

非持久连接和持久连接

HTTP既可以使用非持久连接(nonpersistent connection),也可以使用持久连接(persistent connection)。HTTP/1.0使用非持久连接,HTTP/1.1默认使用持久连接。

让我们查看一下非持久连接情况下从服务器到客户传送一个Web页面的步骤。假设该贝面由1个基本HTML文件和10个JPEG图像构成,而且所有这些对象都存放在同一台服务器主机中。再假设该基本HTML文件的URL为:https://www.360docs.net/doc/2110124181.html,/somepath/index.html。

下面是具体步骡:

1.HTTP客户初始化一个与服务器主机https://www.360docs.net/doc/2110124181.html,中的HTTP服务器的TCP连接。HTTP服务器使用默认端口号80监听来自HTTP客户的连接建立请求。

2.HTTP客户经由与TCP连接相关联的本地套接字发出—个HTTP请求消息。这个消息中包含路径名/somepath/index.html。

3.HTTP服务器经由与TCP连接相关联的本地套接字接收这个请求消息,再从服务器主机的内存或硬盘中取出对象/somepath/index.html,经由同一个套接字发出包含该对象的响应消息。

4.HTTP服务器告知TCP关闭这个TCP连接(不过TCP要到客户收到刚才这个响应消息之后才会真正终止这个连接)。

5.HTTP客户经由同一个套接字接收这个响应消息。TCP连接随后终止。该消息标明所封装的对象是一个HTML文件。客户从中取出这个文件,加以分析后发现其中有10个JPEG 对象的引用。

6.给每一个引用到的JPEG对象重复步骡1-4。

浏览器在接收web页面的同时把它显示给用户。不同的浏览器可能会以略有不同的方式解释(也就是向用户显示)同一个web页面。HTTP与客户如何解释Web页面没有任何关系,其规范([RFC 1945]和[RFC 2616I)仅仅定义HTTP客户程序和服务器程序之间的通信协议。

上述步骤之所以称为使用非持久连接,原因是每次服务器发出一个对象后,相应的TCP 连接就被关闭,也就是说每个连接都没有持续到可用于传送其他对象。每个TCP连接只用于传输一个请求消息和一个响应消息。就上述例子而言,用户每请求一次那个web页面,就产生11个TCP连接。

在上述步骡中,我们有意不说清客户是通过10个串行的TCP连接先后取得所有JPEG 对象,还是通过并行的TCP连接同时取得其中某些JPEG对象。实际上,现今的浏览器允许用户通过配置来控制并行连接的程度。大多数浏览器默认可以打开5到10个并行的TCP 连接,每个连接处理一个请求—响应事务。用户要是喜欢,可以把最大并行连接数设为l,那样的话这10个连接是串行地建立的。我们将在第3章看到,使用并行连接可以缩短响应时间。

继续介绍之前,先估算一下从客户请求基本HTML文件到它收到该文件所经历的时间。为此我们定义往返时间(round trip time,简称RTT),它是一个小分组从客户主机游动到服务器主机再返回客户主机所花的时间。RTT包括分组传播延迟、在中间路由器和交换机土的分组排队延迟以及分组处理延迟。下面考虑用户点击某个超链接时会发生什么。用户的点击导致浏览器发起建立一个与Web服务器的TCP连接;这里涉及·—次“三次握手”过程——首先是客户向服务器发送一个小的冗余消息,接着是服务器向客户确认并响应以一个小的TCP消息,最后是客户向服务器回确认。三次握手过程的前两次结束时,流逝的时间为1个RTT。此时客户把HTTP请求消息发送到TCP连接中,客户接着把三次握手过程最后一次中的确认捎带在包含这个消息的数据分节中发送以去。服务器收到来自TCP连接的请求消息后,把相应的HTML文件发送到TCP连接中,服务器接着把对早先收到的客户请求的确认捎带在包含该HTML文件的数据分节中发送出去。这个HTTP请求顺应交互也花去1个RTT时间。因此,总的响应时间粗略地算是2个RTT加上服务器发送这个HTMI文件的时间。

非持久连接有些缺点。首先,客户得为每个待请求的对象建立并维护一个新的连接。对于每个这样的连接,TCP得在客户端和服务器端分配TCP缓冲区,并维持TCP变量。对于有可能同时为来自数百个不同客户的请求提供服务的web服务器来说,这会严重增加其负担。其次,如前所述,每个对象都有2个RTT的响应延长——一个RTT用于建立TCP连接,另—个RTT用于请求和接收对象。最后,每个对象都遭受TCP缓启动,因为每个TCP连接都起始于缓启动阶段。不过并行TCP连接的使用能够部分减轻RTT延迟和缓启动延迟的影响。

在持久连接情况下,服务器在发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。整个Web页面(上例中为包含一个基本HTMLL文件和10个图像的页面)自不用说可以通过单个持久TCP连接发送:甚至存放在同一个服务器中的多个web页面也可以通过单个持久TCP连接发送。通常,HTTP服务器在某个连接闲置一段特定时间后关闭它,而这段时间通常是可以配置的。持久连接分为不带流水线(without pipelining)和带流水线(with pipelining)两个版本。如果是不带流水线的版本,那么客户只在收到前一个请求的响应后才发出新的请求。这种情况下,web页面所引用的每个对象(上例中的10个图像)都经历1个RTT的延迟,用于请求和接收该对象。与非持久连接2个RTT的延迟相比,不带流水线的持久连接已有所改善,不过带流水线的持久连接还能进一步降低响应延迟。不带流水线版本的另一个缺点是,服务器送出一个对象后开始等待下一个请求,而这个新请求却不能马上到达。这段时间服务器资源便闲置了。

HTTP/1.1的默认模式使用带流水线的持久连接。这种情况下,HTTP客户每碰到一个引用就立即发出一个请求,因而HTTP客户可以一个接一个紧挨着发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。如果所有的请求和响应都是紧挨着发送的,那么所有引用到的对象一共只经历1个RTT的延迟(而不是像不带流水线的版本那样,每个引用到的对象都各有1个RTT的延迟)。另外,带流水线的持久连接中服务器空等请求的时间比较少。与非持久连接相比,持久连接(不论是否带流水线)除降低了1个RTT的响应延迟外,缓启动延迟也比较小。其原因在于既然各个对象使用同一个TCP连接,服务器发出第一个对象后就不必再以一开始的缓慢速率发送后续对象。相反,服务器可以按照第一个对象发送完毕时的速率开始发送下一个对象。

HTTP消息格式

HTTP规范1.0[RPcl945]和1.1[RFC 2616]定义了HTTP消息的格式。HTTP消息分为请求消息和响应稍息两类。下面我们分别进行介绍。

HTTP请求消息

下面是一个典型的HTTP请求消息:

GET /somedir/page.html H7TP/1.1

Host:https://www.360docs.net/doc/2110124181.html,

Connection:close

User-agent:Mozilla/4.0

Accept-language:zh-cn

(额外的回车符和换行符)

仔细检查这个简单的请求消息,我们可从中学到不少东西。首先,这个消息是用普通的ASCII文本书写的。其次,这个消息共有5行(每行以一个回车符和一个换行符结束),最后一行后面还有额外的一个回车特和换行符。当然,一个请求消息可以不止这么多行,也可以

仅仅只有一行。该请求消息的第一行称为请求行(request line),后续各行都称为头部行(header)。请求行有3个宁段:方法字段、URL字段、HTTP版本宇段。方法字段有若干个值可供选择,包括GET、POST和HEAD。HTTP请求消息绝大多数使用GET方法,这是浏览器用来请求对象的方法,所请求的对象就在URL字段中标识。本例表明浏览器在请求对象/somedir/page.html。版本字段是不言自明的;本例中浏览器实现的是HTTP/1.1版本。

现在看一下本例中的各个头部行。头部行Host:https://www.360docs.net/doc/2110124181.html,定存放所请求对象的主机。请求消息中包含头部Connection:close是在告知服务器本浏览器不想使用持久连接;服务器发出所请求的对象后应关闭连接。尽管产生这个请求消息的浏览器实现的是HTTP/1.1版本,它还是不想使用持久连接。User-agent头部行指定用户代理,也就是产生当前请求的浏览器的类型。本例的用户代理是Mozilla/4.0,它是Nelscape浏览器的一个版本。这个头部行很有用,因为服务器实际上可以给不同类型的用户代理发送同一个对象的不同版本(这些不同版本位用同一个URL寻址)。最后,Accept-languag:头部行指出要是所请求对象有简体中文版本,那么用户宁愿接收这个版本;如果没有这个语言版本,那么服务器应该发送其默认版本。Accept-languag:仅仅是HTTP的众多内容协商头部之一。

我们接着看一下下图所示的请求消息的一般格式。

图2:HTTP请求格式

上面的请求消息例子符合这个格式,不过一般格式中还有一个位于各个头部(及额外的回车符和换行符)之后的“附属体”(毗叮body)。附属体不在GET方法中使用,而是在POST 方法中使用。POST方法适用于需由用户填写表单的场合,如往google搜索引擎中填入待搜索的词。用户提交表单后,浏览器就像用户点击了超链接那样仍然从服务器请求一个Web 页面,不过该页面的具体内容却取决于用户填写在表单各个字段中的值。如果浏览器使用POST方法提出该请求,那么请求消息附属体中包含的是用户填写在表单各个字段中的值。与GET方法类似的是HEAD方法,两者的差别只是服务器在对HEAD方法的响应消息中去掉了所请求的对象,其他内容则与对GET方法的响应消息一样。HEAD方法通常用于HTTP 服务器软件开发人员进行调试。

下面是一个典型的HTTP响应消息:

HTTP/1.1 200 0K

Connectlon:close

Date: Thu, 13 Oct 2005 03:17:33 GMT

Server: Apache/2.0.54 (Unix)

Last—Nodified:Mon,22 Jun 1998 09;23;24 GMT

Content—Length:682l

Content—Type:text/html

(数据数据数据数据数据…………)

这个响应消息分为3部分:1个起始的状态行(status line),6个头部行、1个包含所请求对象本身的附属体。状态行有3个字段:协议版本字段、状态码字段、原因短语字段。本例的状态行表明,服务器使用HTTP/1.1版本,响应过程完全正常(也就是说服务器找到了所请求的对象,并正在发送)。

现在看一下本例中的各个头部行。服务器使用Connectlon:close头部行告知客户自己将在发送完本消息后关闭TCP连接。Date:头部行指出服务器创建并发送本响应消息的日期和时间。注意,这并不是对象本身的创建时间或最后修改时间,而是服务器把该对象从其文件系统中取出,插入响应消息中发送出去的时间。Server:头部行指出本消息是由Apache服务器产生的;它与HTTP请求消息中的User-agent:头部行类似。Last—Nodified:头部行指出对象本身的创建或最后修改日期或时间。Last—Nodified:头部对于对象的高速缓存至关重要,且不论这种高速缓存是发生在本地客户主机上还是发生在网络高速缓存服务器主机(也就是代理服务器主机)上。Content—Length:头部行指出所发送对象的字节数。Content—Type:头部行指出包含在附属体中的对象是HTML文本。对象的类型是由Content—Type:头部而不是由文件扩展名正式指出的。

注意,如果服务器收到一个HTTP/1.0的请求,那么它即使是一个HTTP/1.1服务器,也不会使用持久连接。相反,这样的HTTP/1.1服务器会在发出所请求的对象后关闭TCP连接。这么做是必要的,因为HTTP/1.0客户期待服务器马上关闭连接。

我们接着看一下如下图所示的响应消息的一般格式。前面的响应消息例子完全符合这个格式。响应消息中的状态码和原因短语指示相应请求的处理结果,下面列出了一些常见的状态码和相应的原因短语:

图3:响应消息的一般格式

●200 0K;请求成功,所请求信息在响应消息中返回。

●301 Moved Permanently:所请求的对象己永久性迁移;新的URL在本响应消息的Location:头部指出。客户软件会自动请求这个新的URL。

●400 Bad Request;表示服务器无法理解相应请求的普通错误的状态码

●404 Not Found:服务器上不存在所请求的文档。

●HTTP Version Not Support:服务器不支持所请求的HTTP协议版本。

你想如何看到一个真实的H1TP应答消息呢?这非常简单。可以使用nc工具连接到你喜欢的服务器(nc/netcat是一个黑客很喜欢用的工具,可以方便在主机之间建立TCP连接),然后输入一行请求消息,用来请求位于该服务器上的某个对象。例如,如果你可以输入以下指令:

nc https://www.360docs.net/doc/2110124181.html, 80

GET /index.shtml HTTP/1.0

(在输入第二行之后,敲两次回车),这就打开了一个到主机https://www.360docs.net/doc/2110124181.html,的端口80的TCP连接,然后发送HTTP GET命令。你应该能看到包含着YESKY主页的基本HTML 文件的应苔消息。如果你想只看到HTTP消息行而不接收该对象本身,那么就把上面的GET 换成HEAD。最后,看一下能得到什么样的应答消息。

在这里我们讨论了大量能够在HTTP请求和应答消息中使用的头部行。HTTP规范(尤其是HTTP/1.1)定义了更多可以由浏览器、Web服务器和网络缓冲服务器插入的头部行。

我们可以便用nc工具完全控制在请求消息中包含哪些头部,那么浏览器如何决定该在请求消息个包含哪些头部呢?Web服务器又是如何决定该在响应消息中包含哪些头部?浏览器是根据自己的用户代理类型、所支持的HTTP版本(HTTP/1.0版本的浏览器自然不会产生HTTP/1.1版本的头部)、用户对浏览器的配置(如所偏爱的语言)等因素生成请求消息中的各个头部的。web服务器有类似的情形:它们有不同的产品、版本和配置,所有这些因素都会影响在响应消息中包含哪些头部。

本文讨论过的和即将讨论的用于HTTP请求消息和响应消息中的头部仅仅是很小的一部分,HTTP规范中定义了更多可用的头部,可以查阅相关的RFC文档进行更详细的了解。

用户—服务器交互

身份认证和cookie

我们已经知道HTTP服务器是无状态的。这样的处理可以简化服务器程序的设计,以便开发出更高性能的Web服务器软件。然而,一个Web站点往往有标识其用户的需求,因为其web服务器可能希望限制用户的访问,也可能想要根据用户的身份来提供内容。HTTP提供了两种帮助服务器标识用户的机制:身份认证和cookle。

身份认证许多web站点要求用户提供一个用户名—口令对才能访问存放在其服务器中的文档。这种要求称为身份认证(authentication)。HTTP提供特殊的状态码和头部来帮助Web 站点执行身份认证。我们通过查看一个例子来领会这些特殊的状态码和头部如何工作。假设有—个客户在请求来自某个服务器的一个对象,而该服务器要求用户授予权限。

客户首先发送一个不合特殊头部的普通请求消息。服务器以空的附属体和一个

“401Authorization Required”状态码作为响应。服务器还在这个响应消息中包含“个

WWW-Authenticate:头部,说明具体如何执行身份认证。这个头部的典型值是指出用户需要提供一个用户名—口令对。

客户收到这个响应消息后提示用户输入用户名和口令,然后重新发送请求消息。这一回客户在请求消息中包含了一个Authorization:头部,其中包含有用户输入的用户名和口令。

取得第一个对象后,客户在同为请求该服务器上对象的后续请求中继续发送这个用户名—口令对。这个做法一般将持续到用户关闭浏览器为止。在浏览器未被关闭之前,这个用户名—口令对是高速缓存着的,因此浏览器不会每请求一个对象就提示用户输入一次用户名和口令。通过上述方式,要求用户授权的Web站点就能标识出每个请求的用户了。

我们需要知道,HTTP执行的是一种相当脆弱的身份认证方式,不难攻破。现代有很多更为安全的认证方式,我们会在以后介绍。

cookie是一种可让Web站点用来跟踪用户的候选机制,定义在RFC 2109中。有些Web 站点使用cookie,其他Web站点则不用。下面查看一个例子。假设一个客户首次联系一个使用cookie的web站点。服务器会在其响应中包含一个Set—Cookie:头部。该头部的值可以是一个由Web服务器产生的客户标识数.例如:

Set-Cookie:1678453

客户收到这个响应消息,看到其中的Set-Cookie:头部和标识数后,会在存放在客户主机中的某个特殊的cookie文件中添加一行。这一行一般包含服务器主机的主机名和这个与用户关联的标识数。在一段时间(如一个星期)之后请求同一个服务器时,由同一个用户启动的新客户会在请求消息中包含一个cookie头部,其值为早先由该服务器产生的标识数,例如:Cookie:1678453

在这种方式中,服务器并不知道提出请求的用户的用户名,但是它确实知道该用户与一个星期前提出请求的用户是同一个。

Web服务器有多个使用coohe的目的:

●如果服务器要求身份认证,但又不想在同一用户每次访问本Web站点时都麻烦他输入用户名和口令,那么可以设置一个cookie。

●如果服务器想要记住用户的偏好,以便在他们后续访问期间有目的地提供广告,那么可以设置一个cookie。

●如果web站点提供购物服务,那么服务器可以使用cookie跟踪用户购买的物品,就是建立一个虚拟的购物车。

需指出的是,cookie不适用于会从不同主机访问同一web站点的游动用户。这种情况下,该web站点会把同一个用户在不同主机上的使用看成是由新的用户执行的。

带条件的GET

Web高速缓存技术通过就近存取先前取得的对象来降低对象检索延迟,减少因特网上的web流量。Web的高速缓存既可以驻留在客户主机中,也可以驻留在中间网络高速缓存服务器主机中。我们将在稍后讨论网络高速缓存,这里只关注客户的高速缓存。

Web高速缓存在降低用户可感知的响应时间的同时,却引入了一个新的问题——高速缓存中存放的对象的拷贝可能是过期的。换句话说,存放在web服务器中的对象可能己在客户高速缓存下它的一个拷贝之后被修改了。幸运的是,HTTP 提供一个专门的机制,使得在允许客户进行高速缓存的同时,仍确保传递给浏览器的所有对象都是最新的。这个机制称为带条件的0ET(conditional GET)。满足条件(1)使用GET方法和(2)包含If-Modified-S1nce:头部的HTTP请求消息就是所谓的带条件的Get消息。

我们通过查看一个例子来说明带条件的GET如何工作,向服务器请求一个尚未高速缓存的对象:

GET /fruit/kiwi.gif HTTP/1.0

User—agent: Mozilla/4.0

接着,web服务器把带这个对象的一个响应消息发送给客户:

HTTP/1.0 200 OK

Date: Thu, 13 Oct 2005 05:33:47 GMT

Server: Apache/2.0.54 (Unix)

Last-Modified:Thu, 13 Oct 2005 02:32:47 GMT

Content-Type:image/gif

(数据数据数据数据数据……)

客户把这个对象显示给用户,同时把它保存在自己的本地高速缓存中客户还随该对象本身高速缓存最后修改日期与时间。一个星期之后,同一个用户请求同一个对象,而该对象仍然存放在高速缓存中。既然web服务器中的该对象有可能已在最近一个星期被修改过,于是浏览器发出一个带条件的GET消息,执行判定高速缓存的对象拷贝是否为最新的检查;

GET /fruit/kiwi.gif HTTP/1.0

User—agent: Mozilla/4.0

If—Modlfied—Since:Thu, 13 Oct 2005 02:32:47 GMT

其中,If—Modlfied—Since:头部的值就等于一个星期前由服务器发送的Last-Modified:头部的值。这个带条件的GET消息告知服务器,只有在该对象自所指定的时间以来被修改了的前提下才发送它。假设该对象在这段时间内未曾被修改过,那么服务器将发送一个附属体为空的响应消息给客户;

HTTP/1.0 304 Not Modified

Date: Thu, 20 Oct 2005 05:33:47 GMT

Server: Apache/2.0.54 (Unix)

我们看到,web服务器仍然发送——个响应消息作为带条件的GET消息的响应,不过其中不包含所请求的对象。包含该对象只会浪费带宽,并延长用户可感知的响应时间,特别是在该对象很大的时候。注意,这个响应消息的状态为“304 Not Modified”,它告知客户可以放心使用所请求对象的高速缓存版本。

HTTP协议简介及其工作原理

HTTP协议简介及其工作原理 1.HTTP的概述 超文本传输协议(HTTP)是万维网应用层的协议,是通过两个程序实现:一个是客户端程序(一般称为浏览器),另一个是服务器(常称Web服务器)。这两个通常运行在不同的主机上通过交换HTTP报文来完成网页请求和响应。并且HTTP定义了报文的结构和客户/服务器之间交换报文的规则。 2. HTTP的工作流程 浏览器可以向web服务器发送请求并显示收到的网页,当用户在浏览器地址栏中输入一个URL或点击一个超连接时,浏览器就向服务器发出了HTTP请求,该请求被送往由URL 指定的WEB服务器,WEB服务器接收到请求后,进行相关文档的检索并以HTTP规定的格式送回所要求的文件或其他相关信息,再由用户计算机上的浏览器负责解释和显示。 在HTTP协议中,由于WEB服务器在发送用户要求的文档过程中,并不储存任何有关客户端的状态信息。如果某个客户端在几秒钟内两次要求同一文档,服务器绝对不会认为不合理,因为它根本不记得用户端曾经来访过,因此HTTP 不维持客户端状态,故它又被称为无状态协议。 3. HTTP运作过程中的连接 3.1连接过程说明 假设某个网页有10个JPFG图像,总共11个对象存在同一个服务器中,该网页的基本文档形式URL为: https://www.360docs.net/doc/2110124181.html,/somedepartment/home.index 当采用HTTP/1.0时,WEB服务过程: ⑴.HTTP的客户端启用了对https://www.360docs.net/doc/2110124181.html,服务器的TCP连接,该服务器的80 号端口(HTTP的默认端口)用来监听来自网络的网络服务请求。 ⑵. HTTP的客户端通过第一步建立的链接套接字发送“请求报文”。请求报文中包含了文 档的路径名(/somedepartment/home.index )。 ⑶.HTTP服务器通过第一步建立连接套接字收到了该请求报文,从磁盘或内存中查找 /somedepartment/home.index,将文档封存在HTTP的“相应报文”中,并通过先前建立的套接字将该报文送到客户端。 ⑷. HTTP服务器告诉TCP断开连接(TCP在客户端完全收到响应报文之前不会断开TCP 连接)。 ⑸.当客户端接受完响应报文,本次TCP连接即告结束。到达的报文说明所封装的内容是

必须掌握的http协议知识

HTTP协议 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议。所有的www文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。是用于从万维网(Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP/0.9 已过时。只接受GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持POST 方法,所以客户端无法向服务器传递太多信息。 HTTP/1.0 这是第一个在通讯中指定版本号的HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。HTTP/1.1 当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。 HTTP/1.1相较于HTTP/1.0 协议的区别主要体现在: ?缓存处理 ?带宽优化及网络连接的使用 ?错误通知的管理 ?消息在网络中的发送 ?互联网地址的维护 ?安全性及完整性

HTTP 工作原理 HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。 Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。 Web服务器根据接收到的请求后,向客户端发送响应信息。 HTTP默认端口号为80,但是你也可以改为8080或者其他端口。 HTTP三点注意事项: ?HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 ?HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。 ?HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 以下图表展示了HTTP协议通信流程:

HTTP协议详解

引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/的第六版,HTTP/的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 一、HTTP协议详解之URL篇 http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:":"port][abs_path] http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL

http协议交互过程

竭诚为您提供优质文档/双击可除 http协议交互过程 篇一:wireshake抓包分析tcp与http过程详解 http协议报文格式详解 在我们日常生活中最常见的应用环境就是上网浏览网页,很多上班族到办公室的第一件事就是打开电脑,而开机后的第一件事就是打开ie、Firefox、myie、greenbrowser、opera等浏览器时,做的第一件事就是浏览一下例如.cn,的新闻,而这种简单的应用操作,完成的交互过程就是一个典型的http协议的应用过程。 http是基于tcp的连接,因此,建立http连接必须经过tcp的过程,tcp的建立过程是3次握手的过程。然后就是http过程,http只有两种报文,请求和应答报文。完成http过程后,3次断开tcp连接。 http tcp的第一阶段 http开始之前先3次握手,第一阶段就是客户向服务器发送同步请求,flag字段的syn位置1。 第二阶段

第二阶段就是服务器向客户回复一个ack包,其中Flag 字段的syn位和ack字段置1。 tcp的第三阶段: tcp的第三阶段是客户向服务器发送ack,至此,tcp的3次握手结束 tcp三次握手结束之后就是http请求 客户发出http请求之后,服务器收到请求发送ack: 服务器发送应答报文 篇二:http协议分析报告实例 http协议分析 1实验目的 分析http协议报文首部格式,理解http协议工作过程2实验内容 截获http报文,分析http协议报文首部格式,学习http 协议工作过程。3实验原理 超文本传送协议http(hypertexttransferprotocol),是万维网客户程序与万维网服务器程序之间的交互所要严 格遵守的协议。http是一个应用层协议,它使用tcp连接进行可靠的传送。对于万维网站点的访问要使用的http协议。 http的uRl的一般形式是:http://:/ www采用b/s结构,客户使用浏览器在uRl栏中输入http 请求,即输入对方服务器的地址,向web服务器提出请求。

HTTP协议解析

文章来源:网络转载点击数:1148 更新时间:2009-9-14 10:35:27 字体:[大中小] 收藏到: HTTP协议详解 掌握HTTP虽然不是必须的,但是如果你知道它的工作原理,那么在学习JSP开发中的某些知识就可以易如反掌了。 一,HTTP协议详解之URL篇 http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:http://host[":"port][abs_path] http 表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port 指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。eg: 1、输入:https://www.360docs.net/doc/2110124181.html, 浏览器自动转换成:https://www.360docs.net/doc/2110124181.html,/ 2、http:192.168.0.116:8080/index.jsp 二、HTTP协议详解之请求篇 http请求由三部分组成,分别是:请求行、消息报头、请求正文 1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF 其中Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP 协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。请求方法(所有方法全为大写)有多种,各个方法的解释如下: GET 请求获取Request-URI所标识的资源 POST 在Request-URI所标识的资源后附加新的数据 HEAD 请求获取由Request-URI所标识的资源的响应消息报头 PUT 请求服务器存储一个资源,并用Request-URI作为其标识 DELETE 请求服务器删除Request-URI所标识的资源 TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断 CONNECT 保留将来使用 OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求 应用举例: GET方法:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源,eg:GET /form.html HTTP/1.1 (CRLF) POST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单。 eg:POST /reg.jsp HTTP/ (CRLF) Accept:image/gif,image/x-xbit,... (CRLF) ...

HTTP协议分析

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式。 2.简单快速: 客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、H EAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活: HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接: 无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态: HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 一、HTTP协议(URL)

http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下: http: //host[": "port][abs_path] 二、HTTP协议的请求 http请求由三部分组成,分别是: 请求行、消息报头、请求正文 1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下: Method Request-URI HTTP-Version CRLF 其中Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。 请求方法(所有方法全为大写)有多种,各个方法的解释如下: GET 请求获取Request-URI所标识的资源 POST 在Request-URI所标识的资源后附加新的数据 HEAD 请求获取由Request-URI所标识的资源的响应消息报头 PUT 请求服务器存储一个资源,并用Request-URI作为其标识

实验 TCP协议与HTTP协议

实验三TCP协议与HTTP协议 学号__142055210__ 姓名__李奋伟__ 实验机IP_ 192.168.1.103______ 实验机MAC地址_34-E6-D7-77-E7-35__ 日期__2016.6.17 实验目的: 掌握TCP协议内容,掌握HTTP协议内容。 实验步骤: 1、捕获TCP三次握手的过程,如下: 2、写出TCP三次握手的原理。 综合上图,设IP地址为192.168.1.254 的主机为A,IP地址为101.199.97.158 的主机为B。可以分析得出,A是客户,B为服务器。 第一次握手: A的TCP客户进程首先创建TCB,然后向B发出连接请求报文段,首部中的同步位SYN=1,同时初始序号seq=0; 第二次握手: B收到连接请求报文段,同意建立连接,向A发送确认。在确认报文段中把SYN和ACK 置为1,确认号ack=1,初始序号seq=0; 第三次握手: TCP客户进程收到B的确认后,向B给出确认。确认报文段的ACK置1,确认号ack=1,自己的序号为seq=1。 这时,A进入ESTABLISHED(已建立连接)状态。B收到A的确认后,也进入ESTABLISHED状态。 3、分析HTTP协议,写出工作过程。 首先捕获一个数据包,如下: 由上图可知通过三次握手连接成功,请求方式为GET;HTTP为 1.1本;浏览器类型是windows/6.2 IntelUS;Host行定义了目标所在的主机为239.255.255.250:1900\r\n。 原始框显示了分组中包含的数据的每个字节.从中可以观察最原始的传输数据.方框左边是十

六进制的数据,右边是ASCII码。 HTTP 协议定义了 Web 客户端(浏览器)如何向 Web 站点请求 Web 页以及 Web 服务器如何将 Web 页传送给客户机。具体来说,这是通过客户端发送 HTTP 请求报文和 HTTP 响应报文来实现的。当用户请求一个页面时(在浏览器中输入网址或者点击网页某一个链接),浏览器会向 Web 服务器发出对该页及其引用的相关对象的 HTTP 请求报文,服务器响应这些请求报文,生成 HTTP 响应报文,并将请求的对象附在 HTTP 响应报文后发送给客户端。由于网页文档的传输需要可靠性的保证,所以 HTTP 协议使用传输层的 TCP 协议作为载体。 4、分析SMTP协议,写出工作过程。 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。 它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。 5、分析FTP协议,写出工作过程。 FTP 是文件传输协议(File Transfer Protocol)的简称。 FTP 基于 TCP 协议,它通过两个 TCP 连接来传输一个文件,一个是控制连接,另一个是数据连接。相应的,在进行文件传输时,FTP 需要两个端口,分别用于控制连接端口(用于给服务器发送指令以及等待服务器响应)和数据传输端口(在客户机和服务器之间发送一个文件或目录列表)。 两种连接的建立都要经过一个“三次握手”的过程,同样,连接释放也要采用“四次握手”方法。控制连接在整个回话期间一直保持打开状态。数据连接是临时建立的,在文件传送结束后被关闭。 6、使用netstat 查看当前的TCP连接,简要说明。 如下:

1、HTTP协议分析

开放式课题 实验报告 实验名称:基于Wireshark软件的HTTP协议分析 学号: 姓名: 指导教师:宫婧 指导单位:理学院

目录 实验目的..........................................................错误!未定义书签。 1) 掌握Wireshark软件使用方法............. 错误!未定义书签。 2)理解HTTP协议工作原理..................................... 错误!未定义书签。 实验任务.................................... 错误!未定义书签。 1) 抓取数据包........................... 错误!未定义书签。 2)分析数据包........................... 错误!未定义书签。实验环境.............................. 错误!未定义书签。软件介绍 (2) 1) wireshark软件简介 (2) 2) wireshark软件的应用 (2) 3) wireshark软件的价值 (2) 4) wireshark软件的操作简介 (3) HTTP协议详解............................... 错误!未定义书签。 1) HTTP协议基础概念....................... 错误!未定义书签。 2) HTTP协议工作流程....................... 错误!未定义书签。 3) HTTP协议请求响应信息 (6) HTTP请求报文信息....................................6 HTTP响应报文信息....................................7HTTP数据包分析 (8) 1)网络接口层信息 (10) 2)网络层信息 (11) 3)传输层信息 (12) 4)应用层信息 (13) 总结........................................ 错误!未定义书签。参考文献.. (14)

HTTP协议详解,你所不知道的

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器 目前我们使用的是HTTP/1.1 版本 Web服务器,浏览器,代理服务器 当我们打开浏览器,在地址栏中输入URL,然后我们就看到了网页。原理是怎样的呢? 实际上我们输入URL后,我们的浏览器给Web服务器发送了一个Request, Web服务器接到Request后进行处理,生成相应的Response,然后发送给浏览器,浏览器解析Response中的HTML,这样我们就看到了网页,过程如下图所示 我们的Request 有可能是经过了代理服务器,最后才到达Web服务器的。 过程如下图所示

代理服务器就是网络信息的中转站,有什么功能呢? 1. 提高访问速度,大多数的代理服务器都有缓存功能。 2. 突破限制,也就是翻-墙了 3. 隐藏身份。 URL详解 URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下 schema://host[:port#]/path/.../[?query-string][#anchor] scheme 指定低层使用的协议(例如:http, https, ftp) host HTTP服务器的IP地址或者域名 port# HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如https://www.360docs.net/doc/2110124181.html,:8080/ path 访问资源的路径 query-string 发送给http服务器的数据 anchor- 锚 URL 的一个例子 https://www.360docs.net/doc/2110124181.html,/sj/test/test.aspx?name=sviergn&x=true#stuff Schema: http host: https://www.360docs.net/doc/2110124181.html, path: /sj/test Query String: name=sviergn&x=true Anchor: stuff 复制代码

HTTP协议详解

当今web程序的开发技术真是百家争鸣,https://www.360docs.net/doc/2110124181.html,, PHP, JSP,Perl, AJAX 等等。无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用Fiddler工具非常方便地捕获HTTP Request和HTTP Response, 关于Fiddler工具的用法,请看我另一篇博客[Fiddler 教程] 阅读目录 1. 什么是HTTP协议 2. Web服务器,浏览器,代理服务器 3. URL详解 4. HTTP协议是无状态的 5. 打开一个网页需要浏览器发送很多次Request 6. HTTP消息的结构 7. Get和Post方法的区别 8. 状态码 9. HTTP Request header 10. HTTP Response header 11. HTTP协议是无状态的和Connection: keep-alive的区别 什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器 目前我们使用的是HTTP/1.1 版本 Web服务器,浏览器,代理服务器 当我们打开浏览器,在地址栏中输入URL,然后我们就看到了网页。原理是怎样的呢? 实际上我们输入URL后,我们的浏览器给Web服务器发送了一个Request, Web服务器接到Request后进行处理,生成相应的Response,然后发送给浏览器,浏览器解析Response 中的HTML,这样我们就看到了网页,过程如下图所示

HTTP协议的工作流程

HTTP协议的工作流程 当你打开一个页面时,发生了什么 什么叫连接,就是网络上的虚拟电路

HTTP请求信息和响应信息的格式 请求 1.请求行 2.请求头信息 3.请求主体信息 4.头部信息结束后和主题信息之间要空一行 所用的协议一般是HTTP/1.1 请求行又分三部分 请求方法请求路径所用的协议版本 请求方法:GET/POST PUT DELETE TRACE OPTIONS等 问:浏览器能发送HTTP协议,HTTP协议一定要浏览器来发送吗? 答:不是这样的,HTTP既然是一种协议,那么只要满足这种协议,什么工具都可以 注意:头部信息结束后,有一个空行,头信息和主体信息如果有,需要这个空行作区分即使没有主体信息,空行也不能少 另:头信息是非常丰富的,虽然我们图中只写了一个,而且头信息也是学习的重点 响应 1.响应行 2.响应头信息 3.响应主体信息 4.头部信息结束后和主题信息之间要空一行 响应行也分为3部分 协议版本 状态码 状态文字 响应头信息 Key:value Key value Content-lenth:接下来主体的长度 Content-type: application/x-www-form-urlencoded

Hello 用TELNET完成HTTP协议的POST请求 POST比GET多了主体信息 头信息里要标明主体的长度application/x-www-form-urlencoded 但是,服务器仍没有接到信息,因为POST时要告诉服务器Content-type: GET POST PUT TRACE DELETE OPTIONS...

HTTP协议详解(博客园)

HTTP 协议详解 当今web程序的开发技术真是百家争鸣,https://www.360docs.net/doc/2110124181.html,, PHP, JSP,Perl, AJAX 等等。无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要,因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用Fiddler工具非常方便地捕获HTTP Request和HTTP Response, 关于Fiddler工具的用法,请看我另一篇博客[Fiddler 教程] 阅读目录 1什么是HTTP协议 2Web服务器,浏览器,代理服务器 3URL详解 4HTTP协议是无状态的 5HTTP消息的结构 6Get和Post方法的区别 7状态码 8HTTP Request header 9HTTP Response header 10HTTP协议是无状态的和Connection: keep-alive的区别 什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务

器传送到客户端的浏览器 目前我们使用的是HTTP/1.1 版本 Web服务器,浏览器,代理服务器 当我们打开浏览器,在地址栏中输入URL,然后我们就看到了网页。原理是怎样的呢? 实际上我们输入URL后,我们的浏览器给Web服务器发送了一个Request, Web服务器接到Request后进行处理,生成相应的Response,然后发送给浏览器,浏览器解析Response中的HTML,这样我们就看到了网页,过程如下图所示 我们的Request 有可能是经过了代理服务器,最后才到达Web服务器的。 过程如下图所示

基于wireshark的HTTP协议分析

长沙理工大学计算机与通信工程学院 《计算机网络》课程设计报告 学 院 计算机与通信工程 专 业 通信工程 班 级 通信1003班 学 号 201054080333 学生姓名 赵旋 指导教师 熊兵 课程成绩 完成日期 2013年7月11日

课程设计成绩评定 院系计算机与通信工程专业通信工程 班级1003 学号201054080333 学生姓名赵旋指导教师熊兵 指导教师对学生在课程设计中的评价 评分项目优良中及格不及格学习态度与遵守纪律情况 课程设计完成情况 课程设计报告的质量 指导教师成绩指导教师签字年月日 课程设计答辩组对学生在课程设计中的评价 评分项目优良中及格不及格课程设计完成情况 课程设计报告的质量 课程设计答辩 答辩组成绩答辩组长签字年月日 课程设计综合成绩 注:课程设计综合成绩=指导教师成绩×60%+答辩组成绩×40%

课程设计任务书 计算机与通信工程学院通信工程专业 课程名称计算机网络时间2013学年第二学期19~20周 学生姓名赵旋指导老师熊兵 题目基于wireshark的HTTP协议分析 主要内容: 1、利用wireshark软件进行抓包; 2、分析HTTP协议的数据包; 3、分析HTTP(Address Resolution Protocol)报文格式; 要求: (1)掌握用wireshark软件的操作。 (2)按照要求来写课程设计报告,能够正确分析HTTP协议的内容。 应当提交的文件: (1)课程设计报告。

基于Wireshark的HTTP协议分析 学生姓名:赵旋指导老师:熊兵 摘要本文通过协议分析工具Wireshark软件作为HTTP协议的设计平台,通过对连接网页时用Wireshark进行抓取协议,再过滤得到HTTP协议。并分析HTTP协议从而了解HTTP协议的数据包。通过此次课设了解并且学会使用Wireshark软件,学会如何利用Wireshark进行捕获抓包、过滤对协议进行分析,而且进一步掌握HTTP协议。 关键词Wireshark;数据包;HTTP协议 1 引言 经过计算机网络基础前面时间的学习,使我们对网络应用层的协议有了一定的了解。协议就像一门语言,需要定义语法、语意和语序(时序、同步)。语法即为协议的具体格式;语意定义了具体格式中具体指代,比如说,空一行后的数据表示为数据字段;就目前说掌握的只是而言,我对语序的理解还不是很清楚,这里就不加赘述。 下面将主要从应用层的协议出发,利用我们所学习过的知识,对不同的应用请求响应过程进行分析,探究在不同网络工作环境下网络协议的变化。 1.1 课程设计目的 (1) 熟悉并掌握WireShark的基本操作,了解网络协议实体间的交互以及报文交换。 (2) 通过对WireShark抓包实例进行分析,进一步加深对常用网络协议的理解,如DNS和HTTP协议。 (3) 培养理论联系实践的科学研究精神。

HTTP协议分析实验

HTTP协议分析实验报告 专业:计算机信息工程学院12级网络工程2班 学号:1208066057 学生姓名:汪国庆 一、实验目的: 1.分析http请求报文的含义和响应报文的含义。 2.知道http1.1和http1.0的异同。 3.通过http协议获取网页流程。 二、实验原理:(参考自互联网) RFC 1945定义了HTTP/1.0版本。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。 HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。 HTTP协议永远都是客户端发起请求,服务器回送响应。见下图: 这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。 HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。 一次HTTP操作称为一个事务,其工作过程可分为四步: 1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。 3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。 4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。 如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。 三、实验步骤 1、打开Wireshark,选择工具栏上的“Capture”->“interfaces选择网关”,如图: 2、然后在Wireshark,选择工具栏上的“Capture”->“optoins”选择过滤器,并在capture filter 中输入tcp port 80(表示要抓http的包),如图

HTTP协议组成总结

HTTP协议----超文本传送协议 2012-12-8 HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议。 关键词 1.连接(Connection):一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。 2.消息(Message):HTTP通讯的基本单位,包括一个结构化的八元组序列并通过连接传输。 3.请求(Request):一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号。 4.响应(Response):一个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。 5.资源(Resource):由URI标识的网络数据对象或服务。 6.实体(Entity):数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。 7.客户机(Client):一个为发送请求目的而建立连接的应用程序。 8.用户代理(User agent):初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。 9.服务器(Server):一个接受连接并对请求返回信息的应用程序。 10.源服务器(Origin server):是一个给定资源可以在其上驻留或被创建的服务器。 11.代理(Proxy):一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。 代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用

HTTP协议的作用原理

HTTP协议的作用原理 WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网 页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务 器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议 之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对 象的协议。HTTP协议的作用原理包括四个步骤: 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文 件,此文件的建立标志着连接建立成功。 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET 或POST命 令(POST用于FORM参数的传递)。GET命令的格式为: GET 路径/文件名 HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后, 进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求 的页面。 例:假设客户机与https://www.360docs.net/doc/2110124181.html,:8080/mydir/index.html建立了连接,就会发 送GET命令: GET /mydir/index.html HTTP/1.0。主机名为https://www.360docs.net/doc/2110124181.html, 的Web服 务器从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器 把该文件内容传送给相应的Web浏览器。 为了告知 Web浏览器传送内容的类型,Web服务器首先传送一些HTTP头信息,然后传 送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。 常用的HTTP头信息有:

java,http协议解析

竭诚为您提供优质文档/双击可除java,http协议解析 篇一:详解http传输协议 何为http协议(hypertexttransferprotocol,超文本传输协议)? 所谓协议,就是指双方遵循的规范。http协议,就是浏览器和服务器之间进行“沟通”的一种规范。我们在看空间,刷微博...都是在使用http协议,当然,远远不止这些应用。 笔者一直听说http是属于“应用层的协议”,而且是基于tcp/ip协议的。这个不难理解,如果你上大学时候学过“计 算机网络”的课程,就一定知道osi七层参考协议(我当时是死记硬背的)。如果你接触过socket网络编程,就应该明白tcp和udp这两种使用广泛的通信协议(建立连接、三次握手等等,当然,这不是本文讨论的重点)。 如图: 既然tcp/udp是广泛使用的网络通信协议,那为啥有多出个http协议来呢?

笔者曾自己动手写过一个简单的web服务器处理软件,根据我的推断(不一定准确)。udp协议具有不可靠性和不安全性,显然这很难满足web应用的需要。 而tcp协议是基于连接和三次握手的,虽然具有可靠性,但仍具有一定的缺陷。但试想一下,普通的c/s架构软件,顶多上千个client同时连接,而b/s架构的网站,十万人同时在线也是很平常的事儿。如果十万个客户端和服务器一直保持连接状态,那服务器如何满足承载呢? 这就衍生出了http协议。基于tcp的可靠性连接。通俗点说,就是在请求之后,服务器端立即关闭连接、释放资源。这样既保证了资源可用,也吸取了tcp的可靠性的优点。 正因为这点,所以大家通常说http协议是“无状态”的,也就是“服务器不知道你客户端干了啥”,其实很大程度上 是基于性能考虑的。以至于后来有了session之类的玩意。 实战准备工作: 在监视网络方面,windows平台上有一款叫做sniffer 的优秀软件,这也是很多“黑客”经常使用的嗅探工具。 在 研究http协议时,推荐大家使用一款

深入理解HTTP协议及原理分析

深入理解HTTP协议及原理分析 HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中 的哪一部分,以及哪部分容首先显示等。 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分容首先显示(如文本先于图形)等。 HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP 是一个无状态的协议。 1.2 在TCP/IP协议栈中的位置 HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:

默认HTTP的端口号为80,HTTPS的端口号为443。 1.3 HTTP的请求响应模型 HTTP协议永远都是客户端发起请求,服务器回送响应。见下图: 这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。 HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请没有对应关系。 1.4 工作流程 一次HTTP操作称为一个事务,其工作过程可分为四步: 1)首先客户机与服务器需要建立连接。只要单击某个超级,HTTP的工作开始。 2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的容。

Http协议讲解

了解WWW服务与HTTP协议/上网工作原理(图) 历史上,先后问世了多个具有重大社会影响的电子通信技术。第一个这样的技术是19世纪70年代发明的电话。电话使得不在同一物理位置的两人得以实时地口头交流。它对社会有重大的影响——有好的也有坏的。下一个电子通信技术是20世纪20年代及30年代问世的广播收音机/电视机。广播收音机/电视机使得人们能收听收视大量的音频和视频信息。它对社会同样有重大的影响——有好的也有坏的。改变了人们的生活与工作方式的第三个重大通信技术是web。web最吸引用户的也许是它的随选(on demand)操作性。用户只在想要时收到所要的东西。这一点不同于广播收音机/电视机。广播收音机/电视机的用户是在其内容供应商播出内容期间被迫收听收视。除了随选操作性,Web还有许多大家喜爱的其他精彩特性。任何个人都可以极其容易地在Web上公布任何信息;任何人都可能以极低的成本成为发行人。超链接和搜索引擎帮助我们在Web站点的海洋中导航。图形和动画刺激着我们的感官。表单、Java小应用程序、Activex控件以及其他许多设备使得我们能与Web页面和站点交互。Web还越来越普遍地提供存放在因特网中的、可随选访问(即点播)的大量音频和视频材料的菜单接口。 HTTP概貌 Web的应用层协议HTTP是Web的核心。HTTP在Web的客户程序和服务器程序中得以实现。运行在不同端系统上的客户程序和服务器程序通过交换HTTP消息彼此交流。HTTP定义这些消息的结构以及客户和服务器如何交换这些消息。在详细解释HTTP之前,我们先来回顾一些web中的术语。 Web页面(web page,也称为文档)由多个对象构成。对象(object)仅仅是可由单个URL寻址的文件,例如HTML文件、JPG图像、GIF图像、JAVA小应用程序、语音片段等。大多数Web页面由单个基本HIML 文件和若干个所引用的对象构成。例如,如果一个Web页面包含HTML文本和5个JPEG图像,那么它由6个对象构成,即基本H1ML文件加5个图像。基本HTML文件使用相应的URL来引用本页面的其他对象。每个URL由存放该对象的服务器主机名和该对象的路径名两部分构成。例如,在如下的URL中: https://www.360docs.net/doc/2110124181.html,/urlpath/picture.qif https://www.360docs.net/doc/2110124181.html,是一个主机名,/urlpath/picture.qif是一个路径名。浏览器是web的用户代理,它显示所请求的Web页面,并提供大量的导航与配置特性。Web浏览器还实现HTTP的客户端,因此在web 上下文中,我们会从进程意义上互换使用“浏览器”和“客户”两词。流行的Web浏览器有Netscape Com municator,firefox和微软的IE等。Web服务器存放可由URL寻址的Web对象。web服务器还实现HTTP 的服务器端。流行的Web服务器有Apache、微软的IIS以及Netscape Enterprise Server。Netcraft提供了web服务器的概要剖析[Netcrft 2000]。 HTTP定义Web客户(即浏览器)如何从web服务器请求Web页面,以及服务器如何把Web页面传送给客户。下图展示了这种请求—响应行为。当用户请求一个Web页面(譬如说点击某个超链接)时,浏览器把请求该页面中各个对象的HTTP请求消息发送给服务器。服务器收到请求后,以运送含有这些对象HTTP响应消息作为响应。到1997年底,基本上所有的浏览器和Web服务器软件都实现了在RFC 1945中定义的HTTP /1.0版本。1998年初,一些Web服务器软件和浏览器软件开始实现在RFC 2616中定义的HTTP/1.1版本。H1TP/1.1与HTTP/1.0后向兼容;运行1.1版本的web服务器可以与运行1.0版本的浏览器“对话”,运行1.1版本的浏览器也可以与运行1.0版本的Web服务器“对话”。

相关主题
相关文档
最新文档