实验一 应用层协议——HTTP
实验目的:
通过网络协议分析软件Ethereal 来观察应用层协议:HTTP 的活动细节.
实验设备:
已经接入Internet 的网络实验室,
机器上装有IE 浏览器、网络分析软件Ethereal 。
实验内容:
1、 设置实验环境
清空高速缓存中的网页:
在IE 浏览器中,选择“工具” —— “internet 选项” ——“常规”标 签 —— “删除文件” 按钮
计算机(IE
)
服务器 (Web 服务器: Apache , Microsoft IIS)
计算机(Netscape )
HTTP 请求
HTTP 请求
HTTP 响应
HTTP 响应
清空DNS高速缓存:
在桌面上选择“开始”——“程序”——“附件”——“命令提示符”;——输入命令行“ipconfig/flushdns”——按“回车键”执行命令。
2、运行Ethereal,准备捕获协议信息。
在下图窗口中,选择“Capture”——“Options”
在下图窗口中,选择本地网卡接口,选择“Start”,开始捕获。
3、运行IE浏览器,访问任意一个网站,观察捕获窗口变化。
4、在下图中,选择“Stop”,停止捕获。
5、在下图中,观察并分析捕获的协议信息。
找到HTTP的请求消息分组:
1)观察该请求消息发送主机与目的主机IP地址,和自己机器的主机IP地址比较,该消息谁发给谁的。
2)观察该消息使用的TCP端口,是否是HTTP(80)。
3)打开并分析该消息的HTTP头部信息内容:
Host: URL中机器的域名;
User-Agent:请求的WEB浏览器及客户机器;
Accept头部包括:Accept 接受;Accept-Language:接受语言;Accept-Encoding:接受编码,Accept-Charset:接受字符集。它们都是告诉WEB服务器客户浏览器准备处理的数据类型。
Connection:Keep-Alive;表明发送请求之后TCP连接继续保持。
⏹找到HTTP的响应消息分组:
1)观察该请求消息发送主机与目的主机IP地址,和自己机器的主机IP地址比较,该消息谁发给谁的。
2)观察该消息使用的TCP端口,是否是HTTP(80)。
3)打开并分析该消息的HTTP头部信息内容:
HTTP/1.1:显示服务器使用的HTTP版本;
Cache-Control:private;表明是否可以将返回的数据副本存储或高速缓存。Date:消息返回的时间;
Content-Length:数据的长度;
Content-Type:返回对象的类型;
Last-Modified:返回对象的最后修改日期;
Server:WEB服务器;
⏹从Analyze菜单中选择“ Follow TCP Stream”,显示整个数据流。
其中,Web浏览器发送的数据显示为一种颜色;
所有由Web服务器发送的数据显示为另一种颜色。
清空所有IE缓存和cookie。再访问的网站并捕获信息。可以在TCP数据流中观察到HTTP响应消息带回了set-cookie,Web服务器用它来收集你上网浏览的习惯信息。
清空所有IE缓存和cookie。再次访问的网站,多刷新两次页面(即重复访问)。
浏览器缓存将文件保存在客户端,好的缓存策略可以减少对网络带宽的占用,可以提高访问速度,提高用户的体验,还可以减轻服务器的负担。因此我们有必要了解它的实现原理,用来提高网站的性能。当一个客户端请求web服务器, 请求的内容可以从以下几个地方获取:服务器、浏览器缓存中或缓存服务器中。这取决于服务器端输出的页面信息。
页面文件有三种缓存状态。
1.最新的:选择不缓存页面,每次请求时都从服务器获取最新的内容。
2.未过期的:在给定的时间内缓存,如果用户刷新或页面过期则去服务器请求,否则将读取本地的缓存,这样可以提高浏览速度。
3.过期的:也就是陈旧的页面,当请求这个页面时,必须进行重新获取。
页面的缓存状态是由http header决定的,一个浏览器请求信息,一个是服务器响应信息。主要包括Pragma: no-cache、Cache-Control、Expires、Last-Modified、If-Modified-Since。
其中Pragma: no-cache由HTTP/1.0规定,
Cache-Control由HTTP/1.1规定。
Cache-Control的主要参数
Cache-Control: private/public Public 响应会被缓存,并且在多用户间共享。Private 响应只能够作为私有的缓存,不能再用户间共享。
Cache-Control: no-cache:不进行缓存
Cache-Control: max-age=x:缓存时间以秒为单位
Cache-Control: must-revalidate:如果页面是过期的则去服务器进行获取。
浏览器必须遵循服务器返回的高速缓存的指示命令。
Expires:显示的设置页面过期时间
Last-Modified:请求对象最后一次的修改时间用来判断缓存是否过期通常由文件的时间信息产生
If-Modified-Since :客户端发送请求附带的信息指浏览器缓存请求对象的最后修改日期用来和服务器端的Last-Modified做比较