实验九使用Wireshark分析FTP协议
一、实验目的
分析FTP协议
二、实验环境
与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。三、实验步骤
HTTP和FTP都可以用来通过网络传输对象和文件,但它们的工作方式截然不同。HTTP侧重于传送立即浏览的文件或供暂时高速缓存于客户端的文件。HTTP还侧重于表达那些包含了用于规定文件格式的首部信息,以便让浏览器能正确解释内容。而FTP却更侧重于专门进行数据传输,让用户自己去决定文件在本机上的存储时间和如何处理数据。
FTP是一种有状态的协议。FTP客户端与服务器建立一个持续的会话,并通过这个会话发送多个请求。启动会话要输入用户名和密码,然而许多FTP服务器允许公开访问,即客户端可以使用匿名登录(anonymous)及随意设置的密码连接。
一旦建立连接,对FTP会话的操作类似命令行下的操作,用户在提示符下操作,并能浏览一些文件和目录。用户在浏览目录时,FTP服务器保持对用户目录位置的跟踪。用户还可以请求从服务器获取文件或向服务器存储文件,对这些请求的解释与当前工作的目录有关。
FTP总是为正在进行的控制通道维持一个TCP连接,然后建立一个独立的用于数据传输的TCP连接。控制通道通常建立在从客户端到FTP服务器端口21的连接,它用于描述每一个使用中的数据通道的属性,包括客户端或服务器是否启动传输,以及用什么IP地址和端口连接。
用RFC-Editor搜索功能找到定义FTP协议的RFC文档。搜索结果表明该RFC文档在URL ftp:///in-notes/rfc 959.txt找到。如果你在浏览器窗口中输入以ftp://开头的URL,那么它将作为FTP客户端来获取想要的文件。
1、俘获FTP分组
(1)启动Wireshark嗅探器。
(2)浏览器地址栏中输入如下网址:ftp://
(3)在停止分组俘获。如图1所示:
图1:俘获的FTP分组
2、查看FTP控制通道
(1)本地客户端首先为控制通道初始化了一个到服务器上FTP端口(端口21)的TCP连接。
(2)一旦控制通道建立,服务器首先通过该通道发送信息。服务器以域名 作为响应,表示已经为服务请求做好了准备。
(3)在获取数据之前,FTP客户端必须发送一个用户名到服务器。这一步由FTP 命令USER来完成。FTP服务器响应一个报文,并通知客户端发送完整的电子邮件地址作为密码(但许多客户端代之发送一个标识客户端软件的字符串作为密码,一些FTP 服务器检查密码是否是电子邮件格式,但大部分不会这么做。)
(4)选择TCP流中的一个分组,然后选择Analyze菜单下的“Follow TCP Stream”,你就会看到控制通道的所有内容。(注意客户端命令带有深暗的背景,以与服务器响应区别)。如图2所示:
图2:FTP控制通道
(5)用户名和密码交换完成,FTP客户端就会发送命令“PWD”来指定当前工作的目录。上图中显示服务器以当前工作的目录是根目录“/”作为响应,客户端也用发出命令“SYST”请求关于FTP服务器的信息。
(6)“PASV”通知服务器准备第一个即将到来的数据连接。服务器响应“227 Entering Passing Mode”,这表示服务器自动打开一个套接字来接受来自客户端的数据连接。
3、查看FTP数据通道
数据通道用于列出当前工作目录的内容。当建立了数据通道后,客户端通过控制通道发送LIST命令,请求列出当前工作目录的内容。当目录列表发送完毕后,数据通道也被关闭。
(1)在目录信息传送之后,FTP客户端将传过来的目录信息显示给我们。在本实验中选择进入in-notes目录,这个动作被解释为CWD in-notes 命令在控制通道中传送。在进入目录in-notes后,目录的内容在第二个数据通道中显示出来,过程与根目录的相同。
(2)在文件传送之前,还有一个额外的命令“TYPE I”。FTP支持多种不同的文件数
据表示格式,比如用I表示图像,用A表示ASCII,E表示EBCDIC。
(3)rfc959.txt文件在第三个数据通道以类似传送目录列表的方式传送。
总之,在本机与FTP服务器之间的这个跟踪记录中,建立了4个TCP连接---一个控制通道、两个列举目录的数据通道和一个文件传输的数据通道。如图所示,我们通过使用Analyze菜单下的工具来观察每个连接的一些概要信息。选择Analyze-〉Statisics->Conversation List->TCP(IPv4 IPv6).
图3: TCP会话列表
注意,在出现的TCP对话中,连接不是以它们出现的顺序列出来的。
4、请同学们利用校园网FTP服务器重做此实验。
四、实验报告
1、传送该文件花费了多长时间?全部FTP会话过程呢?只用来传送文件的连接呢?
2、使用Follow TCP Stream检查控制通道,服务器发送多少数据到客户端?客户端发送多少数据到服务器?
3、使用Follow TCP Stream检查每一个数据通道,在每个数据通道中,服务器发送了数据到客户端?客户端发送多少数据到服务器?哪个请求的数据最多,传送RFC文件还是目录列表信息?