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 username@ftpserver
lftpget
lftpget ftp://ftpserver/pub/file
wget
curl
gftp
GUI centos5 最新版2.0.19 (11/30/2008)
filezilla
CuteFtp
FlashFXP
LeapFtp
IE ftp://username:password@ftpserver
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 :不能登陆