FTP主动连接和被动连接

FTP主动连接和被动连接

FTP(File Transfer Protocol)文件传输协议,尤其是大型文件系统的传输使用FTP更为方便。使用FTP进行文件传输有一程度的危险性,因为数据在因特网上面是完全没有受到保护的明文传输方式。

常见的FTP:vsftpd、ProFTPD

FTP的传输使用的是TCP数据包协议,TCP建立连接前会先进行三次握手,由于FTP服务器使用了两个连接,分别是命令通道与数据流通道,所以这两个连接都要经过三次握手。

FTP主动连接(PORT方式)

FTP主动连接和被动连接_第1张图片

  • 建立命令通道连接

客户端会随机取一个大于1024以上的端口(Port X)来与FTP服务器端的21实现连接。这个过程需要三次握手。实现连接后客户端便可以通过这个连接来对FTP服务器执行命令,查询文件、下载、上传等命令都是利用这个通道来执行的。

  • 告知FTP服务器端使用Actiove(也称之为PORT方式)且告知连接的端口号

FTP服务器通过21端口执行命令,牵涉到数据流时,会告知服务器用什么方式来连接,如果是主动方式,客户端会随机启用一个端口(上图中Y),且通过命令通道告知FTP服务器这两个信息,并等待FTP服务器的连接。

FTP主动传输方式也称之为PORT方式,建立数据连接时,FTP客户端会向FTP服务端发送PORT命令,PORT命令携带如下参数(A1,A2,A3,A4,P1,P2)。例如(192,168,100,10,13,238)。其中IP地址就是:192.168.100.10。临时端口号的数值为256 X P1+P2。端口号就是256*13+238 = 3566。

  • FTP服务器主动向客户端连接

FTP服务器了解客户端需求后,会主动地有Port20向客户端的Port Y连接,这个连接也需要经过三次握手。此时FTP两条连接建立完毕,分别用于命令的执行和数据的传递。FTP服务器默认使用的主动连接端口就是port20

⋆ \star 主动连接可能遇到的问题

如果客户端处于防火墙内部,而客户端提供的端口号又是随机的,防火墙并不知道,又阻断了对内部随机端口的访问,就会造成无法建立FTP数据连接。此时,需要使用FTP被动方式来进行传输。

FTP被动连接(PASV方式)

FTP主动连接和被动连接_第2张图片

  • Client与Server建立命令通道

与主动连接方式相同

  • Client端发送PASV请求

Client端通过已经建立好的控制通道(命令通道)向Server发送PASV命令,告诉服务器进入被动模式。并等待Server的回应。

  • FTP服务器启动数据端口,并告知Client端进行连接

服务器对客户端的PASV命令应答,应答中包含服务器的IP地址和一个临时端口信息。

  • 客户端随机用一个大于1024的端口进行连接

客户端用一个大于1024的端口号来进行对Server的port PASV连接。

采用被动方式时,两个连接都由客户端发起。一般防火墙不会限制从内部的客户端发出的连接,所以这样就解决了在主动方式下防火墙阻断外部发起的连接而造成无法进行数据传输的问题。

你可能感兴趣的:(Linux)