पोर्ट और प्रोटोकॉल वास्तव में क्या हैं?


11

मैंने सुना है कि लोग पोर्ट और प्रोटोकॉल (कंप्यूटर नेटवर्किंग के संबंध में) के बारे में बात करते हैं, और वे अक्सर उनके लिए उपमा प्रदान करते हैं (उदाहरण के लिए: "एक पोर्ट शिपिंग पोर्ट की तरह है, यह शिपिंग पोर्ट की तरह डेटा भेजता और प्राप्त करता है और माल प्राप्त करता है। अन्य बंदरगाहों से ") और उस तरह की चीजें।

मैं समझता हूं कि यह सब क्या है, लेकिन केवल एक कृत्रिम स्तर पर। असल में, मुझे पता है कि एक बंदरगाह क्या है और मैं समझता हूं कि प्रोटोकॉल क्या हैं, लेकिन वे वास्तव में क्या हैं?

क्या ये बंदरगाह भौतिक वस्तुएं हैं? क्या वे मेरे कंप्यूटर के हिस्से में निर्मित हैं? कितने बंदरगाह हैं? क्या मैं बंदरगाहों की संख्या बढ़ा या घटा सकता हूं? क्या वे कुछ शारीरिक भी हैं? या कोड में लिखा है? यह कोड कहां है? ऑपरेटिंग सिस्टम? वास्तव में एक बंदरगाह क्या है?

प्रोटोकॉल क्या हैं? मुझे लगता है कि वे कुछ प्रकार के कोड हैं .... क्या आप अपना प्रोटोकॉल बना सकते हैं? विशिष्ट प्रोटोकॉल चलाने के लिए आपको एक विशिष्ट पोर्ट कैसे मिलता है? प्रोटोकॉल बनाने के लिए आप किस भाषा का उपयोग करते हैं? आप एक नए प्रोटोकॉल को कैसे परिभाषित या आविष्कार करते हैं?

जवाबों:


9

Hello71s उत्तर के लिए फ्यूचर, यह एक पैकेट में एक पते की संरचना के बारे में सोचकर एक बंदरगाह की कल्पना करने में मदद कर सकता है। एक पैकेट जो डेटा की एक इकाई है, एक नेटवर्क के आसपास से गुजरता है। टीसीपी एक ट्रांसपोर्ट लेयर प्रोटोकॉल का एक उदाहरण है जो बंदरगाहों का उपयोग करता है, और आमतौर पर आईपी पर उपयोग किया जाता है।

तो आईपी के दो संबोधित घटक हैं - स्रोत आईपी और गंतव्य आईपी। टीसीपी एक स्रोत पोर्ट और एक गंतव्य पोर्ट का उपयोग करके इसे जोड़ता है। यह पोर्ट है जो एक ही आईपी पते के लिए नियत ट्रैफ़िक को अलग करने में सक्षम मशीन को सक्षम बनाता है - अर्थात, यदि आपके पास एक सर्वर है जो एक एकल आईपी पते पर वेब अनुरोध और ईमेल दोनों को पुन: प्राप्त करता है, तो आपको यह निर्धारित करने की आवश्यकता है कि किस एप्लिकेशन को डेटा प्राप्त करना चाहिए - ईमेल सेवा या वेब सेवा। इसलिए वे इस तरह दिख सकते हैं यदि एक एकल उपयोगकर्ता एक वेब अनुरोध और एक ही सर्वर के लिए एक ईमेल अनुरोध करने के लिए था:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23434             192.168.1.1   80              web
10.1.1.10    34343             192.168.1.1   25              incoming email

वेब सेवा पोर्ट 80 का मालिक है और ईमेल सेवा पोर्ट 25 का मालिक है - वे अपने संबंधित बंदरगाहों पर "सुनते हैं", जो ट्रैफ़िक को सही स्थान पर समाप्त करने में सक्षम बनाता है।

स्रोत पोर्ट "पंचांग" है - इसमें पैकेट को भेजे जाने के समय बनाया जाता है। हालांकि, यह अभी भी एक उपयोगी उद्देश्य प्रदान करता है। यह कनेक्शन के दोनों सिरों को अलग-अलग वार्तालापों पर नज़र रखने में सक्षम बनाता है। विचार करें कि क्या हमारे उपयोगकर्ता ने एक साथ दो वेब अनुरोध भेजे हैं:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23232             192.168.1.1   80              web request 1
10.1.1.10    23234             192.168.1.1   80              web request 2

