用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

柯侧耳倾听者    -  云代码空间

—— 翱翔在Java世界的海洋之上

HTTP协议

2017-12-25|1724阅||

摘要: HTTP协议 一.【实验目的与要求】 1. 掌握HTTP的报文格式 2. 掌握HTTP的工作原理 3. 掌握HTTP常用方法 二.【实验环境】 该实验采用网络结构一 三.【实验原理】 1.体系结构      万维网(WWW)服务是分布式的客户

 HTTP协议

一.【实验目的与要求】

1. 掌握HTTP的报文格式
2. 掌握HTTP的工作原理
3. 掌握HTTP常用方法

.【实验环境】

该实验采用网络结构一

.【实验原理】

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

9.1  分布式的服务

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

9.2  URL

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

9.3  静态文档

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

3.HTTP协议简介
     HTTP(超文本传输协议)主要用于访问万维网上的数据。协议以普通文本、超文本、音频、视频等格式传输数据。之所以称为超文本协议,原因是在应用环境中,它可以快速的在文档之间跳转。HTTP在熟知端口80上使用TCP服务。

4.HTTP报文格式
     HTTP报文有两种一般的类型:请求和响应。这两种类型的报文格式几乎是相同的。报文格式如下图所示:

9.4  HTTP报文格式

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

9.1  HTTP方法

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

9.2  HTTP状态码

四、【预习与准备】

预习有关HTTP协议的原理及其工作机制,准备好安装有Windows XP或Window 7系统的PC机一台,搭建好实验所需的网络拓扑结构一。

五、【实验内容】

练习1  页面访问

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


    ●  本练习使用HTTP协议的哪种方法?简述这种方法的作用。
   get方法,作用:客户从服务器读取文档使用
    ●  简述TCP协议和HTTP协议之间的关系。

HTTPTCP协议族中的一种。使用TCP80端口

练习2  页面提交

本练习一人一组,现仅以主机A为例,其它主机参考主机A的操作。
1. 主机A启动协议分析器开始捕获数据,并设置过滤条件(提取HTTP协议)。
2.主机A启动IE浏览器,在地址框中输入“http://服务器的ip/experiment/post.html”,并连接,服务器IP默认为172.16.0.253。在返回页面中,填写用户名密码,点击[确定]按钮。


3.主机A停止捕获数据,分析捕获到的数据,并回答以下问题:
    ●  本练习的提交过程使用HTTP协议的哪种方法?简述这种方法的作用。

Post方法,作用:客户给服务器提供信息时使用
    ●  此次通信分几个阶段?每个阶段完成什么工作?

2个阶段,分别完工页面的访问和页面的提交

练习3  获取页面信息

本练习一人一组,现仅以主机A为例,其它主机参考主机A的操作。
1. 主机A启动实验平台工具栏中的“TCP工具
2. 主机A启动协议分析器开始捕获数据,并设置过滤条件(提取HTTP协议)。
3. 主机A“TCP工具上,选中客户端单选框,设置“IP地址为服务器IP172.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停止捕获数据,分析捕获到的数据。

 

 

练习4  较复杂的页面访问

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

用户在浏览器的地址栏输入web站点的URL,URL中的信息被浏览器提取出来打包到一个http请求报文中,然后传输给底层的传输层、网络层和链路层协议,该请求报文的运行web服务器软件的目标计算机接收,服务器处理该请求报文并且获取所需信息,然后创建一个http响应报文传输。这个响应应由客户端接收,浏览器解释,然后再显示给用户。
6. 恢复网络环境,将首选DNS服务器清空。

 

 

 

练习5  常用的网络协议分析工具的使用

(以Ethereal的使用为例)

1.安装Ethereal。

下载地址:http://www.Ethereal.com

2.启动Ethereal,界面如下:

9.8  Ethereal启动界面

最初的窗口中没有数据,因为还没有开始捕获数据包,首先来认识一下界面。

Ethereal主窗口有很多的GUI程序组成:

    1) File(文件):这个菜单包含:打开文件、合并文件、保存/打印/导出整个或部分捕获文件、退出。

    2) Edit(编辑)这个菜单包括:查找包、时间参照、标记一个或多个包、设置参数、(剪切、复制、粘贴)。

    3) View(查看):这个菜单控制捕获数据的显示,包括:给定特定的一类包标以不同的颜色、字体缩放、在一个新窗口中显示一个包、展开&折叠详细信息面板的树状结构。

    4) Go:这个菜单实现转到一个特定包。   

5) Capture(捕获):这个菜单实现开始、停止捕获,编辑捕获过滤条件的功能。

    6) Analyze(分析):这个菜单包含编辑显示过滤、enable(开)或disable(关)协议解码器、配置用户指定的解码方法、追踪一个TCP 流。

     7) Statistics(统计):该菜单完成统计功能。包括捕获的包的一个摘要、基于协议的包的数量等树状统计图等许多功能。

     8) Help(帮助)这个菜单包含了一些对用户有用的信息。比如基本帮助、支持的协议列表、手册页、在线访问到网站等等。

