बधाई हो, आपने नेटवर्किंग लेयर्स के कॉन्सेप्ट में यह समझा दिया है कि पोर्ट और प्रोटोकॉल एक दूसरे से सीधे जुड़े नहीं हैं। जैसा कि अन्य कह रहे हैं, टेलनेट का उपयोग किसी भी टीसीपी पोर्ट से कनेक्ट करने के लिए किया जा सकता है। हालांकि यह समझने के लिए कि यह संभव क्यों है, आपको नेटवर्किंग परतों के बारे में थोड़ा समझने की आवश्यकता है। अगर आपने कभी OSI 7 लेयर मॉडल के बारे में सुना है तो यह वही है जो आपको दूसरे पोर्ट से कनेक्ट करने के लिए टेलनेट का उपयोग करने की अनुमति देता है। हालांकि इंटरनेट पर, वे केवल 4 परतों के साथ खुद को चिंतित करते हैं और इसे इंटरनेट प्रोटोकॉल सूट कहा जाता है। नेटवर्किंग की परतों के बिना, प्रत्येक प्रोग्राम को न केवल अपने स्वयं के प्रोटोकॉल को समझने की आवश्यकता होगी, बल्कि अपनी स्वयं की आईपी एड्रेसिंग योजना और पोर्ट सिस्टम को परिभाषित करना होगा, जिसका अर्थ है कि प्रत्येक राउटर को यह समझने की आवश्यकता होगी कि इन योजनाओं को कैसे रूट किया जाए और विभिन्न प्रोटोकॉल बहुत अधिक होंगे सीखना और निदान करना कठिन है। इसे सीधे शब्दों में कहें, तो इंटरनेट लगभग परतों के बिना काम नहीं करेगा।
आप जिस चीज से संबंधित हैं वह ट्रांसपोर्ट लेयर और एप्लिकेशन लेयर है। ट्रांसपोर्ट लेयर पर हमारे पास टीसीपी और यूडीपी जैसे इंटरनेट प्रोटोकॉल हैं, जिनमें से प्रत्येक पर 1 से 65535 तक पोर्ट संख्या है। एप्लिकेशन लेयर में हमारे पास HTTP, SMTP और DNS जैसे प्रोटोकॉल हैं। आमतौर पर प्रोटोकॉल को परिभाषित करने वाले प्रत्येक इंटरनेट मानक दस्तावेज़ एक डिफ़ॉल्ट टीसीपी या यूडीपी पोर्ट को निर्दिष्ट करता है जिसे प्रोटोकॉल को डिफ़ॉल्ट रूप से उपयोग करना चाहिए। जैसे HTTP के लिए TCP पोर्ट 80, SMTP के लिए TCP पोर्ट 25, DNS के लिए UDP पोर्ट 53 और टेलनेट के लिए TCP पोर्ट 23 है। टेलनेट प्रोग्राम वास्तव में टेलनेट प्रोटोकॉल को बोलता है, जो एक मानक प्रोटोकॉल है, लेकिन वर्तमान मानकों द्वारा ज्यादातर एक प्राचीन। क्योंकि इसके प्रोटोकॉल क्रम 8-बिट वर्णों से बने होते हैं, आप शायद ही कभी खुद को और इसके ज्यादातर पारदर्शी को तब देखते हैं जब HTTP और SMTP जैसे अन्य आधुनिक प्रोटोकॉल के साथ तुलना की जाती है, जो ASCII में मानव दृश्यमान शब्दों का उपयोग करते हैं जैसे GET, POST, HELO, LOGIN। आदि।
क्योंकि इसका प्रोटोकॉल आम तौर पर दिखाई नहीं देता है, टेलनेट अन्य टीसीपी पोर्ट से कनेक्ट करने और उपयोगकर्ता को मैन्युअल रूप से प्रोटोकॉल में टाइप करने की अनुमति के लिए एक सभ्य उपकरण के लिए बनाया गया है। कुछ नेटवर्क प्रशासक इस तकनीक का उपयोग सर्वरों की समस्याओं के निदान के लिए करते हैं। हालाँकि, क्योंकि टेलनेट प्रोग्राम का अभी भी अपना प्रोटोकॉल है और कभी-कभी अतिरिक्त बिट डेटा भेज सकता है, फिर भी आप इस तकनीक के साथ समस्याओं का अनुभव कर सकते हैं। जब आप टेलनेट का उपयोग करते हैं तो आप वास्तव में एप्लिकेशन परत के साथ-साथ परिवहन परत पर "कनेक्शन बना रहे हैं"। यह सिर्फ ऐसा होता है कि अन्य एप्लिकेशन लेयर प्रोटोकॉल अधिकांश डायग्नोस्टिक्स के लिए इसके माध्यम से ठीक काम कर सकते हैं और टेलनेट प्रोटोकॉल के साथ हस्तक्षेप नहीं करेंगे। एनसी (नेट कैट) के माध्यम से ऐसा करने के लिए एक बेहतर कार्यक्रम है। इसे बिल्ली कमांड के नेटवर्क आधारित संस्करण होने से इसका नाम मिलता है)।
$ nc www.stackexchange.com 80
एनसी प्रोग्राम किसी भी एप्लिकेशन लेयर प्रोटोकॉल को नहीं बोलता है और जब आप इसके साथ संबंध बनाते हैं तो आप केवल इंटरनेट लेयर (आईपी एड्रेस) और ट्रांसपोर्ट लेयर (टीसीपी या यूडीपी) पर "कनेक्शन बना रहे हैं"। इसका मतलब यह है कि आप नियंत्रित करते हैं कि अनुप्रयोग परत प्रोटोकॉल का उपयोग क्या है। लगभग कुछ भी निष्पक्ष खेल है, यहां तक कि बाइनरी प्रोटोकॉल भी। इससे आप ट्रांसफ़र फ़ाइलों की तरह उपयोगी चीजें भी कर सकते हैं, बिना उन्हें दूषित किए और आने वाले ट्रैफ़िक के लिए बंदरगाहों पर सुनें:
nc -l 9000 < movie.mp4 (Your friend runs this)
nc friends.computer.hostname 9000 > movie.mp4 (you run this)
और फिर movie.mp4 को बिना किसी लेयर लेयर प्रोटोकॉल (जैसे कि FTP) का उपयोग करके नेटवर्क पर स्थानांतरित किया जाता है। एप्लिकेशन प्रोटोकॉल वास्तव में आपका मित्र आपको बता रहा है कि वे आपकी आज्ञा को चलाने के लिए तैयार हैं।
nc UDP पैकेट और UNIX- डोमेन सॉकेट भी संभाल सकता है। सुनने के लिए इसका उपयोग करना भी दिलचस्प हो सकता है।
nc -l 12345
अब आपके वेब ब्राउजर में http: // localhost: 12345 / और अपने nc सेशन में आपको ब्राउजर की GET / HTTP/1.1
रिक्वेस्ट को देखना चाहिए । इस बिंदु पर आप कुछ टाइप कर सकते हैं और दबा सकते हैं Ctrl-D
और यह आपके ब्राउज़र में सादे पाठ में दिखना चाहिए (यदि आप HTML दिखाना चाहते हैं, तो आपको इसे उचित एचटीटीपी प्रोटोकॉल प्रतिक्रिया को HTML कोड के बाद वापस भेजना होगा)।
कभी-कभी, जो प्रोग्राम मूल रूप से HTTP जैसे एक प्रोटोकॉल बोलते हैं, वे अन्य पोर्ट्स से कनेक्ट हो सकते हैं जो एक अलग प्रोटोकॉल के लिए हैं। आप आमतौर पर GUI ब्राउज़र में ऐसा नहीं कर सकते क्योंकि उन्होंने उन्हें कुछ पोर्ट से कनेक्ट करने से प्रतिबंधित कर दिया है, लेकिन यदि आप पोर्ट 25 से कनेक्ट करने के लिए कर्ल जैसे प्रोग्राम का उपयोग करते हैं (मेल भेजने के लिए SMTP) तो आप शायद एक दो को देखेंगे प्रोटोकॉल तोड़ने के बारे में त्रुटियाँ।
$ curl yourispsmtpserverhost.com:25
220 yourispsmtpserverhost.com ESMTP Postfix
221 2.7.0 Error: I can break rules, too. Goodbye.
ऐसा इसलिए होता है क्योंकि कर्ल सामान्य रूप से HTTP प्रोटोकॉल बोलता है, इसलिए टीसीपी हैंडशेक स्थापित करने के बाद, यह इस तरह से डेटा भेजना शुरू करता है:
GET / HTTP/1.1
Host: yourispsmtpserverhost.com:25
User-agent: curl
लेकिन एसएमटीपी सर्वर जो उम्मीद कर रहा है वह एसएमटीपी है, जो इस प्रकार है:
HELO myhomecomputername.local
किस बिंदु पर सर्वर अपनी पहचान रेखा वापस भेजता है:
250 yourispsmtpserverhost.com
तो आप देखते हैं कि ऐसा कुछ भी नहीं है जो कर्ल को SMTP सर्वर के साथ ट्रांसपोर्ट लेयर कनेक्शन स्थापित करने से रोकता है, यह सिर्फ प्रोटोकॉल नहीं बोल सकता है। लेकिन आप खुद को टेलनेट या अधिक अधिमानतः nc जैसे प्रोग्राम के साथ प्रोटोकॉल बोल सकते हैं।
nc(1)
) कमांड अधिक लचीला है। यह एसएसएल / टीएलएस सिफर सेवाओं से जुड़ सकता है, और इसे सर्वर के रूप में भी इस्तेमाल किया जा सकता है और यहां तक कि डेटा को रिले भी किया जा सकता है।