电脑网络知识_超文本传输协议(HTTP)的学习

一. 体系结构 万维网(WWW)服务是分布式的客户/服务器服务,客户使用浏览器能够得到服务器提供的服务,这种服务的提供是分布在许多网站中的,如下图所示:

图13-1 分布式的服务

每一个网站保存有一个或多个文档,叫做万维网页面。在图12-1所示的例子中,客户需要查看网站A的某些信息。浏览器用来读取万维网上的文档。它向网站A发送一个请求,这个请求包含了网站A和网站中万维网页面的地址,这个地址叫做统一资源定位符(URL)。网站A收到请求后,将指定的文档发送给这个客户。它用同样的方法与网站B通信。1. 客户(浏览器) 许多厂商提供商用浏览器,可以解释和显示万维网页面。每一个浏览器通常由3个部分组成:控制程序、客户程序及解释程序。控制程序从键盘或鼠标接收输入,使用客户程序访问要浏览的文档。在文档找到后,控制程序就使用解释程序(可以是HTML、Java或JavaScript等)中的一个,把文档显示在屏幕上。2. 服务器 万维网页面存储在服务器上。每当有客户请求到达时,对应的文档就发送给客户。为了提高效率,服务器通常在其高速缓存中存储被请求过的文档;对高速缓存进行访问要比磁盘快得多。通过多线程或多进程可使服务器的效率更加提高,服务器在同一时间可回答多个请求。3. 统一资源定位符(URL) 客户要访问万维网页面就需要这个页面地址。为了方便地访问文档,HTTP协议使用统一资源定位符(URL)。URL是Internet上指定信息的标准。URL由4部分组成:协议、主机、端口和路径,如下图所示:

图13-2 URL

协议:协议指定了用这个URL的客户/服务器程序。例如,HTTP协议、FTP协议和TELNET协议等。 主机:主机指明了信息所存放的地址,可以是逻辑地址也可以是相应的域名。存放万维网页面的计算机通常使用以字符"WWW"开始的域名,但这不是强制性的。 端口:端口指定了使用主机的某个端口,端口是可选的。如果包含了端口,那么端口就插入在主机和路径之间,和主机用冒号分隔开。 路径:路径指定了文件存放的位置。路径本身可以包含斜线,用于将目录与子目录和文件分隔开。二. 万维网文档 万维网文档可分为3类:静态文档、动态文档和活动文档。这种分类是基于文档内容被确定的时间。1. 静态文档 静态文档是固定内容的文档,它由服务器创建,并存储在服务器中。客户只能得到文档的一个副本。换言之,文件的内容是在文件被创建时就确定的,而不是在它被使用时。当然,在服务器中的内容是可以改变的,但用户不能改变它。当客户访问文档时,文档的一个副本就被发送出去。用户可以使用浏览程序显示这个文档,如下图所示:

图13-3 静态文档

2. 动态文档 动态文档是在浏览器请求该文档时才由万维网服务器创建出来。当请求到达时,万维网服务器就运行创建动态文档的应用程序。服务器返回这个程序或脚本的输出,把它作为对请求该文档的浏览器的响应。因为对每一个请求都创建出新的文档,因此每一个请求得到的动态文档的内容就会不同。3. 活动文档 对于许多应用,需要程序能够在客户端运行,这就叫做活动文档。当浏览器请求活动文档时,服务器就发送这个文档的一个副本或脚本。然后这个文档就在客户(浏览器)端运行。

三. HTTP协议简介四. HTTP报文格式

三. HTTP协议简介 HTTP(超文本传输协议)主要用于访问万维网上的数据。协议以普通文本、超文本、音频、视频等格式传输数据。之所以称为超文本协议,原因是在应用环境中,它可以快速的在文档之间跳转。HTTP在熟知端口80上使用TCP服务。四. HTTP报文格式 HTTP报文有两种一般的类型:请求和响应。这两种类型的报文格式几乎是相同的。报文格式如下图所示:

图13-4 HTTP报文格式

五. HTTP方法

五. HTTP方法 HTTP报文中的方法是客户端向服务器端发出的实际命令和请求。常用HTTP方法如下表所示:

表13-1 HTTP方法

六. HTTP状态码

六. HTTP状态码 在响应报文中,请求行被替换为状态行,由3位数字组成,表示请求是否被理解或被满足。HTTP协议的状态码如下表所示:

表13-2 HTTP状态码

七. 持久与非持久连接 1. 非持久连接 2. 持久连接

七. 持久与非持久连接 在版本1.1以前的HTTP协议默认是非持久连接的,而在版本1.1中,持久连接是默认的连接。1. 非持久连接 在非持久连接中,对每一个请求/响应都要建立一次TCP连接。非持久连接的步骤如下: ● 客户打开TCP连接,并发送请求。 ● 服务器发送响应,并关闭连接。 ● 客户读取数据,直到它遇到文件结束标记;然后它关闭连接。 使用非持久连接时,对于在不同文件中的N个不同图片的请求,连接必须打开和关闭N次。非持久连接策略给服务器造成了很大的开销,因为服务器需要N个不同的缓存,而每次打开连接时都要使用慢开始过程。2. 持久连接 HTTP版本1.1指明持久连接是默认的策略。在使用持久连接时,服务器在发送响应后,让连接继续为一些请求打开。服务器可以在客户发送关闭请求时等待或关闭这个连接。发送端通常在每一个响应中都发送数据长度。但是,有时发送端并不知道数据的长度(例如动态文档或活动文档),这时服务器就把长度不知道这件事通知客户,并在发送数据后关闭这个连接,这样客户就知道数据结束的地方已经到了。