इससे वेब सेवा को पता चल जाता है कि ये अलग-अलग अनुरोध हैं, लेकिन साथ ही, वेबसर्वर - वेब पेजों से वापसी ट्रैफ़िक को संबंधित स्रोत पोर्ट पर वापस भेज दिया जाता है, जो ब्राउज़र को यह जानने में सक्षम बनाता है कि सर्वर किस रिस्पांस का जवाब दे रहा है।

ध्यान दें कि यह सभी पोर्ट संख्याओं को संदर्भित करता है, एक टीसीपी / आईपी परिप्रेक्ष्य से, इन पोर्टों में ले जाया जा रहा वास्तविक डेटा कुछ भी हो सकता है। इसका ध्यान नहीं है या अनुप्रयोगों के बारे में जागरूकता नहीं है, इसलिए यदि आपके पास पोर्ट 25 पर वेब ट्रैफिक है और पोर्ट 80 पर ईमेल है, तो यह कोई भी समझदार नहीं होगा।

यह डेटा को सही संरचना सुनिश्चित करने के लिए भेजने और प्राप्त करने के लिए आवेदन पर निर्भर है, और यह वह जगह है जहां एप्लिकेशन प्रोटोकॉल आते हैं, HTTP एक एप्लिकेशन प्रोटोकॉल का एक उदाहरण है जिसका उपयोग वेब ब्राउज़र वेब सर्वर के साथ संवाद करने के लिए करते हैं। यह एक अच्छी तरह से परिभाषित प्रोटोकॉल है जो यह सुनिश्चित करता है कि ब्राउज़र किसी भी वेब सर्वर को अनुरोध भेजेगा और वेबसर्वर समझदारी से जवाब देगा। लेकिन इसकी परिभाषा में यह शामिल नहीं है कि ए से बी तक पैकेट कैसे मिलते हैं - परिवहन, इंटरनेट और लिंक परतों - पूर्ववर्ती परतों की जिम्मेदारी है।


धन्यवाद! यह सिर्फ उत्तर था जिसकी मुझे तलाश थी, मदद करने के लिए धन्यवाद!
बॉब

3

हम्म। मुझे लगता है कि शुरू करने के लिए सबसे अच्छी जगह आईपी सूट, उर्फ ​​टीसीपी / आईपी मॉडल को देखना होगा। (सादगी के उद्देश्यों के लिए OSI मॉडल की अन्य परतों की उपेक्षा करना।)

मूल रूप से, यह परतों की एक श्रृंखला है:

Application Layer - HTTP, FTP, POP, SSH, आदि
ट्रांसपोर्ट लेयर - TCP, UDP, आदि
इंटरनेट लेयर - IP, ICMP, आदि
लिंक लेयर - ईथरनेट, इत्यादि।

पोर्ट सबसे अधिक भाग के लिए होते हैं, ट्रांसपोर्ट लेयर पर लागू किए जाते हैं (लेयर 4 - हां, नंबरिंग सही है।)

OSes में कार्यान्वित टीसीपी और / या UDP स्टैक के अधिकांश भाग कार्यक्रमों को पोर्ट असाइन करने की एक बुनियादी प्रणाली का उपयोग करते हैं और इन कार्यक्रमों में घटनाओं को बढ़ाते हैं क्योंकि पैकेट नेटवर्क पर आते हैं। हालांकि, कोई भी कार्यान्वयन सैद्धांतिक रूप से काम कर सकता है; यहां तक ​​कि अकादमिक में विचार किए गए काल्पनिक वैकल्पिक ढेर भी हो सकते हैं।

टीसीपी को कुल 65535 बंदरगाहों के रूप में परिभाषित किया गया है, जो कि किसी भी कार्यक्रम का उपयोग वे जो कुछ भी करना चाहते हैं, कर सकते हैं (हालांकि कई ओएस 1024 के तहत बंदरगाहों के उपयोग को सीमित करते हैं, उन्हें एक तदर्थ विशेष दर्जा देते हैं)। हालाँकि कुछ सीमित सूचियाँ हैं, लेकिन परिभाषित करने के लिए कोई वास्तविक मानक नहीं है कि कौन सा पोर्ट मिलता है और कौन सा पोर्ट किस प्रोग्राम को चलाता है। एक बंदरगाह, इस प्रकार, अधिक या कम एक यादृच्छिक संख्या है कि एक कार्यक्रम के विभिन्न कार्यान्वयन पर संवाद करने के लिए सहमत होने का निर्णय लेते हैं। बेशक, ऐसे कार्यक्रमों के डिजाइनर उन बंदरगाहों से बचने की कोशिश करते हैं जो अन्य लोकप्रिय कार्यक्रमों ने पहले से ही चुना है।

