计算机网络经典实验课程 3.docx
《计算机网络经典实验课程 3.docx》由会员分享,可在线阅读,更多相关《计算机网络经典实验课程 3.docx(19页珍藏版)》请在冰点文库上搜索。
计算机网络经典实验课程3
实验十一FTP协议分析
【实验目的】
1、理解FTP协议的工作原理;
2、了解FTP协议的常用命令;
3、了解应用层协议与传输层协议的关系。
【实验学时】
2学时
【实验环境】
本实验中需要有一台开启FTP服务的主机,并提供一个公共帐号:
welcome,密码:
welcome。
实验拓扑图如图5-11所示:
图5-11实验拓扑图
【实验内容】
1、学习FTP协议的工作原理;
2、学习FTP的使用方法;
3、了解FTP的常用命令;
4、了解FTP的工作过程;
5、理解FTP的主动模式和被动模式。
【实验流程】
图5-12实验流程图
【实验原理】
FTP(FileTransferProtocal),是文件传输协议的简称。
FTP使得主机间可以共享文件,用于控制Internet上文件的双向传输。
它是一个客户机
/服务器系统。
用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。
用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
当FTP客户端与服务器建立FTP连接时,将与服务器上的两个端口建立联系:
端口
20和21。
FTP使用不同的端口号传输不同的内容,会建立不同的TCP连接。
首先,使用TCP
生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输。
FTP的工作过程
FTP使用2个TCP端口,一个数据端口和一个命令端口(也可叫做控制端口)。
通常来说这两个端口是21——命令端口和20——数据端口,但根据FTP工作在主动模式还是被动模式,21和20端口的使用方法略有不同。
主动模式的FTP是这样的:
客户机从一个任意的非特权端口N(N≥1024),连接到
FTP服务器的命令端口,也就是21端口,建立一个控制连接。
这个连接用于传递客户端的命令和服务器端对命令的响应,生存期是整个FTP会话时间。
如果期间需要传输文件和其它数据,例如:
目录列表等,客户端就需要建立数据连接了。
这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭,整个FTP期间可能会建立多次。
在主动模式下,建立数据连接时,客户端会开始监听端口N+1,并发送FTP命令“portN+1”到FTP服务器。
接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1),开始进行数据传输。
图5-13展示了一个FTP主动模式的例子,从中可以清楚的看到FTP主动模式下,控制连接和数据连接是如何建立的:
图5-13FTP的主动模式
但是,由于我们访问的FTP服务器大多在外网,和我们所在的内网之间通常会有防火墙进行保护,由外网的FTP服务器主动发起的连接,往往被防火墙所阻拦。
为了解决这个问题,需要使用另外一种FTP模式,叫做被动模式(passivemod)。
在这种模式下,数据连接是由客户程序发起的,和刚才讨论过的主动模式相反。
图5-14展示了一个FTP被动模式的例子,从中可以清楚的看到FTP被动模式下,控制连接和数据连接是如何建立的:
图5-14FTP的被动模式
被动模式下开启一个FTP连接时,客户端打开两个任意的非特权本地端口N和N+1
(N≥1024)。
第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。
这样做的结果是服务器会开启一个任意的非特权端口(P≥1024),并发送PORTP命令给客户端。
然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
FTP的命令
FTP的控制连接使用类似TELNET协议的方式在主机间交换命令和消息。
FTP控制帧包含FTP的命令和选项。
大多数FTP控制帧是简单的ASCII文本,可以分为FTP命令或FTP消息。
FTP消息是对FTP命令的响应,它由带有解释文本的应答代码构成。
表5-2FTP命令列表
命令
描述
ABOR
中断数据连接程序
ACCT
系统特权帐号
ALLO
为服务器上的文件存储器分配字节
APPE
添加文件到服务器同名文件
CDUP
改变服务器上的父目录
CWD
改变服务器上的工作目录
DELE
删除服务器上的指定文件
HELP
返回指定命令信息
LIST
如果是文件名列出文件信息,如果是目录则列出文件列表
MODE
传输模式(S=流模式,B=块模式,C=压缩模式)
MKD
在服务器上建立指定目录
NLST
列出指定目录内容
NOOP
无动作,除了来自服务器上的承认
PASS
系统登录密码
PASV
请求服务器等待数据连接
PORT
IP地址和两字节的端口ID
PWD
显示当前工作目录
QUIT
从FTP服务器上退出登录
REIN
重新初始化登录状态连接
REST
由特定偏移量重启文件传递
RETR
从服务器上找回(复制)文件
RMD
在服务器上删除指定目录
RNFR
对旧路径重命名
RNTO
对新路径重命名
SITE
由服务器提供的站点特殊参数
SMNT
挂载指定文件结构
STAT
在当前程序或目录上返回信息
STOR
储存(复制)文件到服务器上
STOU
储存文件到服务器上
STRU
数据结构(F=文件,R=记录,P=页面)
SYST
返回服务器使用的操作系统
TYPE
数据类型(A=ASCII,E=EBCDIC,I=binary)
USER>
系统登录的用户名
标准FTP消息如下:
表5-3FTP响应代码列表
响应代码
解释说明
110
新文件指示器上的重启标记
120
服务器准备就绪的时间(分钟数)
125
打开数据连接,开始传输
150
打开连接
200
成功
202
命令没有执行
211
系统状态回复
212
目录状态回复
213
文件状态回复
214
帮助信息回复
215
系统类型回复
220
服务就绪
221
退出网络
225
打开数据连接
226
结束数据连接
227
进入被动模式(IP地址、ID端口)
230
登录因特网
250
文件行为完成
257
路径名建立
331
要求密码
332
要求帐号
350
文件行为暂停
421
服务关闭
425
无法打开数据连接
426
结束连接
450
文件不可用
451
遇到本地错误
452
磁盘空间不足
500
无效命令
501
错误参数
502
命令没有执行
503
错误指令序列
504
无效命令参数
530
未登录网络
532
存储文件需要帐号
550
文件不可用
551
不知道的页类型
552
超过存储分配
553
文件名不允许
FTP的使用方法
FTP尽管可以直接被终端用户使用,但其应用主要还是通过程序实现。
用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序
和信息。
在Windows系统中使用FTP,可以在命令提示符下键入:
ftp192.168.1.10(实验室FTP服务器的IP地址);
用户被提示输入用户名和口令,确认口令输入正确后,用户将获得FTP提示符“ftp>”。
FTP常用的命令:
Binary:
将文件传输模式设为二进制方式
Bye:
退出,结束远程连接
Case:
打开case功能
Close:
关闭远程连接
cd:
改变远程系统目录名
cdup:
进入父目录
debug:
设置调试级别
dir:
显示路径名
delete:
在远程计算机中删除文件:
get:
将文件从远程系统下载到本地系统
glob:
在文件传输时使用通配符
hash:
每传输1024字节打印一个“#”
help:
打印帮助文件
lcd:
改变本地系统路径
ls:
打显示远程主机目录
lpwd:
打印本地主机工作路径
mget:
将多个文件从远程系统下载到本地系统
mkdir:
在远程计算机上创建路径
input:
将多个文件上载到远程计算机
prompt:
交互式提示
put:
将文件上载到远程计算机
pwd:
显示当前工作路径
user:
登录到远程计算机系统
【实验步骤】
步骤一:
登录FTP服务器,捕获数据报文并进行分析
1、确认FTP服务器工作正常,记录FTP服务器的IP地址:
192.168.1.10/24,用户名:
welcome,密码:
welcome。
2、在实验主机上启动网络协议分析仪,设置过滤条件并进行数据捕获。
在工具栏点击“过滤器”按钮,会弹出“设置&过滤器”对话框,在“过滤器类型”中选择“类型过滤器”,类型值中选择“ftp协议”,点击“设置参数”按钮后“确定”,然后启动协议分析仪进行捕获:
图5-15设置FTP协议过滤器
3、登录FTP服务器,在命令行提示符下运行:
ftp192.168.1.10,即可建立与FTP服务器的连接,按照提示输入账号(welcome),密码(welcome),便进入了FTP的命令行界面,此时运行FTP的命令dir、get、quit等,从中可以看到FTP的反馈信息,以及
FTP服务器的文件内容:
图5-16登录FTP服务器
4、暂停协议分析器的捕获,可以通过捕获的数据报文看到刚才的交互过程中,FTP客户端和服务器端的工作详细情况,FTP报文的格式和命令的使用,以及服务器端的响应代码。
如图5-17中就可以看到FTP的USER命令,及其参数welcome,也就是用户名;而图5-18中则是PASS命令和密码welcome:
图5-17FTP报文中的USER命令
图5-18FTP报文中的PASS命令
5、记录这个过程中客户端和服务器端的TCP报头和数据信息,填写下表:
表5-4TCP报头和数据信息列表
客户端
TCP连接建立阶段(控制连接)
FTP服务器
Port()
SYN=(),ACK=(),PSH=(),FIN=()
Port()
SYN=(),ACK=(),PSH=(),FIN=()
SYN=(),ACK=(),PSH=(),FIN=()
客户端
TCP连接建立阶段(数据连接)
FTP服务器
Port()
SYN=(),ACK=(),PSH=(),FIN=()
Port()
SYN=(),ACK=(),PSH=(),FIN=()
SYN=(),ACK=(),PSH=(),FIN=()
6、根据标志字段分析FTP的两个端口的连接建立、会话和断开连接的全部过程,分析该过程中的源、目的端口号。
7、这个FTP服务器工作在主动模式还是被动模式下?
8、是否可以捕获到用户名和密码?
以此说明FTP连接的安全性。
步骤二:
使用TCP连接工具连接FTP服务器
1、打开协议分析仪,准备好进行数据包的捕获,然后打开协议分析仪,点击工具栏中的“TCP”按钮,在弹出的“TCP连接工具”中填写FTP服务器的IP地址(192.168.1.10)及
FTP协议控制连接的端口号(21),点击“启动”,从而建立本机与FTP服务器21端口的TCP
连接,如图5-19所示:
图5-19使用TCP连接工具连接FTP服务器
在“数据信息”区域显示成功连接的信息:
“220-MicrosoftFTPService”,并返回了FTP服务器的名称“测试用FTP”。
若不成功,再次尝试进行连接,直到成功。
此时,在协议分析仪端,可以看到与FTP服务器建立控制连接的TCP三次握手过程:
图5-20是用TCP连接工具建立FTP控制连接
2、在发送区输入FTP命令,与FTP服务器进行交互:
(1)、在发送的编辑栏里面编辑发送FTP命令USER,参数为FTP帐号:
USER
welcome,这时服务器返回响应“331Passwordrequiredforwelcome”,提示输入密码;
(2)、发送命令PASSwelcome,输入FTP的账号密码,服务器返回“230Userwelcomeloggedin.”,说明验证通过,已经进入FTP服务器,并回送了FTP服务器设置的欢迎词“欢迎使用,这是一个测试用的FTP服务器”;
(3)、发送命令“NOOP”,这是一个空操作,服务器返回“200NOOPcommand
successful”说明登录用户已经得到服务器的承认;
(4)、发送命令“HELP”,服务器返回相应的帮助信息,即所有命令的列表;
(5)、发送命令“STAT”,服务器返回信息为当前的FTP服务状态:
211-MicrosoftFTPServicestatus:
ConnectedtovserverLoggedinaswelcome
TYPE:
ASCII,FORM:
Nonprint;STRUcture:
File;transferMODE:
STREAM
Nodataconnection
211Endofstatus.
(6)、使用命令“QUIT”退出FTP服务。
下面是在协议分析仪的TCP工具“数据信息”区域显示的全部交互过程:
-------------------------------------------------------------------------------
正在连接192.168.1.10:
21
连接成功!
220-MicrosoftFTPService
220测试用FTP
-------------------------------------------------------------------------------
发送USERwelcome
发送成功!
331Passwordrequiredforwelcome.
-------------------------------------------------------------------------------
发送PASSwelcome
发送成功!
230-欢迎使用,这是一个测试用的FTP服务器
230Userwelcomeloggedin.
-------------------------------------------------------------------------------
发送NOOP
发送成功!
200NOOPcommandsuccessful.
-------------------------------------------------------------------------------
发送HELP
发送成功!
214-Thefollowingcommandsarerecognized(*==>'sunimplemented).
ABORACCTALLOAPPECDUPCWDDELEFEATHELPLISTMDTMMKDMODENLSTNOOPOPTSPASSPASVPORTPWDQUITREINRESTRETRRMD
RNFRRNTOSITESIZESMNTSTATSTORSTOUSTRUSYSTTYPEUSERXCUPXCWDXMKDXPWDXRMD
214HELPcommandsuccessful.
-------------------------------------------------------------------------------
发送STAT
发送成功!
211-MicrosoftFTPServicestatus:
ConnectedtovserverLoggedinaswelcome
TYPE:
ASCII,FORM:
Nonprint;STRUcture:
File;transferMODE:
STREAMNodataconnection
211Endofstatus.
-------------------------------------------------------------------------------
发送QUIT发送成功!
221
连接结束
步骤三:
编辑一个FTP报文
1、在主机上打开协议数据发生器,在工具栏上选择“添加”,会弹出“网络包模版”对话框,选择“FTP协议模版”,建立一个FTP数据报文:
图5-21建立FTP协议报文
2、填写其中以太网帧头、IP首部、TCP首部和FTP报文的内容:
•填写以太网协议首部信息:
➢目的物理地址:
在地址本中选择FTP服务器的IP地址(192.168.1.10),确认后自动填入交换机的MAC地址:
00-0C-29-BE-4F-E5;
➢源物理地址:
在地址本中选择实验主机(192.168.1.3),确认后自动填入主机
A的MAC地址:
00-15-58-2F-7E-7E;
➢类型或长度:
该字段应为0800(即IP协议的类型值)。
•填写IP协议头信息:
➢总长度字段:
包括TCP段内容的总长度,20IP+20TCP+12FTP=52;
➢高层协议字段:
即上层协议类型为6(TCP协议的类型为6);
➢发送IP地址:
在地址本中选择实验主机的IP地址,确认后自动填入主机的IP
地址192.168.1.3;
➢目标IP地址:
在地址本中选择FTP服务器的IP地址,确认后自动填入FTP
服务器的IP地址192.168.1.10;
➢点击工具栏中的“校验和”按钮计算IP头校验和。
•填写TCP协议的各个字段信息:
➢16位源端口号:
任意大于1024的数;
➢16位目的端口号:
21;
》32位序号:
选择一个序号(例如:
19425898);
➢32位确认序号:
设置为0;
➢首部长度:
首部长度设为5,即长度为20字节;
➢标志位:
标志位设为2,即标志位SYN=1;
➢窗口大小:
任意,例如填入32768;
➢紧急指针:
0;
➢校验和:
点击工具栏中的“校验和”按钮计算TCP校验和(覆盖TCP首部(包
含伪首部)和TCP数据两部分,计算方法同UDP协议一样)。
•5、填写FTP协议报文的内容:
可填入FTP的常用命令及参数,例如USERwelcome。
最终的编辑结果如图5-22所示:
图5-22编辑FTP报文的内容
3、点击工具栏上的“发送”按钮,将编辑好的FTP数据报文发送,可设置循环发送。
4、在实验主机上运行网络协议分析仪,捕获数据,捕获结果如所示,从中可以看到这是一个FTP报文,携带的命令是USERwelcome:
图5-23捕获编辑的FTP报文
【思考问题】
1、在ACTIVE模式的FTP中,服务器端为何使用20和21两个端口,其作用分别是什么?
客户端与这两个端口建立起的连接分别是谁(客户端还是服务器端)主动发起的?