FTP的协议分析实验
实验目的
- 学会使用FTP文件传输协议。
- 建立虚拟机和主机之间的通信
实验工具
- 虚拟机一台(我使用的是Ubuntu)
- wireshark
- wftpd325
实验原理
FTP文件传输需要可靠性保证,所以FTP使用TCP协议提供服务。
FTP使用两条TCP连接完成文件传输,一条控制连接,使用端口号21
,负责文件传输所需的控制信息的传输;
另一条数据连接,在FTP 主动模式下使用20端口
,在被动模式下使用临时端口,用于文件数据和目录数据的传输。
下图显示了主动模式下的FTP协议的两条连接:
当用户启动与远程主机间的一个FTP会话时,FTP客户首先发起建立一个与FTP服务器端口号21之间的控制TCP连接,然后经由该控制连接把用户名和口令发送给服务器。客户还经由该控制连接把本地临时分配的数据端口告知服务器,以便服务器发起建立一个从服务器端口号20到客户指定端口之间的数据TCP连接;为便于绕过防火墙,较新的FTP版本允许客户告知服务器改由客户来发起建立到服务器端口号20的数据TCP连接。用户执行的一些命令也由客户经由控制连接发送给服务器,例如改变远程目录的命令。当用户每次请求传送文件时(不论哪个方向),FTP将在服务器端口号20上打开一个数据TCP连接(其发起端既可能是服务器,也可能是客户)。在数据连接上传送完本次请求需传送的文件之后,有可能关闭数据连接,到再有文件传送请求时重新打开。因此在FTP中,控制连接在整个用户会话期间一直打开着,而数据连接则有可能为每次文件传送请求重新打开一次(即数据连接是非持久的)。
在整个会话期间,FTP服务器必须维护关于用户的状态。具体地说,服务器必须把控制连接与特定的用户关联起来,必须随用户在远程目录树中的游动跟踪其当前目录。为每个活跃的用户会话保持这些状态信息极大地限制了FTP能够同时维护的会话数。无状态的HTTP却不必维护任何用户状态信息。
FTP的控制连接由FTP控制命令完成工作,FTP控制命令由FTP协议规定,以ASCII码方式传送
。例如发送用户名的命令是USER,发送密码的命令是PASS。FTP不安全,因为密码是以明文
的ASCII码传送的。下图显示了常用的FTP命令。
实验步骤
安装配置VM虚拟机
这里我使用的是Ubuntu,本来正常来说使用的是Windows,但是换汤不换药,原理是一样的。
虚拟机的安装过程还希望读者去自行搜索,这里提供一下Ubuntu的链接地址:Ubuntu
这里我们使用的是NAT模式,比较方便也可以防止很多错误。
将虚拟机打开之后,开启终端,我们在虚拟机上安装wireshark:
- 首先进入开发者模式
- 输入命令
sudo apt install wireshark
这里我已经安装好了,直接输入wireshark,启动它
点第一个网络:(直接可以看到它有信号,这个是NAT的网卡)
先让他停下来
我们把虚拟机这一端用作客户端,而我们显示中的主机那一端用作服务器端
主机的配置
回到主机,打开已安装好的wftp325
配置我们的用户名和密码
配置用户名和密码
密码我设置为123456
点开rights 下面这两个勾勾上
点击Browse,配置一下文件所在地
当然你也可以配置一下其他的东西
这里强调一下,勾选了下面的这个选项就是ftp的主动连接
在刚刚设置的目录象征性得放两个文件,方便待会虚拟机那边下载:
测试网络连通性
查看一下虚拟机的IP地址
查看一下主机的IP地址
登录ftp服务器获取文件
#按照这个来准没错
#因为安全关系我就不逐一展示了
ftp+你的主机IP地址
输入账号
输入密码
get 文件名
抓包我们发现用户名和密码都是明文传输的
本文来自博客园,作者:{Zeker62},转载请注明原文链接:https://www.cnblogs.com/Zeker62/p/15046275.html