FTP主动模式与被动模式

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

Standard模式(即PORT方式,主动方式)

  • FTP 客户端和FTP服务器的TCP 21端口建立连接通道
  • 需要传输数据时,FTP客户端通过此通道向FTP服务端发送PORT命令
  • PORT命令指明了FTP客户端用什么端口接收数据
  • 服务器端通过自己的TCP 20端口连接至客户端的指定端口后开始数据传送

即主动模式为服务端主动连接客户端(由于如今的网络复杂度逐渐提高,主动模式相对来讲已不太流行)

Passive模式(即被动方式)

  • FTP 客户端和FTP服务器的TCP 21端口建立连接通道
  • 需要传输数据时,FTP客户端通过此通道向FTP服务端发送Pasv命令
  • Pasv命令指明使用被动模式进行连接
  • FTP服务器收到Pasv命令后,打开一个端口号大于1024的端口,并向客户端返回此端口号
  • 客户端通过此指定端口开始连接FTP服务器,通过三次握手建立连接通道,然后开始数据传送

即被动模式为服务端被客户端主动连接

为何会有FTP主动与被动模式之分?

  • 很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持被动模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口
  • 由于公网地址的短缺,很多地区接入互联网都是通过网络地址映射(NAT)方式实现的。通过NAT,网络运营商可以实现只分配一个公网IP(假设为39.156.69.79)给小区,却能让小区所有住户都能访问互联网。此公网IP地址即为我们这个小区所有居民的出口IP,这种情况下,我们在小区内的FTP客户端使用主动模式登陆FTP服务器时,从服务器的TCP 20端口会尝试向我们的出口IP地址 39.156.69.79 主动建立连接,但是实际发起请求的IP地址为我们的内网IP地址,而不是我们的出口IP地址,就会造成错误。

原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com

(0)
witersen的头像witersen
上一篇 2021年1月28日 下午3:49
下一篇 2021年1月29日 下午1:27

相关推荐

发表回复

登录后才能评论