关于linux中FTP的两种传输模式及常用的命令 FTP两种传输模式小结

时间:2024-02-29 14:17:06
ASCII 和BINARY模式区别:
  用HTML 和文本编写的文件必须用ASCII模式上传,用BINARY模式上传会破坏文件,导致文件执行出错。
  BINARY模式用来传送可执行文件,压缩文件,和图片文件。
 
ASCII 模式和BINARY模式的区别是回车换行的处理,binary模式不对数据进行任何处理,asci模式将回车换行转换为本机的回车字符,比如Unix下是\n,Windows下是\r\n,Mac下是\r
 
ascii模式下会转换文件
  不能说是不同系统对回车换行解释不同
  而是不同的系统有不同的行结束符
  unix系统下行结束符是一个字节,即十六进制的0A
  而ms的系统是两个字节,即十六进制的0D0A
    MAC系统是一个字节,即十六进制的0D
 
在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理.
 
cd 在远程机上改变工作目录
 
lcd 在本地机上改变工作目录
 
ascii 设置文件传输方式为ASCII模式
 
binary 设置文件传输方式为二进制模式
get(mget) 从远程机传送指定文件到本地机
 
put(mput) 从本地机传送指定文件到远程机
 
open 连接远程ftp站点
! 转到Shell中
从远程系统获取文件
 
get和mget命令用于从远程机上获取文件。get命令的一般格式为:
 
get 文件名
 
您还可以给出本地文件名,这个文件名是这个要获取的文件在您的本地机上创建时的文件名。如果您不给出一个本地文件名,那么就使用远程文件原来的名字。
 
mget命令一次获取多个远程文件。mget命令的一般格式为:
 
mget 文件名列表
 
使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。
 
向远程系统发送文件
 
put和mput命令用于向远程机发送文件。Put命令的一般格式为:
 
put 文件名
 
mput命令一次发送多个本地文件,mput命令的一般格式为:
 
mput 文件名列表
 
使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。对其中的每个文件都要求用户确认是否发送。
FTP的工作方式 
  FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。
 
Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。 
  下面介绍一个这两种方式的工作原理: 
  Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道
 
上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端
 
的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。 
  Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到
 
Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端
 
口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。 
  很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为
 
客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无
 
法和内部网络的客户端建立一个新的连接,造成无法工作。
    FTP的连接模式有两种,PORT和PASV。PORT模式是一个主动模式,PASV是被动模式,这里都是相对于服务器而言的。主动模式就是服务器以20端口主动的去连接客户端的某个大于1024的端口(这个端口是客户端通过port命令告诉服务器的)。被动模式就是客户端用某个大于1024的端口去连接服务器的某个大于1024的端口。
    如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。
FTP是有两种传输的模式的,主动模式和被动模式,之前一直没怎么去搞明白之,现在找了下资料,
重新整理了下:

  一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。

1)      控制连接

客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。

2)      数据连接

FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。