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 文件名

在这里插入图片描述

抓包我们发现用户名和密码都是明文传输的
在这里插入图片描述

posted @ 2021-04-04 11:41  Zeker62  阅读(534)  评论(0编辑  收藏  举报