1. 项目大纲

一、FTP协议

FTP协议是一种应用层协议,其采用服务端与客户端进行通信的方式来共享文件。它作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。它的目标是提高文件的共享性和可靠高效地传送数据。

在传输文件时,FTP 客户先与服务器建立连接,然后向服务器发送命令。服务器收到命令后给予响应,并执行命令。

一般的 C/S 应用程序一般只建立一个 socket 连接,这个连接同时处理服务器端和客户端的连接命令数据传输。而FTP协议则将命令与数据分开传送,这提高了效率。

FTP传输分为命令传输和数据传输,它们各使用一个独立的socket通信。

 

二、命令端口和数据端口

FTP协议使用 2 个端口,分别为命令端口数据端口,它们在服务器端的端口号分别为21和20。

【命令端口】

用于传送命令的那个连接,该连接主要负责 FTP 命令的发送和接收返回的响应信息。依靠这个连接发送FTP命令即可完成诸如“登录”、“改变目录”、“删除文件”等操作。

每一个 FTP 命令(命令都是字符串)发送之后,FTP 服务器都会返回一个字符串,其中包括一个响应码(用于判断命令是否成功执行)和一些说明信息。

【数据端口】

用于数据传输的那个连接,该连接主要负责上传/下载文件、显示目录列表。

 

三、主动模式和被动模式(建立文件传输连接的两种方式)

【主动模式(PORT)】

客户端随机打开一个端口N(大于1024)作为己方的命令端口,向服务器的命令端口(21)发起连接,同时开放端口N+1作为己方的数据端口,并在这个端口监听,然后向服务器发出“port N+1”命令。

服务器需从它自己的数据端口(20)主动连接到客户端指定的数据端口(N+1),从而进行数据的传输。

在这种模式下,文件传输连接服务器发起。对于客户端的防火墙来说,这是从外部到内部的连接,可能会将其过滤。

【被动模式(PASS)】

当开启一个 FTP 连接时,客户端打开两个端口N(大于1024)和N+1。端口N连接服务器的命令端口(21),然后发出“PASV”命令。

服务器收到“PASV”命令后会打开一个端口P(大于1024),返回一个包含IP地址及端口号(特殊格式)的字符串,如“227 entering passive mode (127,0,0,1,4,18)”。它返回了227开头的信息,在括号中有以逗号隔开的六个数字,前四个指服务器的地址,最后两个,将倒数第二个乘 256 再加上最后一个数字,这就是 FTP 服务器新打开的(用来进行数据传输的)端口P。如得到 227 entering passive mode (h1,h2,h3,h4,p1,p2),那么端口号是 p1*256+p2,IP地址为h1.h2.h3.h4。这意味着在服务器上有一个端口被开放。

客户端收到回复后,将取得服务器用于数据传输的端口P,然后通过端口N+1主动连接到服务器的端口P,从而进行数据的传输。

在这种模式下,文件传输连接由客户端发起。因此客户端的防火墙不会将其过滤。

【基于被动模式的文件传输】

服务端接收到客户端的命令后就进行解析。如果命令是上传或下载文件,则服务端打开一个新的端口并监听,同时把自己监听的IP地址和端口通过命令连接返回给客户端。客户端接收到后便主动发起连接,建立起文件传输连接,从而进行数据的传输。  

【两种模式下的IP地址和端口的特殊格式】

举例:IP地址:192.168.1.120,端口:4500 ===》192,168,1,120,17,148  

解释:前4个字段表示IP地址,即192.168.1.120;后2个字段表示端口号,即17 × 256 + 148 =  4500

 

四、常用的FTP命令

类别 命令 说明
登录 USER 账号\r\n 指定登录账号
PASS 密码\r\n 指定登录密码
QUIT\r\n 关闭与服务器的连接
建立文件传输连接 PASV\r\n

被动模式,让服务器在数据端口监听

服务端会回复一个IP地址和端口,然后客户再发起连接

PORT h1,h2,h3,h4,p1,p2\r\n

主动模式,告诉服务器客户端监听的数据端口号

让服务器采用主动连接客户端

文件传输 RETR 文件名\r\n 下载文件
STOR 文件名\r\n 上传文件
目录操作 CWD 目录名\r\n 改变当前目录到指定目录

 

五、FTP响应码

FTP响应码用三位数字编码表示:

第一个数字给出了命令状态的一般性指示,如2表示服务器已经正确处理消息,5表示信息永久错误等。

第二个数字是响应类型的分类,如2表示连接状态,3表示用户认证等。

第三个数字提供了更加详细的信息

FTP响应码 含义
150 文件状态良好,打开数据连接
200   命令成功
212 目录状态
213 文件状态
500 格式错误,命令不可识别
125 连接打开,准备传送
221 服务关闭控制连接,可以退出
202 命令未实现
225 数据连接打开,无传输正在进行
226 数据连接关闭,请求的文件操作成功
227 进入被动模式
230 用户登录
331 用户名正确,需要口令
332 登陆时需要账户信息
425 不能打开数据连接
426 关闭连接,中止数据传输
450 请求的文件操作未执行
250 请求的文件操作完成
530 账号或密码错误
550 未执行请求的操作

 

 

 

 

 

 

 

 

 

FTP缺点:明文登录

 

匿名登陆:

1、为了实现文件在互联网上传输的开放性,服务端管理员可以建立一个特殊的用户ID,
   提供给互联网上的用户下载和上传文件,这就是匿名用户,它不需要密码.

2、常用的匿名登录名称:anonymous

 

【FTP响应码】

 

第一个数字的含义如下:

1 表示服务器正确接收信息,还未处理。

2 表示服务器已经正确处理信息。

3 表示服务器正确接收信息,正在处理。

4 表示信息暂时错误。

5 表示信息永久错误。

第二个数字的含义如下:

0 表示语法。

1 表示系统状态和信息。

2 表示连接状态。

3 表示与用户认证有关的信息。

4 表示未定义。

5 表示与文件系统有关的信息。

 

 

 

 

 

 
posted @ 2018-09-04 23:11  GGBeng  阅读(249)  评论(0编辑  收藏  举报