1、ftp架构
如同其他的很多通讯协议,FTP通讯协议也采用客户机/服务器(Client/Server)架构。用户可以通过各种不同的FTP客户端程序,借助FTP协议,来连接FTP服务器,上传或下载文件。
2、FTP通讯端口知识
FTP服务器和客户端要进行文件传输,就需要通过端口来进行。FTP协议需要的端口一般包括两种:
控制链路-----TCP端口21
控制器端。用于发送指令给服务器以及等待服务器响应。所有你发往FTP服务器的命令和服务器反馈的指令都是通过服务器上的21端口传送的。
数据链路-----TCP端口20
数据传输端口。用来建立数据传输通道的。主要用来从客户向服务器发送一个文件、从服务器向客户发送一个文件、从服务器向客户发送文件或目录列表。数据链路主要是用来传送数据的,比如客户端上传、下载内容,以及列目录显示的内容等。
3、FTP连接的两种方式
在数据链路的建立上,FTP Server为了适应不同的网络环境,支持两种连接方式:主动模式(PORT)和被动模式(PASV)。其实这两种连接模式主要是针对数据链路进行的,和控制链路无关。
主动模式
主动模式是这样工作的:客户端把自己的高位端口和服务器端口21建立控制链路。所有的控制命令比如Ls或get都是通过这条链路传送的。当客户端需要服务器端给它传送数据时,客户端会发消息给服务器端,告诉自己的位置和打开的高位端口(一般大于1024的端口就叫高位端口),等候服务器的20端口和客户端打开的端口进行连接,从而进行数据的传输。当服务端收到信息后,就会和客户端打开的端口连接,这样数据链路就建立起来了。采用主动模式连接服务器的客户端,当它位于NAT或者防火墙的保护之后时会碰到连接失败的问题。这是因为当防火墙接到服务器发送过来的信息的时候,并不知道发送给内部网络中的哪一台客户端造成的。
被动模式
被动模式是这样工作的:当客户端发送数据请求后,服务器也会发信息给客户端,告诉客户端:服务器在本地打开了一个高位端口,你现在来连接我吧。当客户端收到该信息时,就会去连接服务器端的端口,连接成功后,数据链路就建立了。从上面的解释中我们可以看到,两种模式主要的不同是数据连接建立的不同。对于主动模式,是客户端在本地打开一个端口等服务器去连接建立数据连接,而Pasv模式就是服务器打开一个端口等待客户端去建立一个数据连接。
SFTP和FTP的区别
SFTP是secure File Transfer Protocol的缩写,是安全文件传输协议。可以为传输文件提供一种安全的加密方法。跟ftp几乎语法功能一样。SFTP是ssh的一部分,是一种传输档案至Blogger伺服器的安全方式。它本身没有单独的守护进程,必须使用sshd守护进程来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以使用SFTP是十分安全的。但是由于这种传输方式使用了加密/解密技术,所以传输下来比普通的FTP要低得多。在对网络安全性要求更高时,代替FTP使用。
SFTP和FTP都是文件传输协议。区别:SFTP是ssh内含的协议(ssh是加密的telnet协议),只要sshd服务器启动了,它就可用,而且sftp安全性较高,它本身不需要ftp服务器启动。sftp = ssh + ftp。由于ftp是明文传输的。没有安全性,而sftp基于ssh,传输内容是加密过的,较为安全。目前网络不太安全,以前用telnet的都改用ssh2(ssh1已被破解)。sftp这个工具和ftps用法一样。但是它的传输文件是通过ssl加密了的,即使被截获了也无法破解。而且sftp相比ftps功能要多一些,多了一些文件属性的设置。