最近在写一个ftp服务器,我看到主动和被动时候完全是懵的。
我用IIS搭建了个ftp服务器,然后用python的socket去链接,发现无论是pasv返回的端口还是我开启端口去port服务器(我同时连接这俩端口)只要上传文件(stor xxx.txt)无论其中哪一个数据连接发送数据服务器都能**正常接收**。
a=socket.socket()
b=socket.socket()
a.connect(("127.0.0.1",xxx*256+xxx)) #IIS 服务器的pasv
b.bind(("127.0.0.1",88*256+88)) #本地主动请求的port
b.listen(1)
conn, addr = b.accept()
===============================
#ftp>> stor A.txt
#125 Data connection already open;Transfer starting. (用a数据链接)
#226 Transfer complete.
#ftp>> stor B.txt
#125 Data connection already open; Transfer starting.(用b数据链接)
#226 Transfer complete.
所以ftp服务器是根据链接(port,pasv)的先后顺序进行传输数据还是某个链接先提交了数据就使用该数据链接?