ftp需要两个端口完成一次数据传输:
命令端口 & 数据端口
其中数据端口分为两种模式:主动模式,被动模式。
主动模式(PORT):
客户端主动开启一个端口,然后告诉服务器我开了xxx端口,数据在这里传输,你从这里拿取数据或者发过来数据。
即:命令端口发送Request: PORT 192,168,1,101,211,188\r\n,客户机ip:192.168.1.101,主动开放了211 * 256 + 188 = 54204端口供数据传输。然后服务器会连接客户端的这个端口。不过可能会由于防火墙的缘故,所以有了被动模式。
被动模式(Passive):
客户端要求服务器开放一个端口,服务器被动开放一个端口作为数据传输,然后告诉客户端我开了xxx端口,数据通过这里传输,你从这里拿取数据或者发过来数据。
即:客户端命令端口发送Request: PASV。服务器开放端口并告诉客户端:227 Entering Passive Mode (192,168,152,132,29,220)\r\n,端口号29 * 256 + 220 = 7644。客户端再去连接服务器新开放的这个端口。
指令明文传输,现在大多都用被动模式。比较简单没啥好解释的。当然有加密传输的软件,一个道理。
直接看图就明白了。
客户端:Windows资源管理器
服务端:Serv-U v15.1
连接ftp,列出目录
下载文件
上传文件