实验四、应用层实验
实验类型: 验证类实验 实验课时: 2学时 地点:S-3实验楼一层S2、S3机房
实验时间: 11月3日第一大节(8:00-9:40)
一、实验目的
验证应用层协议的工作原理。
二、实验内容和方案
捕获应用层系统DNS、应用层协议FTP、HTTPS引起的帧,通过分析帧的内容,描述这些应用层系统或协议的工作原理。
下面实验方案中域名、IP地址、过滤条件仅用做示例,可以修改。
- 打开cmd,把弹出的窗口颜色设置为“前黑背白”,以备截图。
- 运行WireShark,在过滤条件栏输入“dns.qry.name == datatracker.ietf.org”,然后在cmd窗口中执行“ping datatracker.ietf.org”,让WireShark过滤出域名“datatracker.ietf.org”的DNS查询和回复消息。
Windows操作系统有DNS缓冲存储,保存近期查得的域名及其IP地址。如果本地DNS缓存中有某个域名的查询记录,就不会再生成DNS查询消息,也不会收到DNS回复消息。用“ipconfig /flushdns”清空缓存,然后再ping就会诱发DNS请求,详见《计算机网络(应用层)实验手册》。
对捕获的一对儿DNS查询和回复,分析这两个帧,把IP首部、UDP首部、DNS消息的(你觉得有意义的)字段逐一指出并说明。
- 把Wireshark的过滤条件改为“tcp && ip.addr == 4.31.198.44”(这个IP地址是解析“datatracker.ietf.org”得来的,如果用条件“ftp”过滤,会遗漏TCP连接建立和释放相关的帧),如果这时的主窗口有捕获的帧,即已经有符合条件的帧,就执行“捕获”-“重新开始”,让主窗口为空。
打开浏览器,输入“ftp://datatracker.ietf.org/”,回车。浏览器中会显示服务器传回的“根目录”,在WireShark主窗口中会看到捕获的封装有本机FTP客户端与远程FTP服务器通信消息的一系列帧。请对封装FTP消息的这一系列帧按顺序做一分析,以解释FTP工作原理为目标进行描述。
- 把Wireshark的过滤条件改为“tcp.port==443 && ip.addr == 4.31.198.44”,如果这时的主窗口有捕获的帧,即已经有符合条件的帧,就执行“捕获”-“重新开始”,让主窗口为空。
打开浏览器,访问“https://datatracker.ietf.org/”,主窗口会显示IETF Datatracker网站的首页,在WireShark主窗口中会看到捕获的封装有本机HTTPS客户端与远程HTTPS服务器通信消息的一系列帧。请对这一系列帧按顺序做一简单分析,以解释HTTPS工作原理。
三、实验步骤
打开cmd窗口,属性界面,调节前景色为三个0和背景色为三个255,即可达到目的。
- 执行相应操作,过滤出域名“datatracker.ietf.org”的DNS查询和回复消息。
(2)捕获的消息数据如下(这里以查询为例说明 No.22804):
以太网首部:
目的MAC:(6字节)
源MAC:(6字节)
类型:(表示是IP类型,2字节)
IP报文部分:
版本:4
首部长度:5
服务类型:00
总长度:00 42()
16位标识:0e a8
3位标志 + 13位偏移:00 00
TTL生存时间:40()
8位协议:11 (既是UDP协议)
16首部检验和:00 00
源IP:(即)
目的IP:
四号帧,服务器向客户端发送自己的相关信息,后面的状态码220表示服务准备就绪
第五帧是客户端向服务器端发的确认
第六、七、八、九、十帧是分别是:客户端输入用户名;服务器端确认并提示输密码;客户端确认;客户端发送密码;服务器端确认密码正确。
其中,密码和用户名都是明文的,如下图
第十一帧和第十二帧:设置及验证系统:
第十三帧和第十四帧:验证PWD
第十五帧和第十六帧:设置传输类型
第十七帧和第十八帧:设置传输大小:
第十九帧和第二十帧:数据传输的方式,这里采用的是PASV,被动方式
第二十到二十六帧:进行服务器的确定,开始数据传输
第二十七到三十二帧是数据传输,数据传输完成
第三十三帧到第三十四帧:传输完毕,中断数据传送
TCP传输结束:不再赘述
(4)通过把Wireshark的过滤条件改为“tcp.port==443 && ip.addr == 4.31.198.44”,并且访问https://datatracker.ietf.org/。可以捕获到所研究对象。
下边把HTTP的工作原理分析如下:
一次HTTP操作称为一个事务,其工作整个过程如下:
1 ) 、地址解析,
如用客户端浏览器请求这个页面: https://datatracker.ietf.org/
从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:http
主机名:datatracker.ietf.org
端口:80(默认)
对象路径:/
在这一步,需要域名系统DNS解析域名datatracker.ietf.org,得主机的IP地址。
2)、封装HTTP请求数据包
把以上部分结合本机自己的信息,封装成一个HTTP请求数据包
3)封装成TCP包,建立TCP连接(TCP的三次握手)
在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
4)客户机发送请求命令
建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
5)服务器响应
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
6)服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
在上述过程能与实验所得到的过程一样,验证成功。
四、问题与总结
主要是对各个协议的熟练掌握,然后利用相应的协议去分析对应的知识项,逐条分析。由于实验是验证性实验,所以在实验过程中主要的来说是根据学的协议的理论知识去把对应的每个帧分析出来作用,比如TCP的三次握手等。这些都是很明显的协议的特征,还会存在协议的复用,虽然对于上层协议,下层几乎是透明的,但是仍然需要使用到。在分析的时候不应该忽视。