FTP的主动模式和被动模式
https://baijiahao.baidu.com/s?id=1604307221471041402&wfr=spider&for=pc
https://www.cnblogs.com/cxq20190307/p/10945839.html
FTP是干啥的就不介绍了。这里只说FTP的两种模式的工作方式:主动(active mode)/被动(passive mode)。
主动模式
客户端从一个任意的大于1023(N)的端口连接到FTP服务器的命令端口(21)。然后客户端开始监听端口N+1,并发送FTP命令“PORT N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。在这种模式下建立连接后:
- 服务器开放端口:20(传数据),21(建连接,listen)
- 客户端开放端口:N+1(传数据,listen)
由于要在客户端建立监听端口,这种做法非常不优雅(NAT,防火墙会教你做人)。
被动模式
客户端打开两个任意的本地端口(大于1023的N和N+1)。第一个端口连接服务器的21端口,但仅提交PASV命令。服务器会开启一个任意的非特权端口(大于1023的P),并发送“PORT P”命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。在这种模式下建立连接后:
- 服务器开放端口:21(建连接,listen),P(传数据,listen)
- 客户端开放端口:N+1(传数据)
由于客户端不需要监听端口,不会行使任何服务器的机能。