FTP协议分析
邬猛
(呼伦贝尔学院计算机科学与技术学院10级软件工程 2010121406)
摘要:本论文的目的是描述FTP协议的基础理论知识,分析FTP数据传输时所捕获的不同数据包,通过数据包的分析了解FTP的工作原理。FTP(文件传输协议)使得主机间可以共享文件。使用TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP 连接用于数据传输。控制连接使用类似TELNET 协议在主机间交换命令和消息。文件传输协议是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。
关键词:FTP 协议分析文件传输
1 引言
早期在Internet上传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC、工作站、MAC、服务器、大型机等等,而这些计算机可能运行不同的操作系统,有Unix、Dos、 Windows、MacOS等等,各种操作系统之间的文件交流,需要建立一个统一的文件传输协议,用来从一个主机把文件复制到另一个主机。虽然从一个系统向另一个系统传送文件看起来直截了当,但还有一些问题必须先解决。例如,两个文件系统可能使用不同的文件名约定,不同的方法表示文件和数据,不同的目录结构。所有这些问题已经由FTP以一种简单巧妙的方法解决了,FTP是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输。本文就介绍了FTP的数据报文结构及其工作原理。
2FTP的工作模型
FTP采用了和HTTP一样的客户机/服务器方式,通过一系列的请求与响应来完成数据的传输。和Telnet一样,FTP需要提供一种登陆机制,即需要输入用户名和口令,才能进入远程FTP服务器,与其它客户机——服务器模型不同的是,FTP客户机与服务器之间用TCP 建立了双重连接,一个是控制连接、一个是数据连接。图2.1 给出了FTP的基本模型。客户有三个构件:用户接口、客户控制进程和客户数据传输进程。服务器有两个构件:服务器控制进程和服务器数据传输进程。控制连接是在控制进程之间进行的。数据连接是在数据传送进程间进行的。
图2.1 FTP基本模型
整个会话过程是以控制连接来维持的,控制连接负责传送控制信息,例如用户名和口令,取文件和放文件等命令。当客户端每次请求传送文件是,服务器就与客户端建立一条数据连接,进行数据传送,一旦数据传送完毕,数据连接会话就会被关闭,但控制连接依然存在,客户端可以继续发出命令,直到客户端退出FTP会话,此时双方就关闭控制进程。
3FTP的连接传送过程
3.1客户端主动连接服务器
客户端主动连接服务器,服务器以被动方式打开21号端口,以建立控制连接。因为FTP 是基于TCP可靠传输的文件传输协议,所以,要通过TCP的三次握手来建立控制连接。如图3.1、图3.2和图3.3是客户端与服务器用过三次握手建立控制连接的过程。它们采用3937和21号端口发送控制信息。
图3.1 请求端发送的SYN报文(第一次握手)
当服务器收到图3.1的SYN报文后,发回一个如图3.2包含服务器初始序号的SYN报文段作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。
图3.2 服务器发回的ACK报文(第二次握手)
当客户端收到如图3.2的报文后,客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文进行确认。如图3.3所示报文。
图3.3 客户端对服务器的确认报文(第三次握手)
此时,客户与服务器之间就建立了控制连接,在整个过程中,控制连接是一直打开的。
3.2 控制连接
当客户与服务器之间建立了控制连接以后,双方开始在控制连接上进行建立数据连接前的准备,首先服务器向客户端返回代码为220的服务器准备就绪报文,如图3.4所示,表明服务就绪,服务器准备接受新用户。之后客户端对服务器的报文会送确认消息。
图3.4 服务器发回代码为220的服务就绪数据包
随后,客户端发送一个用户名user命令,如图3.5所示。用户名为anonymous,表明用户为匿名用户,服务器应答,代码为331,表明用户名被接受,要求输入口令,如图3.6所示。同样,客户端回送一个TCP确认消息,然后客户端输入密码,服务器会送一个如图3.7,代码为230的登陆成功报文。
图3.5 客户端发送的user命令报文
图3.6 代码为331的用户名正确并要求口令报文
图3.7 代码为230的登陆成功报文
登陆成功后,服务器发送一个命令,如图3.8所示,可以看到,这个命令为Entering Passive Mode (192,168,8,32,8,82) 代码为227。这个,命令包含了两部分,一个部分为服务器的IP地址,即192.168.8.32,另一个部分即为服务器打开数据连接时使用的端口,数据连接端口号为8*256+82=2130 。
图3.8 进入被动模式的数据包
当客户端向服务器发送一个如图3.9的LIST请求命令后,就开始数据连接了。
3.3 数据连接
通过上面的控制连接我们可以得知,服务器通过被动打开模式将进行数据传输的临时端口号发送给客户端,通过图3.9中的三个数据包我们可以得知,FTP用于传输数据的连接同样是通过TCP的三次握手建立的,我们每次传送文件,客户端与服务器之间就会建立一条临时的数据连接,用于传输数据。
图3.9 建立数据连接的三次握手
当我们在端口3938与端口2130间的数据连接上传输完数据之后,服务器和客户端通过TCP 的4次握手关闭数据连接。数据传输完毕之后,当客户端发送一个如图3.10的QUIT
请求命令,服务器发送一个如图3.11的回应报文,告诉客户端断开连接。接着,通过TCP 的四次握手,结束整个FTP回话,FTP协议的回话过程就到此结束了。
3.4主动模式与被动模式的区别
在FTP建立数据连接是,有两种模式,一种主动模式,一种被动模式。我们上面所描