FTP相关介绍
FTP
1)File Transfer Protocol ( FTP ) 是相当古老的网络协议之一,他最主要的功能就是进行 Server端与 Client 端之间的档案传送的功能。这个协议使用的是明码传输方式,因此在使用过程中存在安全问题。
2)FTP的传输使用的是tcp传输协议,是一种C/S模式架构,服务端通过FTP服务向用户提供FTP服务,客户端通过客户端命令连接服务器来进行指令的执行与数据的传输。
3)TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制。需要进行远程文件传输的计算机必须安装和运行ftp客户程序。
FTP双通道协议:数据和命令连接
三次握手来建立tcp会话连接,而FTP服务使用了这种建立连接的过程。这种连接分别是数据传输连接和命令通信连接。
数据传输连接:指数据的传输,是按需创建和关闭的连接。
命令通信连接:指文件管理类命令,始终在线的连接。
FTP的传输方式
FTP的传输有两种方式:ASCII、二进制(默认)。
ASCII传输方式
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
二进制传输模式
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)
FTP支持的模式
FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)。
主动(port模式):服务器主动连接
主动方式是指数据传输连接由服务器主动创建,服务端主动去连接客户端的某个随机端口。
过程:
1》客户端先随机一个端口如5000,然后客户端以这个端口去连接服务端的21端口来完成命令连接的建立
2》在完成命令连接建立后,服务端会根据当前的配置(主动方式)以tcp的20号端口主动去连接对应客户端的50001(5000+1)号端口来进行数据传输的连接。
3》在数据传输连接建立完成后就开始数据的传输,数据传输的格式就是上面所说明的(源数据是什么格式编码的就以什么格式传输)
or
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT 命令告诉服务器:“我打开了XX端口,你过来连接我”。于是服务器从20端口向客户端的 XX端口发送连接请求,建立一条数据链路来传送数据。
被动(passive模式):客户端主动连接
被动方式是指数据传输连接由客户端的某个随机端口去连接服务端的某个随机端口。
过程:
1》客户端先随机一个端口如5000,然后客户端以这个端口去连接服务端的21端口来完成命令连接的建立。
2》在完成命令连接建立后,服务端会根据当前的配置(被动方式)告诉客户端请连接我的6000端口(随机)来进行数据的传输。
3》于是乎,客户端就以5001(5000+1)号端口去连接服务端的6000端口来进行数据传输的连接。
4》在数据传输连接建立完成后,就开始数据的传输,数据传输的格式就是上面所说明的(源数据是什么格式编码的就以什么格式传输)。
or
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV 命令告诉客户端:“我打开了XX端口,你过来连接我”。于是客户端向服务器的XX端口 发送连接请求,建立一条数据链路来传送数据。
服务器被动模式数据端口示例:
227 Entering Passive Mode (192,168,175,138,224,59)
服务器数据端口为:224*256+59
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。
FTP的相关应用软件程序
FTP 服务器:
Wu-ftpd
Proftpd
Pureftpd
ServU
IIS
vsftpd
Very Secure FTP Daemon,CentOS默认FTP服务器;高速、稳定,下载速度是WU-FTP的两倍。ftp数据单机最多可支持15000个并发
客户端软件:
ftp
ftp -A ftpserver port -A主动模式 -p被动模式
lftp
lftp –u username ftpserver
lftp [email protected]
lftpget
lftpget ftp://ftpserver/pub/file
wget
curl
gftp
GUI centos5 最新版2.0.19 (11/30/2008)
filezilla
CuteFtp
FlashFXP
LeapFtp
IE ftp://username:[email protected]
FTP用户身份
FTP可以实现不同等级的用户身份登录验证,这就可以根据不同的用户身份来分配不同的数据操作权限。
Real帐户
这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。
Guest用户
在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
Anonymous(匿名)用户
这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源,是可以下载这些共享资源,一般不可以上传资源。即使有些匿名FTP主机确实允许用户上传文件,用户也只能将文件上传至某一指定上传目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载。对应的用户有ftp,anonymous,不需要密码就可以登录访问。
系统用户:
Linux 用户, 用户/etc/passwd, 密码/etc/shadow
虚拟用户:
是非系统用户,是特定服务的专用用户,有独立的用户/密码文件。虚拟用户在系统上根本就不存在,因此无法完成对服务器的操作,所以通过虚拟用户可以一定程度上减少ftp攻击对系统的威胁。
在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。
FTP的状态码
1XX :信息 125 :数据连接打开
2XX :成功类状态 200 :命令OK
230 :登录成功
3XX :补充类 331 :用户名OK
4XX :客户端错误 425 :不能打开数据连接
5XX :服务器错误 530 :不能登录
原文地址:https://www.cnblogs.com/shenxm/p/8577048.html
时间: 2024-11-06 15:38:31