-
精品
实验二:
Ethereal
Lab
——
HTTP
协议
一、实验目的
通过本次实验,利用<
/p>
Ethereal
软件从以下几个方面研究
HTTP
协议的运
行机制:
实验
2-1
:基本
的
GET/response
交换;
实验
2-2
:
HTTP
的有条件
GET/respo
nse
交互;
实验
2-3
:
利用
HTTP
获取大的
HTML
文件;
实验
2-4
:利用
HTTP
获取带有嵌入式对象的
HTML
文件;
实验
2-5
:
HTTP
认证与安全。
二、实验原理
万维网
(World
Wide
p>
Web,WWW)
是一种基于因特网的分布式信息查询系
统。
WWW
的工作基于客户机
/
服务器模型,由
Web
浏览器<
/p>
(
客户机
)
向<
/p>
Web
服
务器
(
服务器
)
请求由超文本标记语言
(HTML)
编辑的网页,
Web
服务器进行响应,
返回相应网页,两者之间采用超文本传送协议(
HTTP
)进行通信。
HTTP
有两种报文类型:请求报文和响应报文。请求报文的格式如下图
1
,
响应报文格式如下图
2
:
图
1
:
p>
HTTP
请求报文
图
2
p>
:
HTTP
响应报文
浏览器可以缓存最近请求过的对象的拷贝,避免再次向服务器请求该对象,
减少响应时间。但是缓存的对象有可能因为服务器端最近做过修改而变得陈旧,
< br>HTTP
允许浏览器证实缓存的对象是否是最新的,即条件
GET
方法。
条件
GET
-
可编辑
-
精品
方法在请求报文中使用
GET
方法,并包含一个
If-
Modified-Since
首部行,含
义是告诉服务器仅当
自指定日期之后修改过该对象时才发送该对象。
如果服务器
在指
定日期后并未修改该对象,则不再返回该对象。
网页是由对象
组成的,对象如
HTML
文件、
JPE
G
图形文件、
Java
小程序
等等。
多数
Web
页含
有一个基本的
HTML
文件和多个引用对象,
< br>在基本的
HTML
文件中通过对象的
URL
地址对对象进行引用,对象可能存储在多个不同的服务
器上,浏览器通过对象的
URL
地址向不同的服务器发出请求
。
三、实验步骤与实验问题探讨
【注
:实验步骤应用(
x
)
,
问题用
[x]
】
1.
基本的
HTTP
GET/response
交互
下面
利用
HTTP
获取一个简单的
HTML
文件(一个非常短且不含有嵌入式
对象的文件)
。按下列步骤操作:
(1)
打开网页浏览器
(2)
启
动
Etherea
l
分
组
嗅
探<
/p>
器
(
但
还
不
要
开
始
数
据
包
抓
取
)
。
在
display-filter-specification
窗口中输入
“
http
”
,
这样在
packet-listing
窗口将
只显示被抓取的
HTTP
数据包。
p>
(3)
等待超过一分钟时间(稍后解释为
什么)
,然后开始
Ethereal
分
组抓取
(4)
在浏览器中输入
/ethereal-labs/.
浏览器
应
显示这个非常简单的只有一行的
HTML
文件。
(5)
停止
Etherea
l
数据抓取。
Ethereal
窗口应
该看起来与图
1
相似
.
(6)(
注意:
如果你无法
建立一个网络连接并运行
Ethereal,
可以下载一个分组
trace
文件,
它是按照上述步骤在
某主机上执行后由
Ethereal
捕获到的数据文件
.
-
可编辑
-
精品
下载
/ethereal-labs/
压缩文件,
然后解压文件
http-ethereal-tra
ce-1,
你就可以用
File
下拉菜
单中的
Open
命令
来装载它并查看结
果。
(应与图
1
相似)
)----
标注
1
图
1
中显示在
pack
et-listing
窗口中有两个
HTTP
< br>数据包被捕获:○
1
GET
数据
包(从你的浏览器到
网络服务器)
p>
;○
2
响应数据包(从服务器
到你的浏览器)
。
Packet-contents
窗口显示了被选择数据包的细节。
(图中选择
< br>显示的是
HTTP GET
数据包)
。
既然
HTTP
数据包是被封装在
TCP
报文段中传送的,
而
TCP
报文段是被封装在
IP
数据包中传递,
IP
数据包又是在以太网帧中传递的,
p>
所以
Ethereal
还显示了帧、
以太网、
IP
、
TC
P
的分组信息。
这里将显示的非
HTT
P
数据最小化
(这里我们只对
HTTP
感兴趣,
将在后续实验中研究其它协议)
,
因此
要确保帧、以太网、
IP
p>
、
TCP
信息的最左端呈现指向右的箭头或
加号(这表示有
隐藏的信息)
,而
HT
TP
行有一个指向下的箭头或减号(表明关于
HTTP
数据的所
有信息都显示了)
(注意:
你应该对
产生的
HTTP
GET/response
忽略
不计。如果你看到对这个文件的
一个引用(
reference
)
,<
/p>
它是你的浏览器在自动
的向服务器询问是否服务器有一个小的图标
文件,该文件应紧随被显示的
URL
在浏览器中显示。我们将忽
略实验中对该麻烦文件的所有引用。
)
-
可编辑
-
精品
图
1
:在<
/p>
/ethereal-labs/
已被你浏览器获取后
Ethereal
显示界面
查阅
HTTP GET
和
response
报文的相关信息,回答下列问题:
[1]
你的浏览器正运行的
HTTP<
/p>
版本号是
1.0
还是
1.1?
服务器运行的
HTTP
版
本号是多少?
答:你的浏览器是
p>
1.1
版本
服务
器运行的
HTTP1.1
版本
[2]
你的浏览器向服务器表示它可以接受哪些语言?
答:
en-
us
,
en
;
[3]
你的主机
IP
< br>地址是多少?
服务器的
IP
p>
是多少?
答:主机:
192.168.1.102
服务器:
< br>128.119.245.12
[4]
从服务器向你的浏览器返回的状态代码是什么?
答:
200 OK
-
可编辑
-
精品
[5]
你正获取的
HTML
文件在服务器上最后一次被修改是什么时间
?
答:
Last
—
Modified
:
Tue
p>
,
23
sep 2003
05:29:50 GMT
[6]
有
多少字节的内容被返回到你的浏览器?
答:
Content-length
:
73
字节
[7]
观察
packet
content window
的原始数据,你可以看到一些未被显示在
packet-listing
window
的一些头部吗?如果有,列举一个。
答:没有
在你回答问题
[5]
时,
你会吃惊的发现你刚刚下载的文档在你下
载前的一分钟
内被修改的。这是因为
服
务器针对这一特定文件每隔一分钟
将这一文件的最后修改时间设置为当前时间。
因此,
如果你在两次读取之间等待
一分钟,
p>
文件将显示最近被修改过,
因此,
你的浏览
器将下载该文档的一份
“新”
拷贝。
有条件
GET/response
p>
交互
大多数网页浏览器进行对象缓存,因
而当获取一个
HTTP
对象时进行有条件
GET
。在进行以下实验步骤前,确保你的浏览器缓存是空的。
(为了实现这一点,
对于
Netscape7.0,
选
Edit-Preferences-Advanced-Cache
,
然后清空内存和硬
盘上的
cache
。对于
Internet Explorer
,
选择
T
ools-Internet
Options-Delete
File
;这样将从你的浏览
器缓存中删除被存储的文件)
。现在执行下列操作:
(1)
启动浏览器,确保浏览器缓存被清空(如上讨论)
(2)
启动
Etherea
l
分组嗅探器
(3)
在浏览器中输入一下
URL:
/ethereal-labs/
-
可编辑
-