जवाबों:
सक्रिय और निष्क्रिय दो मोड हैं जो एफ़टीपी में चल सकते हैं।
पृष्ठभूमि के लिए, एफ़टीपी वास्तव में क्लाइंट और सर्वर, कमांड और डेटा चैनलों के बीच दो चैनलों का उपयोग करता है, जो वास्तव में अलग टीसीपी कनेक्शन हैं।
कमांड चैनल कमांड और प्रतिक्रियाओं के लिए है जबकि डेटा चैनल वास्तव में फाइलों को स्थानांतरित करने के लिए है।
कमांड सूचनाओं और डेटा को अलग-अलग चैनलों में अलग करने से वर्तमान डेटा ट्रांसफर खत्म होने का इंतजार किए बिना सर्वर पर कमांड भेजने में सक्षम होने का एक निफ्टी तरीका है। RFC के अनुसार, यह केवल कमांड के एक सबसेट के लिए अनिवार्य है, जैसे कि छोड़ने, वर्तमान हस्तांतरण को रद्द करने और स्थिति प्राप्त करने के लिए।
में सक्रिय मोड, ग्राहक आदेश चैनल स्थापित करता है, लेकिन सर्वर डेटा चैनल की स्थापना के लिए जिम्मेदार है। यह वास्तव में एक समस्या हो सकती है, उदाहरण के लिए, क्लाइंट मशीन फ़ायरवॉल द्वारा सुरक्षित है और बाहरी पार्टियों के अनधिकृत सत्र अनुरोधों की अनुमति नहीं देगा।
में निष्क्रिय मोड, ग्राहक स्थापित करता है दोनों चैनलों। हम पहले से ही जानते हैं कि यह कमांड चैनल को सक्रिय मोड में स्थापित करता है और यह यहाँ भी ऐसा ही करता है।
हालाँकि, यह तब सर्वर (कमांड चैनल पर) को क्लाइंट पर वापस कनेक्शन स्थापित करने की कोशिश करने के बजाय एक पोर्ट (सर्वर विवेक पर) सुनना शुरू करने का अनुरोध करता है ।
इस के हिस्से के रूप में, सर्वर क्लाइंट को उस पोर्ट नंबर पर भी लौटता है जिसे उसने सुनने के लिए चुना है, ताकि क्लाइंट को पता हो कि उसे कैसे कनेक्ट करना है।
एक बार जब ग्राहक को यह पता चल जाता है, तो वह सफलतापूर्वक डेटा चैनल बना सकता है और जारी रख सकता है।
अधिक विवरण RFC में उपलब्ध हैं: https://www.ietf.org/rfc/rfc959.txt
मैं हाल ही में अपने काम के स्थान पर इस प्रश्न पर चलता हूं इसलिए मुझे लगता है कि मुझे यहां कुछ और कहना चाहिए। मैं यह समझाने के लिए छवि का उपयोग करूंगा कि एफ़टीपी पिछले उत्तर के लिए एक अतिरिक्त स्रोत के रूप में कैसे काम करता है।
सक्रिय मोड:
निष्क्रिय मोड:
एक सक्रिय मोड कॉन्फ़िगरेशन में, सर्वर एक यादृच्छिक क्लाइंट-साइड पोर्ट से कनेक्ट करने का प्रयास करेगा। तो संभावना है, कि बंदरगाह उन पूर्वनिर्धारित बंदरगाहों में से एक नहीं होगा। नतीजतन, इसे कनेक्ट करने का प्रयास फ़ायरवॉल द्वारा अवरुद्ध किया जाएगा और कोई कनेक्शन स्थापित नहीं किया जाएगा।
एक निष्क्रिय कॉन्फ़िगरेशन में यह समस्या नहीं होगी क्योंकि ग्राहक कनेक्शन शुरू करने वाला एक होगा। बेशक, सर्वर साइड के लिए फ़ायरवॉल भी संभव है। हालांकि, चूंकि सर्वर को क्लाइंट की तुलना में अधिक संख्या में कनेक्शन अनुरोध प्राप्त होने की उम्मीद है, तो यह सर्वर व्यवस्थापक के लिए स्थिति के अनुकूल होने और निष्क्रिय मोड कॉन्फ़िगरेशन को संतुष्ट करने के लिए बंदरगाहों के चयन को खोलने के लिए तर्कसंगत होगा।
इसलिए आपके लिए निष्क्रिय मोड FTP का समर्थन करने के लिए सर्वर को कॉन्फ़िगर करना सबसे अच्छा होगा। हालाँकि, निष्क्रिय मोड आपके सिस्टम को हमलों के लिए असुरक्षित बना देगा क्योंकि ग्राहकों को यादृच्छिक सर्वर पोर्ट से कनेक्ट करना है। इस प्रकार, इस मोड का समर्थन करने के लिए, न केवल आपके सर्वर के पास कई पोर्ट उपलब्ध होने चाहिए, आपके फ़ायरवॉल को उन सभी पोर्ट से कनेक्शन को भी गुजरने देना चाहिए!
जोखिमों को कम करने के लिए, आपके सर्वर पर बंदरगाहों की एक सीमा को निर्दिष्ट करने के लिए एक अच्छा समाधान होगा और फिर अपने फ़ायरवॉल पर केवल उस सीमा के बंदरगाहों की अनुमति देना होगा।
अधिक जानकारी के लिए, कृपया आधिकारिक दस्तावेज़ पढ़ें ।
मेरे लेख का नया संस्करण FTP कनेक्शन मोड (सक्रिय बनाम निष्क्रिय) :
एफ़टीपी कनेक्शन मोड (सक्रिय या निष्क्रिय), यह निर्धारित करता है कि डेटा कनेक्शन कैसे स्थापित किया गया है। दोनों मामलों में, एक क्लाइंट एक FTP सर्वर कमांड पोर्ट 21 को एक टीसीपी नियंत्रण कनेक्शन बनाता है। यह एक मानक आउटगोइंग कनेक्शन है, जैसा कि किसी भी अन्य फाइल ट्रांसफर प्रोटोकॉल (एसएफटीपी, एससीपी, वेबडाव) या किसी अन्य टीसीपी क्लाइंट एप्लिकेशन (जैसे वेब ब्राउज़र) के साथ होता है। )। इसलिए, नियंत्रण कनेक्शन खोलते समय आमतौर पर कोई समस्या नहीं होती है।
जहां एफ़टीपी प्रोटोकॉल अन्य फ़ाइल ट्रांसफर प्रोटोकॉल की तुलना में अधिक जटिल है, फ़ाइल ट्रांसफ़र हैं। जबकि अन्य प्रोटोकॉल सत्र नियंत्रण और फ़ाइल (डेटा) स्थानांतरण के लिए एक ही कनेक्शन का उपयोग करते हैं, एफ़टीपी प्रोटोकॉल फ़ाइल स्थानांतरण और निर्देशिका लिस्टिंग के लिए एक अलग कनेक्शन का उपयोग करता है।
में सक्रिय मोड, क्लाइंट सर्वर से आने वाले डेटा कनेक्शन के लिए एक यादृच्छिक पोर्ट पर ध्यान दे शुरू होता है (ग्राहक एफ़टीपी आदेश भेजता है PORT
सर्वर जो बंदरगाह पर यह सुन रहा है सूचित करने के लिए)। आजकल, यह विशिष्ट है कि क्लाइंट एक फ़ायरवॉल (जैसे अंतर्निहित विंडोज फ़ायरवॉल) या NAT राउटर (जैसे ADSL मॉडेम) के पीछे है, आने वाले टीसीपी कनेक्शन को स्वीकार करने में असमर्थ है।
इस कारण से निष्क्रिय मोड को पेश किया गया था और आजकल इसका उपयोग किया जाता है। निष्क्रिय मोड का उपयोग करना बेहतर होता है क्योंकि अधिकांश जटिल कॉन्फ़िगरेशन सर्वर की तरफ से केवल एक बार किया जाता है, अनुभवी प्रशासक द्वारा, क्लाइंट साइड पर व्यक्तिगत रूप से बजाय (संभवतः) अनुभवहीन उपयोगकर्ताओं द्वारा।
में निष्क्रिय मोड, ग्राहक नियंत्रण कनेक्शन का उपयोग करता एक भेजने के लिए PASV
सर्वर के लिए आदेश और उसके बाद सर्वर है, जो ग्राहक तो सर्वर आईपी पते और सर्वर के लिए एक डेटा कनेक्शन को खोलने के लिए उपयोग करता है से एक सर्वर आईपी पते और सर्वर पोर्ट नंबर प्राप्त करता है पोर्ट नंबर प्राप्त हुआ।
साथ निष्क्रिय मोड, विन्यास बोझ से ज्यादातर सर्वर साइड पर है। सर्वर प्रशासक को नीचे बताए अनुसार सर्वर सेटअप करना चाहिए।
FTP सर्वर साइड पर फ़ायरवॉल और NAT को न केवल एफ़टीपी पोर्ट 21 पर आने वाले कनेक्शन को अनुमति देने / रूट करने के लिए कॉन्फ़िगर किया जाना है, बल्कि आने वाले डेटा कनेक्शन के लिए पोर्ट की एक श्रृंखला भी है। आमतौर पर, एफ़टीपी सर्वर सॉफ़्टवेयर में पोर्ट की एक श्रृंखला को सेटअप करने के लिए एक कॉन्फ़िगरेशन विकल्प होता है, जो सर्वर उपयोग करेगा। और उसी रेंज को फ़ायरवॉल / NAT पर खोला / रूट करना पड़ता है।
जब FTP सर्वर एक NAT के पीछे होता है, तो उसे यह पता होना चाहिए कि यह बाहरी IP पता है, इसलिए यह क्लाइंट को PASV
कमांड के जवाब में प्रदान कर सकता है ।
साथ सक्रिय मोड, विन्यास बोझ से ज्यादातर क्लाइंट की तरफ है।
फ़ायरवॉल (उदाहरण के लिए Windows फ़ायरवॉल) और NAT (जैसे ADSL मॉडेम रूटिंग नियम) क्लाइंट साइड पर आने वाले डेटा कनेक्शन के लिए पोर्ट की एक श्रेणी की अनुमति देने के लिए कॉन्फ़िगर किया जाना चाहिए। विंडोज में पोर्ट खोलने के लिए, कंट्रोल पैनल> सिस्टम और सिक्योरिटी> विंडोज फायरवाल> एडवांस्ड सेटिंग्स> इनबाउंड रूल्स> न्यू रूल पर जाएं । NAT (यदि कोई हो) पर बंदरगाहों को रूट करने के लिए, इसके प्रलेखन का संदर्भ लें।
जब आपके नेटवर्क में NAT होता है, तो FTP क्लाइंट को अपने बाहरी आईपी पते को जानने की आवश्यकता होती है जो WinSCP को PORT
कमांड का उपयोग करके FTP सर्वर को प्रदान करने की आवश्यकता होती है । ताकि डेटा कनेक्शन को खोलने के लिए सर्वर क्लाइंट से सही तरीके से कनेक्ट हो सके। कुछ एफ़टीपी ग्राहक बाहरी आईपी पते को स्वचालित करने में सक्षम हैं, कुछ को मैन्युअल रूप से कॉन्फ़िगर किया जाना है।
कुछ फायरवॉल / NATs एफ़टीपी नियंत्रण कनेक्शन का निरीक्षण करके और डेटा कनेक्शन को स्वचालित रूप से खोलने / बंद करने का प्रयास करते हैं और नियंत्रण कनेक्शन ट्रैफ़िक में डेटा कनेक्शन आईपी पते का अनुवाद करते हैं।
इस तरह के फ़ायरवॉल / NAT के साथ, उपरोक्त विन्यास एक सादे अनएन्क्रिप्टेड एफ़टीपी के लिए आवश्यक नहीं है। लेकिन यह एफटीपीएस के साथ काम नहीं कर सकता है, क्योंकि नियंत्रण कनेक्शन ट्रैफ़िक एन्क्रिप्टेड है और फ़ायरवॉल / एनएटी निरीक्षण नहीं कर सकता है और न ही इसे संशोधित कर सकता है।
सक्रिय मोड: -server कनेक्शन आरंभ करता है।
निष्क्रिय मोड: -क्लाइंट कनेक्शन शुरू करता है।
सक्रिय मोड- क्लाइंट सर्वर सिग्नल को एक PORT कमांड जारी करता है कि वह "सक्रिय रूप से" क्लाइंट को डेटा कनेक्शन वापस खोलने के लिए एक आईपी और पोर्ट नंबर प्रदान करेगा।
पैसिव मोड- क्लाइंट एक पीएएसवी कमांड जारी करता है जिससे यह संकेत मिलता है कि वह सर्वर के लिए आईपी और पोर्ट नंबर की आपूर्ति के लिए "निष्क्रिय" प्रतीक्षा करेगा, जिसके बाद क्लाइंट सर्वर से डेटा कनेक्शन बनाएगा।
ऊपर बहुत सारे अच्छे उत्तर हैं, लेकिन इस ब्लॉग पोस्ट में कुछ सहायक ग्राफिक्स शामिल हैं और एक बहुत ही ठोस विवरण दिया गया है: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and -passive-एफ़टीपी /