दी कि यह टीसीपी का उपयोग कर चलाने के लिए किसी भी तरह से आवश्यक नहीं है। कुछ प्रोटोकॉल नंगे इंटरनेट लेयर या नंगे लिंक लेयर पर भी चलते हैं, मुख्यतः दक्षता के प्रयोजनों के लिए, या क्योंकि ये प्रोटोकॉल टीसीपी या आईपी के अस्तित्व में आने से पहले भी आविष्कार किए गए थे। बेशक, ऐसा करते समय, आप ओएस नेटवर्किंग लाइब्रेरी की सादगी और व्यापक बग-चेकिंग से दूर रहते हैं।

अधिक जानकारी के लिए, OSI मॉडल, TCP और IP पर विकिपीडिया पृष्ठों की जाँच करें।


मुझे वह सब समझ में आ रहा है। तो मूल रूप से, एक बंदरगाह एक भौतिक चीज नहीं है? इसकी कुछ है कि क्रमादेशित है? कंप्यूटर पर पोर्ट कहाँ परिभाषित किया गया है? और फिर प्रोटोकॉल के लिए, वे कैसे बनाए जाते हैं? क्या वे प्रोग्राम किए गए हैं?
बॉब

नहीं, इस संदर्भ में एक पोर्ट भौतिक चीज नहीं है (जाहिर है कि एक यूएसबी पोर्ट भौतिक है लेकिन इस विषय से संबंधित नहीं है)। प्रोटोकॉल RFC ( en.wikipedia.org/wiki/Request_for_Comments ) के माध्यम से परिभाषित किए गए हैं और कोड - प्रोग्राम में लागू किए गए हैं।
पॉल

क्या यह कहना सही होगा कि टीसीपी एक प्रणाली प्रक्रिया है जो आईपी से आने वाले डेटा को संग्रहीत करने के लिए मेमोरी (या आईपी द्वारा पुनर्प्राप्त किए जाने वाले डेटा को संग्रहीत करने के लिए) को संग्रहीत करती है और यह मेमोरी 'पोर्ट' में विभाजित होती है। और यह कि अन्य एप्लिकेशन (प्रक्रियाएं) जैसे HTTP, टीसीपी को सूचित कर सकते हैं कि वे विशिष्ट बंदरगाहों (जैसे कि 80 और 443) को आरक्षित करना चाहते हैं। फिर यह टीसीपी का काम बन जाता है। 1. HTTP को उन मेमोरी पतों पर डेटा आउटगोइंग डेटा जोड़ने की अनुमति देता है, और 2. इन मैमोरी एड्रेस में आने वाले डेटा को जोड़ने पर HTTP को सूचित करता है?
ज़ैच स्मिथ

शायद बॉब प्रोटोकॉल पोर्ट और भौतिक स्विच पोर्ट के बीच भ्रमित था। प्रोटोकॉल पोर्ट भाग को कई लोगों द्वारा अच्छी तरह से उत्तर दिया गया था, हालांकि किसी भी स्रोत को याद नहीं किया गया। भौतिक बंदरगाहों के लिए, वे इनपुट इनपुट और आउटपुट स्थान हैं जहां केबल कनेक्ट करते हैं जो नेटवर्क डेटा ट्रांसफर की अनुमति देते हैं। इसमें इलेक्ट्रॉनिक सर्किट, फाइबर ऑप्टिक रिसीवर, लेजर और बफर शामिल हो सकते हैं। एल। पीटरसन 4 वें संस्करण।
नाशीम

3

यद्यपि यह प्रश्न पहले से ही उत्तर के रूप में चिह्नित किया गया है, मैं ओपी में पूछे गए कुछ अतिरिक्त प्रश्नों को संबोधित करना चाहता था।

क्या ये बंदरगाह भौतिक वस्तुएं हैं?

कोई भी पोर्ट भौतिक वस्तु नहीं हैं।