八. HTTP代理服务器

八. HTTP代理服务器 HTTP支持代理服务器(proxy server)。代理服务器保留对最近请求的响应的副本。在有代理服务器的情况下,HTTP客户把请求发送给代理服务器。代理服务器检查它的高速缓存。如果在高速缓存中有这个响应,代理服务器就直接应答客户的请求;反之,如果在高速缓存中没有这个响应,代理服务器就把请求发送给相应的HTTP服务器,当HTTP服务器的响应到达代理服务器时,代理服务器将该响应转发给客户,同时将该响应存储到高速缓存中,以便以后为其它客户的请求使用。 代理服务器减少了原始服务器的负荷,减小了通信量,也减小了延时。但是,由于使用了代理服务器,客户必须配置成接入到代理服务器而不是那个目标服务器。

页面访问

各主机打开工具区的"拓扑验证工具",选择相应的网络结构,配置网卡后,进行拓扑验证,如果通过拓扑验证,关闭工具继续进行实验,如果没有通过,请检查网络连接。 本练习一人一组,现仅以主机A为例,其它主机参考主机A的操作。1. 主机A清空IE缓存。2. 主机A启动协议分析器开始捕获数据,并设置过滤条件(提取HTTP协议)。3. 主机A启动IE浏览器,在"地址"框中输入http://服务器的ip/experiment,并连接,服务器IP默认为172.16.0.253。4. 主机A停止捕获数据,分析捕获到的数据,并回答以下问题: ● 本练习使用HTTP协议的哪种方法?简述这种方法的作用。 ● 根据本练习的报文内容,填写下表。

表13-3 实验结果

● 参考"会话分析"视图显示结果,绘制此次访问过程的报文交互图(包括TCP协议)。 ● 简述TCP协议和HTTP协议之间的关系。

页面提交

本练习一人一组,现仅以主机A为例,其它主机参考主机A的操作。1. 主机A启动协议分析器开始捕获数据,并设置过滤条件(提取HTTP协议)。2. 主机A启动IE浏览器,在"地址"框中输入"http://服务器的ip/experiment/post.html",并连接,服务器IP默认为172.16.0.253。在返回页面中,填写"用户名"和"密码",点击[确定]按钮。3. 主机A停止捕获数据,分析捕获到的数据,并回答以下问题: ● 本练习的提交过程使用HTTP协议的哪种方法?简述这种方法的作用。 ● 此次通信分几个阶段?每个阶段完成什么工作? ● 参考"会话分析"视图显示结果,绘制此次提交过程的报文交互图(包括TCP协议)。

获取页面信息

本练习一人一组,现仅以主机A为例,其它主机参考主机A的操作。1. 主机A启动实验平台工具栏中的"TCP工具"。2. 主机A启动协议分析器开始捕获数据,并设置过滤条件(提取HTTP协议)。3. 主机A在"TCP工具"上,选中"客户端"单选框,设置"IP地址"为服务器IP(172.16.0.253);设置"端口"为80;单击[连接]按钮来和服务器建立连接。4. 主机A在"TCP工具"上,设置"发送数据(文本)"为以下内容: HEAD /experiment/ HTTP/1.1<CRLF> Host: 172.16.0.253<CRLF> <CRLF> 点击[发送]按钮。 (注:<CRLF>是回车换行) 点击[断开]按钮,断开TCP连接(由于不同http版本所遵循的规范不同,有些HTTP服务器不需要断开操作)。 5. 主机A在"TCP工具"上的"显示数据(文本)"中察看服务器返回信息。6. 主机A停止捕获数据,分析捕获到的数据。

较复杂的页面访问

本练习一人一组,现仅以主机A为例,其它主机参考主机A的操作。1. 本练习中要求各主机设置DNS服务器地址(DNS服务器的IP地址即主控中心平台的IP地址),其IP地址以172.16.0.253为例。2. 主机A使用"ipconfig /flushdns"命令清空DNS高速缓存。3. 主机A启动协议分析器开始捕获数据并设置过滤条件(提取DNS、HTTP协议)。4. 主机A启动IE浏览器,在地址框中输入。5. 主机A停止捕获数据,察看相关会话,分析捕获到的数据,并回答以下问题: ● 结合本次实验结果,简述浏览器是如何处理一个访问请求的。6. 恢复网络环境,将"首选DNS服务器"清空。

1. 一个主页是否只有一个连接?

1. 同时打开多个浏览器窗口并访问一个WEB站点的不同页面时,系统是根据什么把返回的页面正确地显示到相应窗口的?

1. 为什么HTTP不保持与客户端的TCP连接?