Ось так був розроблений протокол FTP для роботи в пасивному режимі. Це, мабуть, не було гарною ідеєю, тому що я не думаю, що ця модель коли-небудь повторювалася в будь-якому іншому протоколі (і це ще більше стосується активного режиму FTP).
На порту з'єднання даних немає протоколу. Все, що знає сервер - єдине, що несе будь-яку інформацію в зв'язку з цим - це номер порту, до якого ви підключаєтесь.
Якби ви підключалися до одного і того ж порту кожного разу, сервер не міг би вказати, до якого файлу ви підключаєтесь. Номер порту служить ланкою між запитом на передачу на з'єднанні управління та з'єднанням даних - номер порту міститься у відповіді на PASV
команду.
Якщо два клієнти одночасно вимагали передачі, коли сервер приймає з'єднання на одному порту, сервер не зможе повідомити, який файл передавати. Звичайно, сервер міг використовувати клієнтський IP для прийняття рішення (насправді багато FTP-сервери підтверджують, що клієнтський IP-відповідність відповідає IP, використовуваному для з'єднання управління).
Але це не допоможе:
- Кілька підключень від однієї машини (більшість FTP-клієнтів підтримують паралельні передачі / черги, і ви можете фактично запускати кілька різних FTP-клієнтів на одній машині);
- Підключення з різних машин у межах однієї (корпоративної) мережі, оскільки ті, що мають однаковий зовнішній IP.
Частково скопійовано з моєї відповіді на « Чому пасивний режим FTP вимагає діапазону портів на відміну від одного порту? за помилкою сервера.