实验五
用Ethereal分析应用层协议
•掌握传输层协议的层次结构
•掌握并分析DNS协议的数据包格式
•掌握并分析HTTP协议的数据包格式
安装Ethereal软件和相应的WinpCap软件,启动Ethereal并设置相应的选项,捕获应用层数据包,并分析包格式。
PC机、Ethereal软件、WinpCap软件
1. 应用层协议分析
网络体系结构中的最高层是应用层,它包括了所有的高层协议,并且随着网络应用的日
益推广,不断有新的协议加入。TCP/IP 体系的应用层协议主要有:
* 域名服务DNS (Domain Name
System),用于实现互联网中主机域名到IP 地址的映
射功能;
* 文件传输协议FTP(File Transfer Protocol),用于实现互联网中交互式文件传输;
* 超文本传输协议HTTP(Hyper Text Transfer Protocol),用于WWW 服务。
* 电子邮件协议SMTP (Simple Mail Transfer Protocol)和POP3 (Post Office Protocol),用于实现电子邮件的传送和读取功能;
* 远程终端协议TELNET,用于实现互联网中远程登录功能;
计算机通信的对象是应用层中的应用进程,在
TCP/IP 体系中,两个应用进程采用客户
服务器方式进行通信。客户服务器方式描述进程之间服务和被服务关系。当A 进程需要B 进
程的服务时,A 是客户,B 是服务器。也许在下次通信时,B 需要A
的服务,此时,B 是客
户而A
是服务器。客户与服务器的通信关系一旦建立,通信就可以是双向的,客户和服务器
都可以发送和接收信息。
一、DNS
协议分析实验
1.DNS 协议简介
DNS 是域名系统
(Domain Name
System)的缩写,是一种分层次的、基于域的命名方案,
主要用来将主机名和电子邮件目标地址映射成IP 地址。当用户在应用程序中输入DNS 名称
时,DNS
通过一个分布式数据库系统将用户的名称解析为与此名称相对应的IP 地址。
(1)域名服务器和域名解析
在互联网中,DNS 的实现是通过域名服务器实现的。域名服务器构成对应的层次结构,
每个域名服务器保存着它所管辖区域内的主机的名字和IP
地址的对照表。这组域名服务器是域名解析的核心。域名解析有两种:递归解析和反复解析。
(2)域名解析
递归解析就是本地域名服务器系统一次性地完成域名到IP
地址的转换,即使它没有所要查询的域名信息,它也会查询别的域名服务器。反复解析则是当本地域名服务器中没有被查询的主机域名的信息时,它就会将一个可能有该域名信息的
DNS
服务器的地址返回给请求域名解析的DNS
客户,DNS
客户再向指定的DNS 服务器查询。
在实际应用中通常是将两种解析方式结合起来进行域名解析。当本地域名服务器没有所
要查询的域名信息时,就请求根域名服务器,根域名服务器将有可能查到该域名信息的域名
服务器地址返回给要求域名解析的本地域名服务器,本地域名服务器再到指定的域名服务器
上查询,如指定域名服务器上还没有该域名信息,它再将它的子域名服务器的IP
地址返回给要求域名解析的本地域名服务器,这样直到查询到待解析的域名的IP 地址为止 (没有注册的主机域名除外),本地域名服务器再将查询结果返回给DNS 客户,完成域名解析。
(3)DNS 高速缓存
每个域名服务器都维护着一个高速缓存,存放最近用到过的域名信息和此记录的来源。
当客户请求域名解析时,域名服务器首先检查它是否被授权管理该域名,若未被授权,则查
看自己的高速缓存,检查该域名是否最近被转换过。如果有这个域名信息,域名服务器就会
将有关域名和IP
地址的绑定信息报告给客户,并标志为非授权绑定,同时给出获得此绑定的域名服务器的域名,本地域名服务器也会将该绑定通知客户。但该绑定信息可能是过时的。
根据是强调高效还是准确性,客户可以选择接受该绑定信息还是直接与该绑定信息的授权服
务器联系。
实验步骤:
步骤1:将PC1 配置成DNS 服务器(可用虚拟机)。
步骤2:配置PC2 的DNS
服务器为PC1,方法是打开
“网络和Internet
连接”的“网络连接”窗口,“本地连接”,右键快捷菜单 “属性”,在常规选项卡中打开“Internet 协议(TCP/IP)属性”对话框。设置首选DNS 服务器地址为 192.168.10.10 (以图例)。
步骤3:清空DNS 服务器缓存,方法:在Simple DNS Plus 主菜单执行Tools-Clear
DNS
Cache。
步骤4:在PC1 和PC2
上启动Ethereal,设置PC1 的截获条件为 “not
broadcast and not multicast”,PC2 的截获条件为 “host
192.168.
10.10 ”,开始截获报文。
步骤5:在PC2 上打开命令行窗口。如图38 所示,执行Nslookup,查询www.sina.com。
图38 NSLOOKUP 操作示意
步骤6:停止截获报文。分析DNS 的请求和应答报文,完成下面的要求。
1)选择一条计算机发出的DNS 请求报文和相应的DNS 应答报文 (它们Transaction ID 字段的值相同),将两条报文的信息填入表 5.15。
表15 DNS 请求报文和应答报文信息
DNS 报文类型
报文序号
源站点
目的站点
报文信息
DNS 请求报文
DNS 应答报文
2)如图39所示,在众多报文中找出图39 所示的①~⑧报文,并将这些报文填入表 5.16。
图39 DNS 的解析过程
表16 DNS 请求报文格式
序号
报文序号
源站点
目的站点
报文主要作用
所属查询类型
1
2
3
4
5
6
7
8
3)从报文②可以得知,DNS 服务器所请求的根域名服务器IP 地址为多少?Simple DNS
Plus 内部存储了多少个根域名服务器的IP 地址?
4 )分析报文③,找出DNS 服务器向哪一个.com 域名服务器发出请求报文,并写出它的域名和IP 地址。
二、 HTTP
协议分析实验
1.HTTP 协议简
HTTP 是超文本传输协议
(Hyper Text Transfer
Protocol)的缩写,用于WWW 服务。
(1)HTTP 的工作原理
HTTP 是一个面向事务的客户服务器协议。尽管HTTP 使用TCP 作为底层传输协议,但
HTTP 协议是无状态的。也就是说,每个事务都是独立地进行处理。当一个事务开始时,就
在万维网客户和服务器之间建立一个TCP 连接,而当事务结束时就释放这个连接。此外,客
户可以使用多个端口和和服务器
(80
端口)之间建立多个连接。其工作过程包括以下几个阶段。
①
服务器监听TCP 端口 80,以便发现是否有浏览器 (客户进程)向它发出连接请求;
②
一旦监听到连接请求,立即建立连接。
③
浏览器向服务器发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应。
④
释放TCP 连接。
在浏览器和服务器之间的请求和响应的交互,必须遵循HTTP 规定的格式和规则。
当用户在浏览器的地址栏输入要访问的HTTP 服务器地址时,浏览器和被访问HTTP 服
务器的工作过程如下:
①
浏览器分析待访问页面的URL
并向本地DNS 服务器请求IP 地解析;
②
DNS 服务器解析出该HTTP 服务器的IP 地址并将IP 地址返回给浏览器;
③
浏览器与HTTP
服务器建立TCP
连接,若连接成功,则进入下一步;
④
浏览器向HTTP 服务器发出请求报文
(含GET 信息),请求访问服务器的指定页面;
⑤
服务器作出响应,将浏览器要访问的页面发送给浏览器,在页面传输过程中,浏览
器会打开多个端口,与服务器建立多个连接;
⑥
释放TCP 连接;
⑦
浏览器收到页面并显示给用户。
(2)HTTP 报文格式
HTTP 有两类报文:从客户到服务器的请求报文和从服务器到客户的响应报文。图
5.46
显示了两种报文的结构。
图46 HTTP 的请求报文和响应报文结构
在图46
中,每个字段之间有空格分隔,每行的行尾有回车换行符。各字段的意义如下:
①
请求行由三个字段组成:
* 方法字段,最常用的方法为
“GET”,表示请求读取一个万维网的页面。常用的方法
还有
“HEAD(指读取页面的首部)”和“POST(请求接受所附加的信息);
* URL 字段为主机上的文件名,这时因为在建立TCP 连接时已经有了主机名;
* 版本字段说明所使用的HTTP 协议的版本,一般为 “HTTP/1.1”。
②
状态行也有三个字段:
* 第一个字段等同请求行的第三字段;
* 第二个字段一般为
“200”,表示一切正常,状态码共有41 种,常用的有:301
(网站已转移),400(服务器无法理解请求报文),404(服务器没有锁请求的对象)等;
* 第三个字段时解释状态码的短语。
③
根据具体情况,首部行的行数是可变的。请求首部有Accept 字段,其值表示浏览器
可以接受何种类型的媒体;Accept-language,其值表示浏览器使用的语言;User-agent
表明可用的浏览器类型。响应首部中有Date、Server、Content-Type、Content-Length 等字段。在请求首部和响应首部中都有 Connection 字段,其值为Keep-Alive 或 Close,表示服务器在传送完所请求的对象后是保持连接或关闭连接。
④
若请求报文中使用 “GET”方法,首部行后面没有实体主体,当使用 “POST”方法
是,附加的信息被填写在实体主体部分。在响应报文中,实体主体部分为服务器发送给客户
的对象。
图47 和图48 显示了Ethereal 捕获的HTTP 请求和响应报文,结合上面的介绍,请自己分析和体会。
图47 HTTP 请求报文示例
图48 HTTP 响应报文示例
实验步骤:
步骤1:在PC 机上运行Ethereal,开始截获报文,为了只截获和我们要访问的网站相关的数据报,将截获条件设置为
“not broadcast and not
multicast”;
步骤2:从浏览器上访问Web 界面,如http://202.202.43.125。打开网页,待浏览器的状态栏出现 “完毕”信息后关闭网页。
步骤3:停止截获报文,将截获的报文命名为http-学号保存。
分析截获的报文,回答以下几个问题:
1)综合分析截获的报文,查看有几种HTTP 报文?
2)在截获的HTTP 报文中,任选一个HTTP 请求报文和对应的 HTTP 应答报文,仔细
分析它们的格式,填写表20 和表 5.21。
表20 HTTP 请求报文格式
方
法
版
本
URL
首部字段名
字段值
字段所表达的信息
表21 HTTP 应答报文格式
版
本
状态码
短
语
首部字段名
字段值
字段所表达的信息
3)分析在截获的报文中,客户机与服务器建立了几个连接?服务器和客户机分别使用
了哪几个端口号?
4 )综合分析截获的报文,理解HTTP 协议的工作过程,将结果填入表22 中。
表22 HTTP 协议工作过程
HTTP 客户机端口号
HTTP 服务器端口号
所包括的报文号
步骤说明