FTP protokolü pasif modda çalışacak şekilde tasarlandı. Muhtemelen iyi bir fikir değildi, çünkü bu modelin başka herhangi bir protokolde tekrarlandığını düşünmüyorum (ve bu FTP aktif modu hakkında daha da doğrudur).
Veri bağlantı portunda protokol yoktur. Sunucunun bildiği tek şey - bu bağlantıdaki herhangi bir bilgiyi taşıyan tek şey, bağlandığınız bağlantı noktası numarasıdır.
Her seferinde aynı bağlantı noktasına bağlanacak olsaydınız, sunucu hangi dosyaya bağlandığınızı söyleyemezdi. Bağlantı noktası numarası, kontrol bağlantısındaki bir aktarma isteği ile veri bağlantısı arasında bir bağlantı görevi görür - bağlantı noktası numarası, PASV
komuta yanıtta bulunur .
İki istemci aynı anda aktarım isteğinde bulunsaydı, sunucu tek bir bağlantı noktasındaki bağlantıyı kabul ettiğinde, sunucu hangi dosyayı aktaracağını söyleyemezdi. Elbette, sunucu karar için bir istemci IP'si kullanabilir (aslında birçok FTP sunucusu, istemci IP'sinin güvenlik için kontrol bağlantısında kullanılan IP ile eşleştiğini doğrular).
Ancak bu işe yaramaz:
- Aynı makineden çoklu bağlantılar (çoğu FTP istemcisi paralel aktarımları / kuyrukları destekler ve aslında bir makinede birden çok farklı FTP istemcisi çalıştırabilirsiniz);
- Aynı harici IP'deki gibi aynı (kurumsal) ağdaki farklı makinelerden bağlantı.
FTP pasif modunun neden yalnızca bir bağlantı noktasının aksine bir bağlantı noktası aralığı gerektirdiğine cevabımdan kısmen kopyalandı ? Sunucu Hatası.