पोर्ट नंबर एक 16-बिट अहस्ताक्षरित पूर्णांक है, जिसका अर्थ है कि उपयोग के लिए उपलब्ध पोर्ट की सीमा 1 से 65535 तक है (पोर्ट नंबर 0 आरक्षित है और इसका उपयोग नहीं किया जा सकता है)। एक प्रक्रिया अपने इनपुट या आउटपुट चैनलों को इंटरनेट सॉकेट, एक प्रकार के फ़ाइल डिस्क्रिप्टर, एक ट्रांसपोर्ट प्रोटोकॉल, एक पोर्ट नंबर और एक आईपी पते के साथ जोड़ती है। इस प्रक्रिया को बाध्यकारी के रूप में जाना जाता है, और नेटवर्क के माध्यम से डेटा भेजने और प्राप्त करने में सक्षम बनाता है।

क्या वे मेरे कंप्यूटर के हिस्से में निर्मित हैं? क्या वे कुछ शारीरिक भी हैं? या कोड में लिखा है? यह कोड कहां है? ऑपरेटिंग सिस्टम? वास्तव में एक बंदरगाह क्या है?

ऑपरेटिंग सिस्टम के नेटवर्किंग सॉफ़्टवेयर में नेटवर्क पर सभी एप्लिकेशन पोर्ट से आउटगोइंग डेटा को ट्रांसमिट करने और पैकेट के आईपी पते और पोर्ट नंबर के मिलान से आने वाले नेटवर्क पैकेट को एक प्रक्रिया में भेजने का कार्य है।

केवल एक प्रक्रिया एक विशिष्ट आईपी पते और एक ही परिवहन प्रोटोकॉल का उपयोग करके पोर्ट संयोजन के लिए बाध्य हो सकती है। सामान्य अनुप्रयोग विफलताओं, जिसे कभी-कभी पोर्ट टकराव कहा जाता है, तब होते हैं जब कई प्रोग्राम एक ही प्रोटोकॉल का उपयोग करके एक ही आईपी पते पर एक ही पोर्ट नंबर से बांधने का प्रयास करते हैं।

उपरोक्त अनुच्छेद यह समझने की कुंजी है कि नेटवर्किंग में पोर्ट / प्रोटोकॉल का उपयोग क्यों किया जाता है। यदि हमारे पास प्रोटोकॉल निर्दिष्ट करने का कोई तरीका नहीं है, जो डेटा को एक सहमत एपन पोर्ट नंबर पर प्रसारित करता है - तो आप एक समय में 1 से अधिक काम नहीं कर पाएंगे (अपने ईमेल की जांच करें और वेब का उपयोग करें) क्योंकि आपका कंप्यूटर होगा आपके ईमेल क्लाइंट और आपके द्वारा ब्राउज़ की जा रही वेबसाइट के डेटा के बीच अंतर करने का कोई तरीका नहीं है।

कितने बंदरगाह हैं?

पोर्ट नंबरों को तीन तरीकों के आधार पर विभिन्न तरीकों से सौंपा गया है:

  1. अच्छी तरह से ज्ञात / सिस्टम पोर्ट (0-1023) - पोर्ट की इस श्रेणी का उपयोग सिस्टम प्रक्रियाओं द्वारा किया जाता है जो व्यापक रूप से उपयोग की जाने वाली प्रकार की नेटवर्क सेवाएं प्रदान करते हैं (HTTP / 80, HTTPS / 443, टेलनेट / 21, SSH / 22)

  2. पंजीकृत / उपयोगकर्ता पोर्ट (1024-49151) - 1024 से 49151 पोर्ट संख्या की सीमा पंजीकृत पोर्ट हैं। वे एक अनुरोध इकाई द्वारा आवेदन पर विशिष्ट सेवा के लिए IANA द्वारा असाइन किए गए हैं। (वेबमिन / 10000, एचटीटीपी प्रॉक्सी / 8080, रिमोट डेस्कटॉप प्रोटोकॉल / 3389, आदि)

  3. एपेहेरल / डायनेमिक / प्राइवेट पोर्ट (49152-65535) - रेंज 49152–65535 में डायनामिक या प्राइवेट पोर्ट होते हैं जिन्हें IANA के साथ पंजीकृत नहीं किया जा सकता है। इस सीमा का उपयोग कस्टम या अस्थायी उद्देश्यों के लिए और पंचांग बंदरगाहों के स्वचालित आवंटन के लिए किया जाता है।