3.使用Capture Options对话框。

     要想获得一个跟踪记录,我们首先从Capture(捕获)菜单中选择“Capture Options”(捕获选项),并用Capture Options对话框来指定跟踪记录的各个方面。

9.9  Ethereal参数设置对话框

1)Interface(接口)

    首先要选择合适的接口,也就是网卡,如何不选择合适的接口,可能捕获不到数据包。

    上图中黄色框1,这个字段指定在哪个接口进行捕获。这是一个下拉字段,只能从中选择Ethereal 识别出来的接口,要想捕获到数据,首先要选择正确的适配器(网卡),如果一台机器同时拥有以太网网卡和无线网络网卡,你必须选择其中一个进行监测。

2)IP address(IP 地址)

    所选接口卡的IP 地址。如果不能解析出IP 地址,则显示"unknown"。

3)Link-layer header type(链路层头类型)

    除非你在极个别的情况下可能用到这个字段,大多数情况下保持默认值。

4)Buffer size: n megabyte(s) (缓冲区大小:n 兆)

    输入捕获时使用的buffer 的大小。这是核心buffer 的大小,捕获的数据首先保存在这里,直到写入磁盘。如果遇到包丢失的情况,增加这个值可能解决问题。

    本实验中保持默认值。

5) Capture packets in promiscuous mode (在混杂模式捕获包,绿色框2)

    这个选项允许设置是否将网卡设置在混杂模式。如果不指定,Ethereal 仅仅捕获那些进入你的计算机的或送出你的计算机的包。(而不是LAN 网段上的所有包)。

    要想把网络接口设置为混杂模式,需要对这台计算机具有管理员特权。

    可以选。

6)Limit each packet to n bytes (限制每一个包为n 字节)

    这个字段设置每一个数据包的最大捕获的数据量。有时称作snaplen 。如果disable 这个选项默认是65535, 对于大多数协议来讲中够了。

    本实验中保持默认值。

7) Capture Filter(捕获过滤,蓝色框3)

    这个字段指定一个捕获过滤。 “在捕获时进行过滤”部分进行讨论。默认是空的,即没过滤。也可以点击标为Capture Filter 的按钮, Ethereal 将弹出Capture Filters(捕获过滤)对话框,来建立或者选择一个过滤。

    例如,你可以用下面的过滤器来捕获那些只从IP地址192.168.0.1发出和发往它的分组:host 192.168.0.1。Ethereal过滤器功能很强,但是需要学习一种简单的过滤语言。

    本实验中保持默认值,暂时不需设置。

8)Capture File(捕获文件,紫色框4)

    可以指定将捕获的分组直接保存在一个文件中,而不是在内存中。选择一个合适的文件夹,将捕获的信息存入。

9)Use Multiple Files(使用多个文件,枚红色框5)

    使用这个选项,分组可以被写入多个文件。这些控制对于捕获较大较长的跟踪记录是很重要的。

    本实验中保持默认值。

10)Stop Capture(停止捕获)

    可以设定一些停止捕获的选项,自动停止捕获。

    本实验中保持默认值。

11)Name Resolution(名字解析,黑色框7)

    在任何可能的情况下,可以要求Ethereal把分中不同的数字翻译成为人们易读的名字。如:启用MAC地址转换,Ethereal会将一部分地址转化为厂商的名称。如启用网络地址转换,Ethereal会试图将一个网络地址(201.100.1.9的IP地址)转化为一个主机名,如www.foo.com

    本实验中保持默认值。

12)Update list of packets in real time (实时更新分组列表,红色框6)

    每个新的分组都会被添加到主窗口中的分组列表中去。

    勾选。

4.开始捕获数据包。

    上述的各项选择好后,点击“start”开始捕获数据包,下图为捕获时的情形。  

9.10  Ethereal捕获窗口

5.停止捕获。

    大约等一段时间后(30-60秒),点击“stop”按钮,停止捕获后,会弹出下面的窗体,显示了刚才捕获到的包。

9.11  Ethereal捕获数据包

6.抓包体验:

1)运行Ethereal 截获报文,为了只截获和实验内容有关的报文,将Ethereal 的Captrue Filter 设置为“Not Broadcast and not Multicast”

2)在“运行”对话框中输入命令“Ping 相邻主机IP”,单击“确定”按钮;

3)停止截获报文:并对截获的报文进行分析。

4)重新运行Ethereal 截获一个广播报文。 (提示:如何截获广播报文?要关掉过滤器;先执行 arp –d命令清空arp缓存,可以用arp –a命令查看arp缓存是否清空了;再向邻居站点发消息,比如ping对方就可以看到arp的请求广播。)

 

顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: 柯侧耳倾听者
    • 等级: 初级设计师
    • 积分: 2220
    • 代码: 64 个
    • 文章: 64 篇
    • 随想: 5 条
    • 访问: 44 次
    • 关注

    标签

    最新提问

      站长推荐