一、概述
文件传输协议(Flie Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,它工作在OSI模型的第七层,TCP/IP模型的第四层,即应用层,使用TCP传输而不是UDP,客户端在和服务器建立连接前要经过‘三次握手’的过程,保证客户与服务器之间的连接是可靠的,而且是面向连接的,为数据传输提供可靠保证。
FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而,用户并不真正登陆到自己想要存取的计算机上而成为完全用户,可用FTP程序访问远程资源,实现用户往返传输文件、目录管理以及访问电子邮件等等,即使双方计算机可能配有不同的操作系统和文件存储方式。
二、FTP文件传输
实验环境:
Client IP地址:192.168.1.1/24
FTPServer IP地址:192.168.1.2/24
1、FTP主动模式
打开wireshark抓包,文件传输模式选择PORT,登陆FTP服务器
登陆成功
1、服务端开启21端口等待客户端来连接,客户端使用大于1024的随机端口N与服务端21端口建立连接。(第一次TCP三次握手)
2、客户端向服务端发送PORT命令,命令包含了源IP地址和通知服务端使用数据传输端口(20)来和自己建立数据连接的端口(N+1)2052(8*256+4=2052),服务端收到命令后使用20端口与客户端2052建立数据连接。连接成功,即可开始传输数据。(第二次TCP三次握手)
2、FTP被动模式
我们切换到文件传输模式PASV,并抓包观察
1、服务端打开21端口等待连接,客户端使用大于1024的N(2055)端口与服务端21端口建立连接。(第一次TCP三次握手)
2、客户端向服务端发送版PASV命令,通知服务端自己当前处于被动模式,服务端收到命令后发送一段信息包含本地地址和要与客户端建立连接的端口2050(8*256+2=2050),客户端收到信息后使用随机端口N+1(2056)与服务端2050端口建立数据传输连接。连接成功,即可开始传输数据。(第二次TCP三次握手)