क्या मैं बंदरगाहों की संख्या बढ़ा या घटा सकता हूं?

उपलब्ध पोर्ट की संख्या बढ़ाने में सक्षम होने के कारण, आप गणित के कारण 65535 से ऊपर पोर्ट को असाइन नहीं कर सकते हैं जो नेटवर्किंग को काम करने की अनुमति देता है (बाइनरी) - इसलिए इस प्रश्न का उत्तर नहीं है, आप उपलब्ध संख्या की कुल संख्या में वृद्धि नहीं कर सकते हैं। बंदरगाहों 65535 से ऊपर।

प्रोटोकॉल क्या हैं?

कंप्यूटर विज्ञान के भीतर, संचार प्रोटोकॉल कंप्यूटर के भीतर या उसके बीच संदेश विनिमय के लिए डिजिटल नियमों की एक प्रणाली है। जब संदेशों का आदान-प्रदान कंप्यूटर नेटवर्क के माध्यम से किया जाता है, तो नियम प्रणाली को नेटवर्क प्रोटोकॉल कहा जाता है। एक प्रोटोकॉल मूल रूप से निर्देशों / आदेशों / कॉल के सेट पर एक सहमति है जो दो नेटवर्क वाले डिवाइस दोनों पर संवाद कर सकते हैं। सोचें कि क्या हम प्रोटोकॉल और वेब सर्वर पर केवल वेब ब्राउजरों को बेतरतीब ढंग से भेजे गए डेटा पर सहमत नहीं हुए हैं कि ब्राउज़र को पता नहीं था कि क्या करना है? सौभाग्य से हमारे पास HTTP है और जो हर वेब ब्राउजर ने बनाया है वह सॉफ्टवेयर में बना है इसलिए यह किसी भी वेब सर्वर के साथ संवाद कर सकता है जो समान भाषा (HTTP) भी बोलता है।

मुझे लगता है कि वे कुछ प्रकार के कोड हैं .... क्या आप अपना प्रोटोकॉल बना सकते हैं? प्रोटोकॉल बनाने के लिए आप किस भाषा का उपयोग करते हैं?

हाँ आप अपने खुद के प्रोटोकॉल बना सकते हैं। प्रोटोकॉल विभिन्न प्रकार की भाषाओं में लिखे गए हैं। मैं कोई सॉफ्टवेयर डेवलपर नहीं हूं, लेकिन मुझे पूरा यकीन है कि जब तक आप जिस भी भाषा का उपयोग कर रहे हैं, उसमें पुस्तकालय हैं जो आपको सॉफ्टवेयर लिखने की अनुमति देते हैं जो टीसीपी / आईपी पर संवाद कर सकते हैं (अन्य प्रोटोकॉल सूट हैं, लेकिन टीसीपी / आईपी सबसे अधिक है व्यापक रूप से) आप एक प्रोटोकॉल लिखने के लिए उस भाषा का उपयोग कर सकते हैं। प्रोग्रामिंग भाषा 'C' प्रोटोकॉल लिखने के लिए सबसे अधिक इस्तेमाल की जाती है। यह इस तथ्य के कारण है कि 1970 के दशक में UNIX पर कई पहले नेटवर्क प्रोटोकॉल विकसित किए गए थे और सी उस भाषा के रूप में होता है जिसे UNIX में ही लिखा गया है।

विशिष्ट प्रोटोकॉल चलाने के लिए आपको एक विशिष्ट पोर्ट कैसे मिलता है?

यह ओएस के बीच काफी भिन्न है। उदाहरण के लिए, पोर्ट नंबर को बदलने के लिए दूरस्थ डेस्कटॉप प्रोटोकॉल विंडोज में चलता है, आपको रजिस्ट्री को संपादित करना होगा। लिनक्स पर, कई नेटवर्क सेवाओं को एक विशेष नेटवर्क सेवा के लिए सीधे .conf फ़ाइल से कॉन्फ़िगर किया जा सकता है।

आप एक नए प्रोटोकॉल को कैसे परिभाषित या आविष्कार करते हैं?

किसी ऐसे व्यक्ति के ब्लॉग पोस्ट के लिए https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ देखें जिन्होंने हाल ही में एक नया नेटवर्किंग प्रोटोकॉल विकसित किया है और उन्हें किस तरह की चीजें करनी हैं जिस तरह से साथ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.