लोकप्रिय टीसीपी का उपयोग करने वाली सेवाओं के पास यूडीपी के साथ-साथ / आदि / सेवाओं में टीसीपी प्रविष्टियां क्यों हैं?


22

मैं गो के साथ नेटवर्क प्रोग्रामिंग पर एक किताब पढ़ रहा हूं। अध्यायों में से एक / etc / सेवाओं की फ़ाइल से संबंधित है। इस फ़ाइल की खोज करते समय मैंने जो कुछ देखा, वह यह है कि HTTP और SSH जैसी कुछ लोकप्रिय प्रविष्टियाँ, दोनों ट्रांसपोर्ट लेयर पर TCP का उपयोग करती हैं, UDP के लिए दूसरी प्रविष्टि है। उदाहरण के लिए Ubuntu 14.04:

ubuntu@vm1:~$ grep ssh /etc/services  
ssh             22/tcp         # SSH Remote Login Protocol 
ssh             22/udp

ubuntu@vm1:~$ grep http /etc/services  
http            80/tcp          www             # WorldWideWeb HTTP            
http            80/udp                          # HyperText Transfer Protocol

किसी को भी पता है कि इन दो प्रविष्टियों क्यों है? मेरा मानना ​​है कि SSH या HTTP कभी भी UDP ( SSH के लिए इस प्रश्न की पुष्टि ) का उपयोग नहीं करते हैं ।


7
22/udp2016 में डेबियन में हटा दिया गया था। IANA अभी भी 22 / udp को सूचीबद्ध करता है और अधिकांश प्रोटोकॉल के लिए udp और tcp दोनों को सूचीबद्ध करता है जो केवल उनमें से किसी एक पर लागू होते हैं। क्या यह हो सकता है कि इसका मतलब 22 ssh के लिए आरक्षित है यदि कोई व्यक्ति किसी दिन udp पर ssh लागू करना चाहता है?
स्टीफन चेज़लस

जवाबों:


29

असल में, यह क्योंकि इस तरह पीछे से जा चुकी थीं जब पोर्ट संख्या तक लगभग 2011 उदाहरण के लिए देखें, के माध्यम से निर्धारित किये जाने से शुरू कर दिया है §7.1 "पिछले सिद्धांतों" के आरएफसी 6335 :

टीसीपी और यूडीपी बंदरगाहों को एक साथ सौंपा गया था जब या तो अनुरोध किया गया था

यह संभव है कि वे किसी दिन आवंटित किए जाएंगे, बेशक, 1023 बंदरगाहों के रूप में और नीचे "सिस्टम पोर्ट" हैं, विशेष रूप से अधिकांश ऑपरेटिंग सिस्टम द्वारा इलाज किया जाता है, और उस सीमा के अधिकांश को वर्तमान में सौंपा गया है।

और, वैसे, HTTP / 3 UDP पर चलता है। हालांकि यह किसी भी यूडीपी पोर्ट का उपयोग कर सकता है, न कि केवल 80/443 पर। तो वास्तव में वे अभी भी अप्रयुक्त हैं।

जहां तक ​​डेबियन का संबंध है, इसका /etc/servicesपहले से ही 1.0 में 22 / udp था (1996 की चर्चा)

हालाँकि 2016 में इसे इस कमेटी में हटा दिया गया था , पहले netbaseपैकेज के संस्करण 5.4 में जारी किया गया था ।

लेखन के रूप में, डेबियन (बस्टर) का नवीनतम स्थिर संस्करण 5.6 है । और नवीनतम उबंटू एलटीएस (18.04, बायोनिक) नेटबेस पैकेज डेबियन नेटबेस 5.4 पर आधारित है और आप देख सकते हैं कि इसके चैंज भी udp / 22 को हटाने का उल्लेख करते हैं


4
@SergiyKolodyazhnyy मुझे नहीं लगता, क्योंकि यह अभ्यास फायरवॉल से पहले होता है।
derobert

3
@TobySpeight यह सिर्फ लिनक्स नहीं है, यह प्रासंगिक मानकों का हिस्सा है। उदाहरण के लिए, उस RFC के §6 देखें। हालाँकि, आईएएनए उच्च बंदरगाहों को भी पंजीकृत करता है, वे एक अलग वर्गीकरण हैं (और व्यवहार में यह बात मायने रखती है कि कैसे ओएस, न केवल लिनक्स, इलाज करें)। मैं स्पष्ट करूँगा कि थोड़ा। इसके अलावा, 0 एक वैध पोर्ट नहीं है। इसका उपयोग सॉकेट एपीआई द्वारा वाइल्डकार्ड के रूप में किया जाता है (कर्नेल को आपके लिए एक पोर्ट चुनने के लिए)।
derobert

2
"मैं एक वैध पोर्ट नहीं है" संदिग्ध है। यह निश्चित रूप से हमारे ओएस पर एक प्रयोग करने योग्य बंदरगाह नहीं है (यही कारण है कि मैंने इसे विशेष रूप से बाहर बुलाया है, और क्यों यह वर्तमान में आरक्षित है, और कुछ भी सौंपा नहीं जाने की संभावना है), लेकिन यह प्रोटोकॉल स्तर पर विशेष नहीं है।
टोबी स्पाइट

1
@derobert: आपका तर्क है कि यूनिक्स मशीनों पर पोर्ट 0 अनुपयोगी है क्योंकि पोर्ट 0 का अर्थ है "फ्री पोर्ट चुनें"। मैं कह रहा हूं कि तर्क गलत है। निष्कर्ष, आधार से तार्किक रूप से अनुसरण नहीं करता है।
MSalters

3
हालांकि यह किसी भी यूडीपी पोर्ट का उपयोग कर सकता है, न कि केवल 80/443 पर जो कि किसी भी प्रोटोकॉल टीसीपी / यूडीपी प्रोटोकॉल के लिए अनिवार्य रूप से सच है, ये सिर्फ प्रत्येक के साथ जुड़े डिफ़ॉल्ट पोर्ट हैं। टीसीपी और यूडीपी का उपयोग करने वाले अधिकांश एप्लिकेशन गैर-डिफ़ॉल्ट पोर्ट निर्दिष्ट करने का एक तरीका प्रदान नहीं करते हैं, लेकिन HTTP उन्हें URL में निर्दिष्ट करने की अनुमति देता है, इसलिए पोर्ट को बदलना अधिक संभव है।
बामर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.