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


928

यह मेरे संगठन के एक सॉफ्टवेयर इंजीनियर द्वारा उठाया गया प्रश्न था। मुझे व्यापक परिभाषा में दिलचस्पी है।


19
सिर्फ दोहराने के लिए, सॉकेट्स नेटवर्क IO तक सीमित नहीं हैं। वे विभिन्न अनुप्रयोगों के बीच डेटा स्ट्रीमिंग के लिए सभी प्रकार की स्थितियों में उपलब्ध हैं।
ओली

जवाबों:


976

सारांश

एक टीसीपी सॉकेट एक आईपी पॉइंट द्वारा परिभाषित एंडपॉइंट उदाहरण है और एक विशेष टीसीपी कनेक्शन या सुनने की स्थिति के संदर्भ में एक पोर्ट है।

एक पोर्ट एक वर्चुअलाइजेशन पहचानकर्ता है जो एक सेवा समापन बिंदु को परिभाषित करता है (जैसा कि एक सेवा उदाहरण के समापन बिंदु उर्फ ​​सत्र पहचानकर्ता से अलग है)।

एक टीसीपी सॉकेट एक कनेक्शन नहीं है , यह एक विशिष्ट कनेक्शन का समापन बिंदु है।

किसी सेवा समापन बिंदु के लिए समवर्ती कनेक्शन हो सकते हैं , क्योंकि किसी कनेक्शन को उसके स्थानीय और दूरस्थ दोनों समापन बिंदुओं द्वारा पहचाना जाता है , जिससे ट्रैफ़िक को विशिष्ट सेवा आवृत्ति पर भेजा जा सकता है।

किसी दिए गए पते / पोर्ट संयोजन के लिए केवल एक श्रोता सॉकेट हो सकता है

प्रदर्शनी

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

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

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

आईपी ​​पते और पोर्ट के संयोजन को कड़ाई से समापन बिंदु के रूप में जाना जाता है और कभी-कभी सॉकेट कहा जाता है। यह उपयोग मूल TCP विनिर्देश RFC793 के साथ होता है।

एक टीसीपी कनेक्शन दो एंडपॉइंट्स उर्फ सॉकेट्स द्वारा परिभाषित किया गया है ।

एक समापन बिंदु (सॉकेट) एक नेटवर्क पते और एक बंदरगाह पहचानकर्ता के संयोजन से परिभाषित किया गया है । ध्यान दें कि पता / पोर्ट पूरी तरह से एक सॉकेट (इस पर बाद में) की पहचान नहीं करता है ।

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

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

अधिकांश सी-व्युत्पन्न भाषाओं में, टीसीपी कनेक्शन सॉकेट क्लास के एक उदाहरण पर विधियों का उपयोग करके स्थापित और हेरफेर किए जाते हैं। हालाँकि यह अमूर्तता के उच्च स्तर पर संचालित करने के लिए आम है, आमतौर पर एक NetworkStream वर्ग का एक उदाहरण, यह आम तौर पर एक सॉकेट ऑब्जेक्ट के संदर्भ को उजागर करता है। कोडर के लिए यह सॉकेट ऑब्जेक्ट कनेक्शन को दर्शाता है क्योंकि सॉकेट ऑब्जेक्ट के तरीकों का उपयोग करके कनेक्शन बनाया और हेरफेर किया जाता है।

C # में, TCP कनेक्शन स्थापित करने के लिए (मौजूदा श्रोता के लिए) सबसे पहले आप एक TcpClient बनाते हैं । यदि आप TcpClient कंस्ट्रक्टर के लिए एक समापन बिंदु निर्दिष्ट नहीं करते हैं तो यह चूक का उपयोग करता है - एक तरीका या कोई अन्य स्थानीय समापन बिंदु परिभाषित किया गया है। फिर आप अपने द्वारा बनाए गए इंस्टेंस पर कनेक्ट विधि को लागू करते हैं । इस पद्धति के लिए अन्य समापन बिंदु का वर्णन करने वाले पैरामीटर की आवश्यकता होती है।

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

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

अन्य मामलों में भी स्पष्टता बढ़ाई जाएगी। IP पते और पोर्ट के संयोजन से एक सॉकेट की पहचान नहीं की जाती है:

[...] स्थानीय और विदेशी पतों वाले सभी चार मूल्यों का उपयोग करते हुए आने वाले सेगमेंट में आने वाले सेक्शंस को स्थानीय और विदेशी एड्रेस: ​​डेस्टिनेशन आईपी एड्रेस, डेस्टिनेशन पोर्ट नंबर, सोर्स आईपी एड्रेस और सोर्स पोर्ट नंबर। टीसीपी निर्धारित नहीं कर सकती है कि कौन सी प्रक्रिया केवल गंतव्य बंदरगाह को देखकर आने वाले सेगमेंट को प्राप्त करती है। इसके अलावा, [दिए गए पोर्ट नंबर] पर [विभिन्न] एंडपॉइंट्स में से केवल एक ही है जो आने वाले कनेक्शन अनुरोधों को प्राप्त करेगा, यह सुनने की स्थिति में एक है। (p255, TCP-IP इलस्ट्रेटेड वॉल्यूम 1 , डब्ल्यू। रिचर्ड स्टीवंस)

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

हाग्रवाल मुझ पर विश्वास नहीं करते (टिप्पणियां देखें) इसलिए यहां एक वास्तविक नमूना है। मैंने एक वेब ब्राउज़र को http://dilbert.com से जोड़ा और फिर चलाया netstat -an -p tcp। आउटपुट की अंतिम छह पंक्तियों में इस तथ्य के दो उदाहरण हैं कि पता और पोर्ट विशिष्ट रूप से सॉकेट की पहचान करने के लिए पर्याप्त नहीं हैं। 192.168.1.3 (मेरे कार्य केंद्र) और 54.252.94.236:80 (दूरस्थ HTTP सर्वर) के बीच दो अलग-अलग कनेक्शन हैं

  TCP    192.168.1.3:63240      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63241      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63242      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:63243      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:64161      65.54.225.168:443      ESTABLISHED

चूंकि एक सॉकेट एक कनेक्शन का समापन बिंदु है, इसलिए पते / पोर्ट संयोजन के साथ दो सॉकेट हैं और पते / पोर्ट संयोजन के 207.38.110.62:80साथ दो और हैं 54.252.94.236:80

मुझे लगता है कि "पहचान" शब्द के मेरे बहुत सावधानी से प्रयोग से हगरावल की गलतफहमी पैदा होती है। मेरा मतलब है "पूरी तरह से, स्पष्ट और विशिष्ट पहचान"। उपरोक्त नमूने में पता / पोर्ट संयोजन के साथ दो समापन बिंदु हैं 54.252.94.236:80। यदि आपके पास सभी पते और पोर्ट हैं, तो आपके पास इन सॉकेट को अलग-अलग बताने के लिए पर्याप्त जानकारी नहीं है। सॉकेट की पहचान करना पर्याप्त जानकारी नहीं है ।

परिशिष्ट

RFC793 के खंड 2.7 के अनुच्छेद दो कहते हैं

एक कनेक्शन छोरों पर सॉकेट की जोड़ी द्वारा पूरी तरह से निर्दिष्ट है। एक स्थानीय सॉकेट कई कनेक्शन में विभिन्न विदेशी सॉकेट में भाग ले सकता है।

सॉकेट की यह परिभाषा एक प्रोग्रामिंग दृष्टिकोण से सहायक नहीं है क्योंकि यह सॉकेट ऑब्जेक्ट के समान नहीं है , जो किसी विशेष कनेक्शन का समापन बिंदु है। एक प्रोग्रामर के लिए, और इस सवाल के अधिकांश दर्शक प्रोग्रामर हैं, यह एक महत्वपूर्ण कार्यात्मक अंतर है।

संदर्भ

  1. टीसीपी-आईपी इलस्ट्रेटेड वॉल्यूम 1 प्रोटोकॉल , डब्ल्यू रिचर्ड स्टीवंस, 1994 एडिसन वेस्ले

  2. RFC793 , सूचना विज्ञान संस्थान, DARPA के लिए दक्षिणी कैलिफोर्निया विश्वविद्यालय

  3. RFC147 , द डेफिनेशन ऑफ़ अ सॉकेट, जोएल एम। विनेट, लिंकन लेबोरेटरी


6
शायद, कीवर्ड सॉकेट और पोर्ट के लिए एक वास्तविक विश्व सादृश्य उन लोगों की मदद करेगा जो प्रश्न को वोट करते हैं। अभी भी एक महान व्याख्या!
रोहिवर्तमा

5
@rationalcoder - पूरा उत्तर पढ़ें। किसी चीज को परिभाषित करने और उसके द्वारा पहचाने जाने के बीच अंतर है। उदाहरण के लिए एक वर्ग के उदाहरणों को कक्षा द्वारा परिभाषित किया जाता है। वे आंशिक रूप से हैं, लेकिन पूरी तरह से इसकी पहचान नहीं की गई है।
पतरस ने

6
मैंने मतदान नहीं किया क्योंकि मैं इस कथन से असहमत हूं - " IP पते और पोर्ट के संयोजन से एक सॉकेट की पहचान नहीं की गई है: " .. पढ़ें टीसीपी आरएफसी - tools.ietf.org/html/rfc793 .. यह बहुत स्पष्ट है कि सॉकेट आईपी और पोर्ट का संयोजन है, अगर आप आईपी और पोर्ट जानते हैं तो आपने सॉकेट या एंडपॉइंट की पहचान की है, यदि आप सॉकेट की जोड़ी जानते हैं अर्थात क्लाइंट आईपी + पोर्ट और सर्वर आईपी + पोर्ट तो आपने एक अद्वितीय कनेक्शन की पहचान कर ली है ..
hagrawal

6
"उपरोक्त नमूने में 54.252.94.236:80 पते / पोर्ट संयोजन के साथ दो समापन बिंदु हैं। यदि आपके पास सभी पते और पोर्ट हैं, तो आपके पास इन सॉकेट को बताने के लिए पर्याप्त जानकारी नहीं है। यह पहचान करने के लिए पर्याप्त जानकारी नहीं है। सॉकेट। " वे समान सॉकेट नहीं हैं, लेकिन अलग-अलग कनेक्शन, दो कनेक्शनों के बीच आपके पास 3 सॉकेट, 2 स्थानीय और एक ही सर्वर सॉकेट से जुड़ा हुआ है; या वे वास्तव में दो अलग-अलग कुर्सियां ​​हैं? उन्हें अलग नहीं बताया जाएगा क्योंकि वे एक ही हैं, लेकिन कनेक्शन को बताने के लिए आपको अलग-अलग स्थानीय सॉकेट की आवश्यकता होगी।
एंड्रयू क्लविन

6
-1 आपका जवाब बस गलत है। आप: "एक टीसीपी सॉकेट है ... एक विशिष्ट कनेक्शन का समापन बिंदु ।" RFC 793 : "सॉकेट का उपयोग एक साथ कई कनेक्शनों में किया जा सकता है ।" मुझे यकीन नहीं है कि आप किन पुस्तकालयों का उपयोग कर रहे हैं, लेकिन जिन पुस्तकालयों में मैंने उपयोग किया है, सॉकेट ऑब्जेक्ट्स को विशिष्ट रूप से एक आईपी और पोर्ट द्वारा परिभाषित किया गया है और प्रत्येक दूरस्थ सॉकेट के लिए कनेक्शन ऑब्जेक्ट्स को जन्म दिया है।
ज़ज़

187

एक सॉकेट में तीन चीजें होती हैं:

  1. एक आईपी पता
  2. एक परिवहन प्रोटोकॉल
  3. एक पोर्ट नंबर

एक पोर्ट 1 और 65535 समावेशी के बीच एक संख्या है जो एक उपकरण में एक तार्किक गेट को दर्शाता है। क्लाइंट और सर्वर के बीच हर कनेक्शन के लिए एक यूनिक सॉकेट की आवश्यकता होती है।

उदाहरण के लिए:

  • 1030 एक बंदरगाह है।
  • (10.1.1.2, टीसीपी, पोर्ट 1030) एक सॉकेट है।

80
नंबर एक सॉकेट में पाँच चीजें होती हैं: {प्रोटोकॉल, स्थानीय पता, स्थानीय बंदरगाह, दूरस्थ पता, दूरस्थ बंदरगाह}।
user207421

19
@EJP नहीं, फिर से। अधिक जानकारी के लिए चयनित उत्तर देखें।
केहलान क्रुममे

2
@KorayTugay यह IP हैडर में है। आपको क्या लगता है कि TCP लेयर यह नहीं देख सकता है?
user207421

1
@ ईजेपी जैसा कि मैं ऊपर दिए गए सबसे अधिक वोट किए गए उत्तर में देख सकता हूं कि एक सॉकेट स्वयं कनेक्शन नहीं है, लेकिन यह एक कनेक्शन का अंतिम बिंदु है फिर कैसे आए इसमें स्थानीय और दूरस्थ दोनों पोर्ट और आईपी पते शामिल हो सकते हैं। एक सॉकेट कनेक्शन के केवल एक तरफ यानी स्थानीय पोर्ट और स्थानीय आईपी पते या रिमोट पोर्ट और रिमोट आईपी एक्ट्रेस का प्रतिनिधित्व करेगा। गलत होने पर मुझे सही करें।
RBT

7
@ ईजेपी स्टिल आरएफसी 793: "सॉकेट्स की एक जोड़ी विशिष्ट रूप से प्रत्येक कनेक्शन की पहचान करती है। अर्थात, सॉकेट एक साथ कई कनेक्शनों में उपयोग किया जा सकता है।" यदि एक सॉकेट में पहले से ही पाँच चीजें होती हैं, तो मेरे प्रशस्ति पत्र में "सॉकेट्स की एक जोड़ी" कैसे हो सकती है?
गाब 39

100

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

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

http://www.mairie-metz.fr:8080/ इस उदाहरण में, संख्या 8080 वेब सर्वर से कनेक्ट करने के लिए वेब ब्राउज़र द्वारा उपयोग किए जाने वाले पोर्ट नंबर को संदर्भित करता है। आम तौर पर, एक वेब साइट पोर्ट संख्या 80 का उपयोग करती है और इस संख्या को URL के साथ शामिल नहीं किया जाना चाहिए (हालांकि यह हो सकता है)।

आईपी ​​नेटवर्किंग में, पोर्ट नंबर सैद्धांतिक रूप से 0 से 65535 तक हो सकते हैं। सबसे लोकप्रिय नेटवर्क एप्लिकेशन, हालांकि, रेंज के निचले छोर पर पोर्ट नंबर का उपयोग करते हैं (जैसे HTTP के लिए 80)।

नोट: शब्द बंदरगाह नेटवर्क प्रौद्योगिकी के कई अन्य पहलुओं को भी संदर्भित करता है। एक पोर्ट धारावाहिक, समानांतर और USB पोर्ट जैसे परिधीय उपकरणों के लिए एक भौतिक कनेक्शन बिंदु को संदर्भित कर सकता है। शब्द बंदरगाह कुछ ईथरनेट कनेक्शन बिंदुओं को भी संदर्भित करता है, जैसे कि हब, स्विच या राउटर पर।

रेफरी http://compnetworking.about.com/od/basicnetworkingconcepts/l/bldef_port.htm

रेफरी http://compnetworking.about.com/od/itinformationtechnology/l/bldef_socket.htm


2
ओएसआई मॉडल पर परत 2 नोड्स के बीच एक कनेक्शन है, इसमें कनेक्टिंग प्रक्रियाओं का कोई तंत्र नहीं है। मुझे विश्वास नहीं होता कि आप OSI l2 में मौजूद सॉकेट पर विचार कर सकते हैं।
एंटोनियो हेली

18
एक सर्किट एक कनेक्शन है - एक सॉकेट एक समापन बिंदु है। एक कनेक्शन में 2 सॉकेट होते हैं।
मार्क ब्रैकेट सेप

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

84

कुछ उपमा के साथ

हालाँकि बहुत सारी तकनीकी चीजें पहले से ही सॉकेट्स के लिए ऊपर दी गई हैं ... मैं अपना जवाब जोड़ना चाहूंगा, बस अगर कोई व्यक्ति अभी भी आईपी, पोर्ट और सॉकेट्स के बीच के अंतर को महसूस नहीं कर सकता है।

सर्वर S पर विचार करें ,

और उस व्यक्ति S से व्यक्ति X, Y, Z को एक सेवा (चैट सेवा) कहने की आवश्यकता है

फिर

आईपी ​​एड्रेस बताता है -> कौन? क्या वह चैट सर्वर 'S' है जो X, Y, Z से संपर्क करना चाहता है

ठीक है, आपको "सर्वर कौन है" मिला

लेकिन मान लीजिए कि सर्वर 'S' अन्य लोगों को भी कुछ अन्य सेवाएं प्रदान कर रहा है, तो 'S' व्यक्ति A, B, C को भंडारण सेवाएं प्रदान करता है।

फिर

port बताता है ---> कौन सा सेवा आप (एक्स, वाई, जेड) की जरूरत है यानी चैट सेवा और न कि भंडारण सेवा

ठीक है .., आप यह जानने के लिए सर्वर बनाते हैं कि 'चैट सेवा' वही है जो आप चाहते हैं और भंडारण नहीं

परंतु

आप तीन हैं और सर्वर तीनों को अलग-अलग पहचान देना चाहता है

सॉकेट आता है

अब सॉकेट बताता है -> कौन सा? विशेष संबंध

यह कहना,

व्यक्ति X के लिए सॉकेट 1

व्यक्ति वाय के लिए सॉकेट 2

और व्यक्ति Z के लिए सॉकेट 3

मुझे आशा है कि यह किसी ऐसे व्यक्ति की मदद करता है जो अभी भी उलझन में था :)


तो X, Y, Z एक ही पोर्ट यानी एक ही सेवा से जुड़ेंगे, लेकिन सर्वर पर अलग-अलग सॉकेट हैं? इसलिए जब, कहते हैं, X सर्वर को कुछ पैकेट भेजता है, तो यह कहने वाला है: 'मुझे ढूंढो (प्रोटोकॉल, X का IP, X का पोर्ट, S का IP, S का पोर्ट) सॉकेट' और चैट ऐप पर भेजें। मुझे लगता है कि कुछ अनुप्रयोग-विशिष्ट वस्तुओं और सॉकेट वस्तुओं के बीच एक बंधन होना चाहिए? उदाहरण के लिए, जब मुझे सॉकेट -1 से कुछ डेटा मिलता है, तो मैं उसे एक उपयोगकर्ता संदेश के रूप में प्रदर्शित करना चाहता हूं, लेकिन ऐप को सॉकेट ए के संदेशों को जानना होगा।
मोनोलिथ

44

सबसे पहले, मुझे लगता है कि हमें ए से बी तक एक पैकेट प्राप्त करने के बारे में थोड़ी समझ के साथ शुरू करना चाहिए।

नेटवर्क के लिए एक सामान्य परिभाषा OSI मॉडल का उपयोग है जो उद्देश्य के अनुसार नेटवर्क को कई परतों में अलग करता है। कुछ महत्वपूर्ण हैं, जिन्हें हम यहां कवर करेंगे:

  • डेटा परत लिंक । यह परत एक नेटवर्क डिवाइस से दूसरे में डेटा के पैकेट प्राप्त करने के लिए जिम्मेदार है और इस परत के ठीक ऊपर है जो वास्तव में संचारण करता है। यह मैक पते के बारे में बात करता है और अपने मैक (हार्डवेयर) पते के आधार पर मेजबानों को खोजने का तरीका जानता है, लेकिन अधिक कुछ नहीं।
  • नेटवर्क परत परत है कि आप मशीनों और इस तरह के भौतिक उपकरणों के रूप में पदभार भौतिक सीमाओं, भर में डेटा के परिवहन के लिए अनुमति देता है। नेटवर्क परत को अनिवार्य रूप से एक अतिरिक्त पते पर आधारित तंत्र का समर्थन करना चाहिए जो किसी भी तरह भौतिक पते से संबंधित है; इंटरनेट प्रोटोकॉल (IPv4) दर्ज करें। एक आईपी एड्रेस आपके पैकेट को इंटरनेट पर ए से बी तक पहुंचा सकता है, लेकिन व्यक्तिगत हॉप्स को कैसे पार करना है, इसके बारे में कुछ भी नहीं जानता है। यह रूटिंग जानकारी के अनुसार ऊपर की परत द्वारा नियंत्रित किया जाता है।
  • परिवहन परत । यह परत A से B तक की जानकारी और उस व्यवहार पर किसी भी प्रतिबंध, जाँच या त्रुटियों को परिभाषित करने के लिए जिम्मेदार है। उदाहरण के लिए, टीसीपी एक पैकेट में अतिरिक्त जानकारी जोड़ता है ताकि पैकेट खो जाने पर कटौती करना संभव हो।

टीसीपी में अन्य बातों के अलावा, बंदरगाहों की अवधारणा शामिल है । ये एक ही आईपी पते पर प्रभावी रूप से अलग-अलग डेटा एंडपॉइंट हैं, जिनसे इंटरनेट सॉकेट ( AF_INET) बांध सकता है।

जैसा कि होता है, इसलिए यूडीपी , और अन्य परिवहन परत प्रोटोकॉल भी करता है। उन्हें तकनीकी रूप से पोर्ट की सुविधा की आवश्यकता नहीं है , लेकिन ये पोर्ट आउटगोइंग कनेक्शन प्राप्त करने के लिए एक ही कंप्यूटर का उपयोग करने के लिए ऊपर की परतों में कई अनुप्रयोगों के लिए एक रास्ता प्रदान करते हैं।

जो हमें एक टीसीपी या यूडीपी कनेक्शन की शारीरिक रचना के लिए लाता है। प्रत्येक में एक स्रोत बंदरगाह और पता, और एक लक्ष्य बंदरगाह और पता है। ऐसा इसलिए है कि किसी भी सत्र में, लक्ष्य एप्लिकेशन प्रतिक्रिया दे सकता है, साथ ही स्रोत से प्राप्त कर सकता है।

इसलिए बंदरगाह अनिवार्य रूप से एक ही पते पर कई समवर्ती कनेक्शनों को साझा करने की अनुमति देने का एक विनिर्देश-अनिवार्य तरीका है।

अब, हमें इस पर एक नज़र डालने की आवश्यकता है कि आप बाहरी दुनिया के लिए एप्लिकेशन के दृष्टिकोण से कैसे संवाद करते हैं। ऐसा करने के लिए, आपको अपने ऑपरेटिंग सिस्टम से विनम्रतापूर्वक पूछने की आवश्यकता है और चूंकि अधिकांश OS चीज़ों को करने के बर्कले सॉकेट्स के तरीके का समर्थन करते हैं, इसलिए हम देखते हैं कि हम इस तरह से एक आवेदन से बंदरगाहों को शामिल करने वाले सॉकेट बना सकते हैं:

int fd = socket(AF_INET, SOCK_STREAM, 0); // tcp socket
int fd = socket(AF_INET, SOCK_DGRAM, 0); // udp socket
// later we bind...

महान! इसलिए sockaddrसंरचनाओं में, हम अपना पोर्ट और बेम निर्दिष्ट करेंगे! काम हो गया! खैर, लगभग, को छोड़कर:

int fd = socket(AF_UNIX, SOCK_STREAM, 0);

यह भी संभव है। उरग, कि कार्यों में एक स्पैनर फेंका गया है!

ठीक है, वास्तव में यह नहीं है। हमें बस कुछ उपयुक्त परिभाषाएँ देनी होंगी:

  • एक इंटरनेट सॉकेट एक आईपी पते, एक प्रोटोकॉल और इसके संबंधित पोर्ट नंबर का संयोजन है जिस पर एक सेवा डेटा प्रदान कर सकती है। तो tcp port 80, stackoverflow.com एक इंटरनेट सॉकेट है।
  • एक यूनिक्स सॉकेट एक आईपीसी एंडपॉइंट है जिसे फ़ाइल सिस्टम में दर्शाया गया है, जैसे /var/run/database.sock
  • सॉकेट एपीआई एक आवेदन को सॉकेट में डेटा पढ़ने और लिखने में सक्षम होने का अनुरोध करने का एक तरीका है।

देखा! यह चीजों को ख़त्म करता है। तो हमारी योजना में तब,

  • पोर्ट एक संख्यात्मक पहचानकर्ता है, जो ट्रांसपोर्ट लेयर प्रोटोकॉल के हिस्से के रूप में, उस सेवा संख्या की पहचान करता है जिसे दिए गए अनुरोध पर प्रतिक्रिया देनी चाहिए।

तो वास्तव में एक पोर्ट इंटरनेट सॉकेट बनाने के लिए आवश्यकताओं का एक सबसेट है। दुर्भाग्य से, यह सिर्फ इतना होता है कि सॉकेट शब्द का अर्थ कई अलग-अलग विचारों पर लागू किया गया है। इसलिए मैं दिल से आपको सलाह देता हूं कि आप अपने अगले प्रोजेक्ट सॉकेट का नाम दें, बस भ्रम में जोड़ें;)


यही कारण है कि गोलियां पावरपॉइंट नहीं छोड़ती हैं और नहीं चलेगी; वे काम करते हैं!
अनुराग कालिया

Tcp-ip और नेटवर्क संचार के लिए बहुत अच्छा परिचय। शुरुआती, इसे पहले पढ़ें।
कॉलिन

32

एक सॉकेट = आईपी पता + एक बंदरगाह (संख्यात्मक पता)
एक साथ वे एक मशीन पर एक नेटवर्क कनेक्शन के लिए एक अंतिम बिंदु की पहचान करते हैं। (क्या मैंने सिर्फ नेटवर्क 101 को फ्लैंक किया था?)


7
मेरा मानना ​​है कि आपकी परिभाषा की तुलना में पोर्ट का व्यापक अर्थ है।
रिचर्ड डोरमैन

2
और सॉकेट्स केवल टीसीपी / आईपी स्टैक के अधीन नहीं हैं। सामान्य रूप से UNIX डोमेन सॉकेट या अंतर प्रक्रिया संचार सॉकेट देखें।
मथायस क्रुल

इस उत्तर के बारे में निश्चित नहीं है। आप किसी पोर्ट को असाइन किए बिना सॉकेट्स के माध्यम से किसी अन्य प्रक्रिया से संवाद करने के लिए HTTP का उपयोग कर सकते हैं।
सीएफ

31

आम तौर पर, आपको बहुत सैद्धांतिक मिलेगा लेकिन इन दो अवधारणाओं को अलग करने का सबसे आसान तरीका इस प्रकार है:

सेवा प्राप्त करने के लिए, आपको एक सेवा संख्या चाहिए। इस सर्विस नंबर को पोर्ट कहा जाता है। इतना ही आसान।

उदाहरण के लिए, एक सेवा के रूप में HTTP 80 पोर्ट पर चल रहा है।

अब, कई लोग सेवा का अनुरोध कर सकते हैं और क्लाइंट-सर्वर से एक कनेक्शन स्थापित किया गया है। बहुत सारे कनेक्शन होंगे। प्रत्येक कनेक्शन क्लाइंट का प्रतिनिधित्व करता है। प्रत्येक कनेक्शन को बनाए रखने के लिए, सर्वर अपने क्लाइंट को बनाए रखने के लिए प्रति कनेक्शन एक सॉकेट बनाता है।


क्या प्रत्येक सॉकेट के लिए स्वयं के पोर्ट की आवश्यकता होती है?
मंडेपपेपर

बहुत बढ़िया। पर्वत-ज्ञान प्रस्तुत करने का सबसे सरल तरीका।
आसिफ महमूद

5
मुझे यकीन नहीं है कि आपका बयान: "सर्वर क्लाइंट बनाए रखने के लिए प्रति कनेक्शन सॉकेट बनाता है" सही है।
ऋषि अग्रवाल

1
@RushiAgrawal तो मेरा सुझाव है कि आप इसे देख लें। विशेष रूप से, मनुष्य को स्वीकार करते
user207421

1
इसका मतलब यह है कि प्रत्येक सॉकेट के लिए जो सर्वर अपने क्लाइंट को बनाए रखने के लिए प्रति कनेक्शन बनाता है, उसी पोर्ट नंबर (जैसे HTTP कनेक्शन निरंतरता के लिए पोर्ट 80) हो सकता है, लेकिन क्लाइंट के अलग-अलग आईपी पते के साथ जो कनेक्शन के लिए अनुरोध भेजे जाते हैं। सही?
रंडिका विष्

25

ऐसा लगता है कि 2 पीसी के बीच कनेक्शन के साथ सॉकेट की बराबरी करने के लिए बहुत सारे उत्तर हैं..जो मुझे लगता है कि बिल्कुल गलत है। एक सॉकेट हमेशा 1 पीसी पर समापन बिंदु रहा है , जो जुड़ा हो सकता है या नहीं भी हो सकता है - निश्चित रूप से हम सभी ने कुछ समय पर श्रोता या यूडीपी सॉकेट * का उपयोग किया है। महत्वपूर्ण हिस्सा यह है कि यह पता योग्य और सक्रिय है। 1.1.1.1:1234 को एक संदेश भेजना काम करने की संभावना नहीं है, क्योंकि उस समापन बिंदु के लिए कोई सॉकेट परिभाषित नहीं है।

सॉकेट्स प्रोटोकॉल विशिष्ट हैं - इसलिए विशिष्टता का कार्यान्वयन जो कि टीसीपी / आईपी और यूडीपी / आईपी दोनों * (ipaddress: port) का उपयोग करता है, उदाहरण के लिए, IPX (नेटवर्क, नोड और ... ahem, सॉकेट - - से अलग है। सॉकेट सामान्य "सॉकेट" शब्द से है। IPX सॉकेट संख्या आईपी पोर्ट के बराबर है)। लेकिन, वे सभी एक अद्वितीय पते योग्य समापन बिंदु प्रदान करते हैं।

चूंकि आईपी प्रमुख प्रोटोकॉल बन गया है, एक पोर्ट (नेटवर्किंग शब्दों में) या तो यूडीपी या टीसीपी पोर्ट नंबर के साथ समान हो गया है - जो सॉकेट पते का एक हिस्सा है।

  • UDP कनेक्शन-कम है - जिसका अर्थ है कि 2 समापन बिंदुओं के बीच कोई वर्चुअल सर्किट कभी नहीं बनाया गया है। हालाँकि, हम अभी भी समापन बिंदु के रूप में यूडीपी सॉकेट का उल्लेख करते हैं। एपीआई फ़ंक्शंस यह स्पष्ट करते हैं कि दोनों बस अलग-अलग प्रकार के सॉकेट हैं - SOCK_DGRAMयूडीपी (बस एक संदेश भेजना) है और SOCK_STREAMटीसीपी (एक वर्चुअल सर्किट बनाना) है।

  • तकनीकी रूप से, IP हेडर IP पता रखता है, और IP के ऊपर प्रोटोकॉल (UDP या TCP) पोर्ट नंबर रखता है। इससे अन्य प्रोटोकॉल (उदाहरण के लिए ICMP जिसमें कोई पोर्ट संख्या नहीं है, लेकिन IP पता जानकारी है) होना संभव है।


25

संक्षिप्त संक्षिप्त उत्तर।

एक पोर्ट को होस्ट के भीतर एक आंतरिक पते के रूप में वर्णित किया जा सकता है जो किसी प्रोग्राम या प्रक्रिया की पहचान करता है।

सॉकेट को एक प्रोग्रामिंग इंटरफ़ेस के रूप में वर्णित किया जा सकता है जो प्रोग्राम को इंटरनेट या स्थानीय स्तर पर अन्य कार्यक्रमों या प्रक्रियाओं के साथ संवाद करने की अनुमति देता है।


3
पोर्ट विवरण में 'आंतरिक' शब्द मुझे 'गैर-सार्वजनिक' जैसा लगता है।
जोनास एन

तो क्या हम कह सकते हैं: पॉकेट पोर्ट के अंदर चलता है? या पोर्ट सॉकेट्स के अंदर चलता है?
गुच्चो Ca

@GuchoCa हम यह नहीं कह सकते कि या तो कुर्सियां ​​या बंदरगाह सभी पर चलते हैं, एक दूसरे के अंदर अकेले चलते हैं। अस्पष्ट तुम क्या पूछ रहे हो।
user207421

16

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


सबसे सामान्य उत्तर के लिए, "एक पोर्ट और एक होस्टनाम या नेटवर्क एडेप्टर लेकर और उन्हें एक में जोड़कर बनाया गया"। उदाहरण के लिए, एक यूनिक्स सॉकेट (कोड में) एक डेटा संरचना (या ऑब्जेक्ट) है जिसका उपयोग आप डेटा भेजने या प्राप्त करने के लिए कर सकते हैं।
JosiahYoder- निष्क्रिय को छोड़कर ..

14

ये बुनियादी नेटवर्किंग अवधारणाएं हैं इसलिए मैं उन्हें विवरणों को समझने के लिए एक आसान और व्यापक तरीके से समझाऊंगा।

  • एक सॉकेट एक टेलीफोन की तरह है (यानी संचार के लिए अंत उपकरण)
  • आईपी आपके टेलीफोन नंबर की तरह है (यानी आपके सॉकेट के लिए पता)
  • पोर्ट उस व्यक्ति की तरह है जिससे आप बात करना चाहते हैं (यानी आप उस पते से ऑर्डर करना चाहते हैं)
  • सॉकेट एक क्लाइंट या सर्वर सॉकेट हो सकता है (यानी किसी कंपनी में ग्राहक सहायता का टेलीफोन एक सर्वर है लेकिन आपके घर में एक टेलीफोन ज्यादातर ग्राहक है)

तो नेटवर्किंग में एक सॉकेट एक आभासी संचार उपकरण है जो एक जोड़ी (आईपी, पोर्ट) = (पता, सेवा) के लिए बाध्य है।

ध्यान दें:

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

आशा है कि यह आप पर संदेह करता है


इस सवाल के तहत सॉकेट्स / पोर्ट्स / आईपी एड्रेस की इन सभी समझ और उपमाओं को देखना दिलचस्प है। और मुझे यह जवाब पसंद है।
ब्लडमून

12

उत्कृष्ट मतदान के जवाबों को पढ़ने के बाद, मैंने पाया कि निम्न बिंदु को मेरे लिए जोर देने की आवश्यकता है, जो नेटवर्क प्रोग्रामिंग के लिए एक नवागंतुक है:

टीसीपी-आईपी कनेक्शन एक दिशा को जोड़ने वाले द्वि-दिशात्मक मार्ग हैं: एक अन्य पते के साथ पोर्ट संयोजन: पोर्ट संयोजन। इसलिए, जब भी आप अपने स्थानीय मशीन से किसी दूरस्थ सर्वर पर पोर्ट (www.google.com:80 कहते हैं) के लिए एक कनेक्शन खोलते हैं, तो आप सर्वर के साथ सर्वर को भेजने की अनुमति देने के लिए, कनेक्शन के साथ अपनी मशीन पर एक नया पोर्ट नंबर भी जोड़ रहे हैं। चीजें आपके पास, (जैसे 127.0.0.1:65234)। आपकी मशीन के कनेक्शन को देखने के लिए नेटस्टैट का उपयोग करना मददगार हो सकता है:

> netstat -nWp tcp (on OS X)
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    
tcp4       0      0  192.168.0.6.49871      17.172.232.57.5223     ESTABLISHED
...

12

सॉकेट पता एक IP पता और पोर्ट नंबर है

123.132.213.231         # IP address
               :1234    # port number
123.132.213.231:1234    # socket address

एक कनेक्शन तब होता है जब 2 सॉकेट एक साथ बंधे होते हैं।


दो सॉकेट को एक साथ बांधने जैसी कोई बात नहीं है। 'बाउंड' शब्द का मतलब बंदरगाहों के साथ कुछ और है।
user207421

10

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

उदाहरण के लिए, टीसीपी / आईपी सूट में:

{tcp, 193.44.234.3, 12345}

एक वार्तालाप दो प्रक्रियाओं के बीच संचार लिंक है, इस प्रकार दो के बीच एक एसोसिएशन का चित्रण है। एक संघ 5-ट्यूपल है जो पूरी तरह से दो प्रक्रियाओं को निर्दिष्ट करता है जिसमें एक कनेक्शन होता है: {प्रोटोकॉल, स्थानीय-पता, स्थानीय-प्रक्रिया, विदेशी-पता, विदेशी-प्रक्रिया}

उदाहरण के लिए, टीसीपी / आईपी सूट में:

{tcp, १ ९३.४४.२४.३, १५००, १ ९ ३.४४.३४.५, २१}

एक मान्य एसोसिएशन हो सकता है।

एक आधा एसोसिएशन या तो है: {प्रोटोकॉल, स्थानीय-पता, स्थानीय-प्रक्रिया}

या

{प्रोटोकॉल, विदेशी पता, विदेशी प्रक्रिया}

जो प्रत्येक कनेक्शन का आधा हिस्सा निर्दिष्ट करता है।

अर्ध-एसोसिएशन को सॉकेट या ट्रांसपोर्ट एड्रेस भी कहा जाता है। यही है, एक सॉकेट संचार के लिए एक अंतिम बिंदु है जिसे नेटवर्क में नाम और संबोधित किया जा सकता है। सॉकेट इंटरफ़ेस संचार प्रोटोकॉल के लिए कई एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) में से एक है। एक सामान्य संचार प्रोग्रामिंग इंटरफ़ेस होने के लिए डिज़ाइन किया गया था, यह पहली बार 4.2BSD UNIX सिस्टम द्वारा पेश किया गया था। हालांकि इसे मानकीकृत नहीं किया गया है, यह एक वास्तविक उद्योग मानक बन गया है।


यह उत्तर वही है जो मेरे लिए किया। मुझे लगता है कि यह इसलिए है क्योंकि किसी और ने शब्द संघ का उल्लेख नहीं किया है। अच्छे खर्च।
rationalcoder

आपके किसी भी उदाहरण में कोई प्रक्रिया संख्या नहीं है। आप जिस शब्द की तलाश कर रहे हैं, वह 'पोर्ट' है।
user207421

पहले पैरा पढ़ें .. यह स्पष्ट रूप से वहाँ उल्लेख किया है। मुझे सटीक वाक्यांश के हवाले से किसी भी अस्पष्टता के बारे में बताएं .. मुझे सुधारने में मददगार होगा।
कृष्णा

7

एक सॉकेट एक संचार समापन बिंदु है। एक सॉकेट सीधे टीसीपी / आईपी प्रोटोकॉल परिवार से संबंधित नहीं है, इसका उपयोग आपके सिस्टम द्वारा समर्थित किसी भी प्रोटोकॉल के साथ किया जा सकता है। सी सॉकेट एपीआई आपको पहले सिस्टम से एक खाली सॉकेट ऑब्जेक्ट प्राप्त करने की उम्मीद करता है जिसे आप या तो स्थानीय सॉकेट पते से जोड़ सकते हैं (कनेक्शन-कम प्रोटोकॉल के लिए आने वाले ट्रैफ़िक को सीधे प्राप्त करने के लिए या कनेक्शन-उन्मुख प्रोटोकॉल के लिए आने वाले कनेक्शन अनुरोधों को स्वीकार करने के लिए। या जिसे आप दूरस्थ सॉकेट पते (किसी भी तरह के प्रोटोकॉल के लिए) से जोड़ सकते हैं। आप दोनों को भी कर सकते हैं यदि आप दोनों को नियंत्रित करना चाहते हैं, तो स्थानीय सॉकेट एड्रेस एक सॉकेट से जुड़ा होता है और रिमोट सॉकेट एड्रेस एक सॉकेट से जुड़ा होता है। कनेक्शन-कम प्रोटोकॉल के लिए एक सॉकेट कनेक्ट करना और भी वैकल्पिक है लेकिन यदि आप ऐसा नहीं करते हैं, तो आप ' आपको प्रत्येक पैकेट के साथ गंतव्य का पता भी पास करना होगा जिसे आप सॉकेट के ऊपर भेजना चाहते हैं क्योंकि सॉकेट को कैसे पता चलेगा कि यह डेटा कहाँ भेजा जाना है? फायदा यह है कि आप अलग-अलग सॉकेट पते पर पैकेट भेजने के लिए एकल सॉकेट का उपयोग कर सकते हैं। एक बार जब आप अपने सॉकेट को कॉन्फ़िगर कर लेते हैं और शायद कनेक्ट हो जाते हैं, तो इसे द्वि-दिशात्मक संचार पाइप मानते हैं। आप इसका उपयोग कुछ डेस्टिनेशन पर डेटा पास करने के लिए कर सकते हैं और कुछ डेस्टिनेशन इसका उपयोग आपके पास डेटा वापस करने के लिए कर सकते हैं। एक सॉकेट के लिए आप जो लिखते हैं वह बाहर भेजा जाता है और जो प्राप्त हुआ है वह पढ़ने के लिए उपलब्ध है। आप इसका उपयोग कुछ डेस्टिनेशन पर डेटा पास करने के लिए कर सकते हैं और कुछ डेस्टिनेशन इसका उपयोग आपके पास डेटा वापस करने के लिए कर सकते हैं। एक सॉकेट के लिए आप जो लिखते हैं वह बाहर भेजा जाता है और जो प्राप्त हुआ है वह पढ़ने के लिए उपलब्ध है। आप इसका उपयोग कुछ डेस्टिनेशन पर डेटा पास करने के लिए कर सकते हैं और कुछ डेस्टिनेशन इसका उपयोग आपके पास डेटा वापस करने के लिए कर सकते हैं। एक सॉकेट के लिए आप जो लिखते हैं वह बाहर भेजा जाता है और जो प्राप्त हुआ है वह पढ़ने के लिए उपलब्ध है।

दूसरी ओर पोर्ट कुछ ऐसे हैं जो केवल टीसीपी / आईपी प्रोटोकॉल स्टैक के कुछ प्रोटोकॉल हैं। टीसीपी और यूडीपी पैकेट में पोर्ट होते हैं। एक पोर्ट सिर्फ एक साधारण संख्या है। सोर्स पोर्ट और डेस्टिनेशन पोर्ट का संयोजन दो मेजबानों के बीच एक संचार चैनल की पहचान करता है। उदाहरण के लिए आपके पास एक सर्वर हो सकता है जो दोनों एक साधारण HTTP सर्वर और एक साधारण एफ़टीपी सर्वर होगा। यदि अब कोई पैकेट उस सर्वर के पते के लिए आता है, तो यह कैसे पता चलेगा कि वह HTTP या FTP सर्वर का पैकेट है? खैर, यह पता चलेगा कि HTTP सर्वर 80 पोर्ट पर और FTP सर्वर 21 पोर्ट पर चलेगा, इसलिए यदि पैकेट एक गंतव्य पोर्ट 80 के साथ आता है, तो यह HTTP सर्वर के लिए है न कि एफ़टीपी सर्वर के लिए। इसके अलावा पैकेट में एक स्रोत पोर्ट होता है क्योंकि ऐसे स्रोत पोर्ट के बिना, एक सर्वर एक समय में केवल एक आईपी पते के लिए एक कनेक्शन हो सकता है। स्रोत पोर्ट किसी सर्वर के लिए अन्यथा समान कनेक्शन को अलग करना संभव बनाता है: वे सभी एक ही गंतव्य पोर्ट, उदाहरण के लिए पोर्ट 80, एक ही गंतव्य आईपी (सर्वर का आईपी), और एक ही स्रोत आईपी, जैसा कि वे सभी से आते हैं। एक ही क्लाइंट, लेकिन जैसा कि उनके पास एक अलग स्रोत पोर्ट है, सर्वर उन्हें एक दूसरे से अलग कर सकता है। और जब सर्वर वापस जवाब भेजता है, तो यह पोर्ट से अनुरोध करने के लिए आया था, इस तरह से ग्राहक एक ही सर्वर से प्राप्त विभिन्न उत्तरों को भी अलग कर सकता है।


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

1
मुझे लगता है कि RFC793 (मूल टीसीपी कल्पना) एक नेटवर्क पते और एक सॉकेट के रूप में एक पोर्ट के संयोजन को संदर्भित करता है, इसलिए मैं देख सकता हूं कि आपको यह कहां मिला है, लेकिन यह अभी भी गलत है कि सॉकेट आवश्यक रूप से दो समापन बिंदु द्वारा परिभाषित किया गया है।
पीटर वॉन

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

6

बंदरगाह सबसे आसान हिस्सा था, यह एक सॉकेट के लिए एक अद्वितीय पहचानकर्ता है। एक सॉकेट एक ऐसी प्रक्रिया है जिसका उपयोग कनेक्शन स्थापित करने और एक दूसरे के साथ संवाद करने के लिए किया जा सकता है। टाल जेफ के पास एक बेहतरीन टेलीफोन सादृश्य था, जो सही नहीं था, इसलिए मैंने इसे ठीक करने का फैसला किया:

  • आईपी ​​और पोर्ट ~ फोन नंबर
  • सॉकेट ~ फोन डिवाइस
  • कनेक्शन ~ फोन कॉल
  • कनेक्शन स्थापित करना ~ एक नंबर पर कॉल करना
  • प्रक्रियाएं, दूरस्थ अनुप्रयोग ~ लोग
  • संदेश ~ भाषण

अच्छा स्पष्टीकरण (विशेषकर जब आप टेलीफोन स्विचिंग इतिहास पर विचार करते हैं जो नेटवर्किंग शब्दावली की नींव का हिस्सा है ..)
o

netstatकुछ समय एक प्रदर्शन पर एक नज़र है । सुनने वाले सॉकेट से स्वीकार किए गए सभी सॉकेट समान पोर्ट साझा करते हैं। एक पोर्ट के लिए एर्गो एक विशिष्ट पहचानकर्ता नहीं है।
user207421

6

एक एप्लिकेशन में नेटवर्क (क्लाइंट-सर्वर जोड़ी) पर संचार करने वाली प्रक्रियाओं की जोड़ी होती है। ये प्रक्रिया सॉकेट नामक एक सॉफ्टवेयर इंटरफेस के माध्यम से और नेटवर्क से संदेश भेजती और प्राप्त करती है । "कंप्यूटर नेटवर्किंग: टॉप डाउन अप्रोच" पुस्तक में प्रस्तुत सादृश्य को ध्यान में रखते हुए। एक घर है जो दूसरे घर के साथ संवाद करना चाहता है। यहां, घर एक प्रक्रिया के अनुरूप है, और एक सॉकेट के लिए दरवाजा है। भेजने की प्रक्रिया मानती है कि दरवाजे के दूसरी तरफ एक बुनियादी ढांचा है जो डेटा को गंतव्य तक पहुंचाएगा। एक बार संदेश दूसरी तरफ आने के बाद, यह रिसीवर के दरवाजे (सॉकेट) से होकर घर (प्रक्रिया) में जाता है। उसी पुस्तक का यह चित्रण आपकी मदद कर सकता है:
यहां छवि विवरण दर्ज करें
सॉकेट्स परिवहन परत का हिस्सा हैं, जो अनुप्रयोगों को तार्किक संचार प्रदान करता है। इसका अर्थ है कि अनुप्रयोग के दृष्टिकोण से दोनों मेजबान एक दूसरे से सीधे जुड़े हुए हैं, भले ही उनके बीच कई राउटर और / या स्विच हैं। इस प्रकार एक सॉकेट स्वयं एक कनेक्शन नहीं है, यह कनेक्शन का अंतिम बिंदु है। ट्रांसपोर्ट लेयर प्रोटोकॉल केवल मेजबानों पर लागू किए जाते हैं, न कि मध्यवर्ती राउटर पर।
बंदरगाहोंएक मशीन को आंतरिक पता देने के साधन प्रदान करें। प्राथमिक प्रक्रिया यह कई प्रक्रियाओं को अन्य प्रक्रियाओं (उनके डेटा) के साथ हस्तक्षेप किए बिना नेटवर्क पर डेटा भेजने और प्राप्त करने की अनुमति देती है। सभी सॉकेट पोर्ट नंबर के साथ दिए गए हैं। जब कोई खंड होस्ट में आता है, तो परिवहन परत खंड के गंतव्य पोर्ट संख्या की जांच करती है। यह तब सेगमेंट को संबंधित सॉकेट के लिए आगे की ओर करता है। ट्रांसपोर्ट लेयर सेगमेंट में सही सॉकेट में डेटा पहुंचाने के इस काम को डे-मल्टीप्लेक्सिंग कहा जाता है । तब खंड का डेटा सॉकेट से जुड़ी प्रक्रिया में भेजा जाता है।


5

सॉकेट आपके सॉफ़्टवेयर में एक संरचना है। यह अधिक-या-कम फ़ाइल है; इसमें पढ़ने और लिखने जैसे ऑपरेशन हैं। यह एक भौतिक चीज नहीं है; यह आपके सॉफ़्टवेयर के लिए भौतिक चीज़ों को संदर्भित करने का एक तरीका है।

पोर्ट एक डिवाइस जैसी चीज है। प्रत्येक मेजबान के पास एक या एक से अधिक नेटवर्क हैं (वे भौतिक हैं); एक मेजबान के पास प्रत्येक नेटवर्क पर एक पता है। प्रत्येक पते में हजारों पोर्ट हो सकते हैं।

एक सॉकेट केवल एक पते पर पोर्ट का उपयोग कर सकता है। सॉकेट फ़ाइल सिस्टम I / O के लिए एक उपकरण आवंटित करने की तरह लगभग बंदरगाह आवंटित करता है। एक बार पोर्ट आवंटित हो जाने के बाद, कोई अन्य सॉकेट उस पोर्ट से कनेक्ट नहीं हो सकता है। सॉकेट बंद होने पर पोर्ट को मुक्त कर दिया जाएगा।

टीसीपी / आईपी शब्दावली पर एक नज़र डालें ।


3
सॉकेट का यह वर्णन बहुत ही शानदार है। सॉकेट टुपल्स की एक जोड़ी के बीच संबंध के बारे में है जहां एक टपल आईपी एडीडीआर और पोर्ट जोड़ी को संदर्भित करता है। इसके अतिरिक्त कई सॉकेट एक ही पोर्ट से जुड़ सकते हैं। आपको क्या लगता है कि एक वेब सर्वर पोर्ट 80 पर कई कनेक्शन लेता है? यह एक खराब जवाब है
लंबा जेफ़

1
माफ़ करना। एकाधिक सॉकेट पोर्ट 80 से कनेक्टेड नहीं हैं। एक सॉकेट जुड़ा हुआ है और अतिरिक्त सॉकेट को स्पॉन्स करता है जहां वास्तविक ट्रांसफर होता है। Opengroup.org/onlinepubs/009695399/functions/listen.html देखें ।
एस.लूट।

1
दरअसल, opengroup.org/onlinepubs/009695399/functions/connect.html पर विवरण बेहतर है। सहकर्मी सॉकेट एक कनेक्शन द्वारा दिया पोर्ट 80 पर नहीं है
S.Lott

1
यह पोस्ट कई विवरणों में गलत है और कई मामलों में भ्रामक है।
पीटर

@Peter किया गया: कौन सा विवरण? कौन से पहलू? मेरी गलतियों से सीखने की उम्मीद है।
S.Lott

5

से ओरेकल जावा ट्यूटोरियल :

एक सॉकेट नेटवर्क पर चलने वाले दो कार्यक्रमों के बीच दो-तरफ़ा संचार लिंक का एक समापन बिंदु है। एक सॉकेट एक पोर्ट नंबर से जुड़ा होता है ताकि टीसीपी लेयर उस एप्लिकेशन की पहचान कर सके जिसे डेटा भेजा जाना है।


यह केवल एक ट्यूटोरियल है, और निश्चित रूप से एक आदर्श संदर्भ नहीं है।
user207421

"एक सॉकेट एक दो-तरफ़ा संचार लिंक का एक समापन बिंदु है" क्या यह सॉकेट परिभाषा नहीं है, जावा ट्यूटोरियल नहीं है ??
प्रयागपाद

@prayagupd बेशक यह एक परिभाषा है, लेकिन यह एक ट्यूटोरियल से है, एक विनिर्देश नहीं।
user207421

4

पोर्ट और सॉकेट की तुलना बैंक शाखा से की जा सकती है।

"बैंक" की इमारत संख्या आईपी पते के अनुरूप है। एक बैंक को अलग-अलग सेक्शन मिले हैं जैसे:

  1. बचत खाता विभाग
  2. व्यक्तिगत ऋण विभाग
  3. गृह ऋण विभाग
  4. शिकायत विभाग

तो 1 (बचत खाता विभाग), 2 (व्यक्तिगत ऋण विभाग), 3 (गृह ऋण विभाग) और 4 (शिकायत विभाग) पोर्ट हैं।

अब हम कहते हैं कि आप एक बचत खाता खोलने के लिए जाते हैं, आप बैंक (आईपी पते) पर जाते हैं, फिर आप "बचत खाता विभाग" (पोर्ट नंबर 1) पर जाते हैं, फिर आप "बचत खाता विभाग" के तहत काम करने वाले कर्मचारियों में से एक से मिलते हैं। "। खाता खोलने के लिए हम उसे SAVINGACCOUNT_EMPLOYEE1 कहते हैं।

SAVINGACCOUNT_EMPLOYEE1 आपका सॉकेट डिस्क्रिप्टर है, इसलिए SAVINGACCOUNT_EMPLOYEEN से SAVINGACCOUNT_EMPLOYEE1 हो सकता है। ये सभी सॉकेट डिस्क्रिप्टर हैं।

इसी तरह, अन्य विभागों में उनके अधीन काम करने वाले कर्मचारी होंगे और वे सॉकेट के अनुरूप होते हैं।


3

सॉकेट एक डेटा I / O तंत्र है। एक पोर्ट एक संचार प्रोटोकॉल की एक संविदात्मक अवधारणा है । एक सॉकेट बिना पोर्ट के मौजूद हो सकता है। एक पोर्ट एक विशिष्ट सॉकेट को मिटा सकता है (उदाहरण के लिए यदि एक ही पोर्ट पर कई सॉकेट सक्रिय हैं, जिसे कुछ प्रोटोकॉल के लिए अनुमति दी जा सकती है)।

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


3

सापेक्ष टीसीपी / आईपी शब्दावली जो मुझे लगता है कि प्रश्न द्वारा निहित है। आम आदमी की शर्तों में:

PORT किसी विशेष ज़िप कोड में किसी विशेष घर के टेलीफोन नंबर की तरह होता है। शहर के ज़िप कोड को शहर के आईपी पते और उस शहर के सभी घरों के रूप में सोचा जा सकता है।

दूसरी ओर एक SOCKET अधिक है जैसे कि एक जोड़ी घरों के टेलीफोन के बीच एक स्थापित फोन कॉल एक दूसरे से बात कर रहा है। उन कॉल को एक ही शहर में घरों के बीच या अलग-अलग कस्बों में दो घरों में स्थापित किया जा सकता है। यह एक दूसरे से बात करने वाले फोन की जोड़ी के बीच अस्थायी रूप से स्थापित मार्ग है जो SOCKET है।


2
एक सॉकेट एक समापन बिंदु है। यह कनेक्शन (टीसीपी), या कनेक्शन (यूडीपी) की अनुपस्थिति में स्थापित होने से पहले मौजूद है। एर्गो यह स्वयं कनेक्शन नहीं है।
user207421

2

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

एक पोर्ट एक समापन बिंदु भेदभाव करनेवाला है। यह एक एंडपॉइंट को दूसरे से अलग करता है। नेटवर्किंग स्तर पर, यह एक एप्लिकेशन को दूसरे से अलग करता है, ताकि नेटवर्किंग स्टैक सूचना को उपयुक्त एप्लिकेशन तक पहुंचा सके।


2

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

मैंने इसे यहां पाया

यह उदाहरण आपको विली जैसी वेबसाइट से जुड़ने की प्रक्रिया से गुजरेगा। आप अपना वेब ब्राउज़र (जैसे मोज़िला फ़ायरफ़ॉक्स) खोलेंगे और एड्रेस बार में www.wiley.com टाइप करेंगे। आपका वेब ब्राउज़र अपने आईपी पते की पहचान करने के लिए www.wiley.com नाम देखने के लिए एक डोमेन नेम सिस्टम (DNS) सर्वर का उपयोग करता है। इस उदाहरण के लिए, पता 192.0.2.100 है।

फ़ायरफ़ॉक्स 192.0.2.100 पते पर और पोर्ट के लिए एक कनेक्शन बनाता है जहां एप्लिकेशन लेयर वेब सर्वर चल रहा है। फ़ायरफ़ॉक्स जानता है कि किस पोर्ट की उम्मीद है क्योंकि यह एक प्रसिद्ध पोर्ट है। एक वेब सर्वर के लिए प्रसिद्ध बंदरगाह टीसीपी पोर्ट 80 है।

गंतव्य सॉकेट जिसे फ़ायरफ़ॉक्स कनेक्ट करने का प्रयास करता है, सॉकेट के रूप में लिखा जाता है: पोर्ट, या इस उदाहरण में, 192.0.2.100:80। यह कनेक्ट का सर्वर पक्ष है, लेकिन सर्वर को यह जानने की आवश्यकता है कि आप मोज़िला फ़ायरफ़ॉक्स में वेब पेज को कहां भेजना चाहते हैं, इसलिए आपके पास कनेक्शन के क्लाइंट पक्ष के लिए एक सॉकेट भी है।

क्लाइंट साइड कनेक्शन आपके आईपी पते से बना है, जैसे कि 192.168.1.25, और एक बेतरतीब ढंग से चुना गया डायनेमिक पोर्ट नंबर। फ़ायरफ़ॉक्स से जुड़ा सॉकेट 192.168.1.25:49175 जैसा दिखता है। क्योंकि वेब सर्वर TCP पोर्ट 80 पर काम करते हैं, ये दोनों सॉकेट्स TCP सॉकेट हैं, जबकि यदि आप UDP पोर्ट पर काम करने वाले सर्वर से कनेक्ट कर रहे थे, तो सर्वर और क्लाइंट सॉकेट दोनों ही UDP सॉकेट होंगे।


बहुत घटिया किस्म का प्रशस्ति पत्र। तीसरा पैराग्राफ 'सॉकेट' शब्द का गलत इस्तेमाल करता है, क्योंकि इसका मतलब 'आईपी एड्रेस' होता है। यह नहीं है
user207421

2

सॉकेट एक गर्भपात है जो डेटा I / O के लिए उपयोगकर्ता अनुप्रयोगों को कर्नेल द्वारा प्रदान किया जाता है। एक सॉकेट प्रकार प्रोटोकॉल द्वारा इसकी हैंडलिंग, एक IPC संचार आदि द्वारा परिभाषित किया जाता है। इसलिए यदि कोई टीसीपी सॉकेट बनाता है तो वह सॉकेट में डेटा पढ़ने और साधारण तरीकों से डेटा लिखने और टीसीपी रूपांतरण जैसे निचले स्तर के प्रोटोकॉल से निपटने के लिए जोड़तोड़ कर सकता है और पैकेट को निचले स्तर के नेटवर्क प्रोटोकॉल में भेजने से कर्नेल में विशेष सॉकेट कार्यान्वयन होता है। लाभ यह है कि उपयोगकर्ता को प्रोटोकॉल विशिष्ट नाइट्रिगेट्स को संभालने के बारे में चिंता करने की ज़रूरत नहीं है और इसे सामान्य बफर की तरह सॉकेट में डेटा को पढ़ना और लिखना चाहिए। IPC के मामले में भी यही सच है, उपयोगकर्ता सिर्फ सॉकेट में डेटा को पढ़ता और लिखता है और बनाए गए सॉकेट के प्रकार के आधार पर सभी निचले स्तर के विवरणों को संभालता है।

आईपी ​​के साथ मिलकर पोर्ट सॉकेट को एक पता प्रदान करने जैसा है, हालांकि यह आवश्यक नहीं है, लेकिन यह नेटवर्क संचार में मदद करता है।


2

एक एकल पोर्ट में एक या एक से अधिक सॉकेट हो सकते हैं जो विभिन्न बाहरी आईपी के साथ कई विद्युत आउटलेट की तरह जुड़े होते हैं।

  TCP    192.168.100.2:9001     155.94.246.179:39255   ESTABLISHED     1312
  TCP    192.168.100.2:9001     171.25.193.9:61832     ESTABLISHED     1312
  TCP    192.168.100.2:9001     178.62.199.226:37912   ESTABLISHED     1312
  TCP    192.168.100.2:9001     188.193.64.150:40900   ESTABLISHED     1312
  TCP    192.168.100.2:9001     198.23.194.149:43970   ESTABLISHED     1312
  TCP    192.168.100.2:9001     198.49.73.11:38842     ESTABLISHED     1312

2

सॉकेट नेटवर्किंग समापन बिंदु का SW अमूर्त है, जिसका उपयोग अनुप्रयोग के लिए इंटरफ़ेस के रूप में किया जाता है। जावा में, सी # यह ऑब्जेक्ट द्वारा दर्शाया गया है, लिनक्स में, यूनिक्स यह एक फाइल है।

पोर्ट एक सॉकेट की एक संपत्ति है जिसे आपने निर्दिष्ट किया है यदि आप संचार स्थापित करना चाहते हैं। एक सॉकेट से पैकेट प्राप्त करने के लिए आपको इसे विशिष्ट स्थानीय पोर्ट और NIC (स्थानीय IP पते के साथ) या सभी NIC (INADDR_ANY को बाइंड कॉल में निर्दिष्ट किया गया है) से बाँधना होगा। पैकेट भेजने के लिए, आपको रिमोट सॉकेट के पोर्ट और आईपी को निर्दिष्ट करना होगा।


1

सॉकेट मूल रूप से नेटवर्क संचार के लिए एक समापन बिंदु है, जिसमें कम से कम एक आईपी-पता और एक पोर्ट होता है। जावा / सी # में एक सॉकेट एक दो तरफ़ा कनेक्शन के एक तरफ का उच्च स्तर का कार्यान्वयन है।

इसके अलावा, जावा प्रलेखन में एक परिभाषा ।


जावा ट्यूरोरियल में, आपका मतलब है।
user207421

1

बंदरगाह:

एक पोर्ट धारावाहिक, समानांतर और USB पोर्ट जैसे परिधीय उपकरणों के लिए एक भौतिक कनेक्शन बिंदु को संदर्भित कर सकता है। शब्द बंदरगाह कुछ ईथरनेट कनेक्शन बिंदुओं को भी संदर्भित करता है, जो हब, स्विच, या राउटर के समान हैं।

सॉकेट:

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


एक टीसीपी या यूडीपी पोर्ट भौतिक या ईथरनेट कनेक्शन बिंदुओं में से किसी को भी संदर्भित नहीं करता है। आपने प्रश्न का उत्तर नहीं दिया है।
user207421

1

एक पोर्ट IP नेटवर्क प्रोटोकॉल के लिए TCP और UDP ट्रांसपोर्ट में एक संचार समापन बिंदु को दर्शाता है। सॉकेट एक सॉफ़्टवेयर एब्स्ट्रेक्शन है जो आमतौर पर इन प्रोटोकॉल (सॉकेट एपीआई) के कार्यान्वयन में उपयोग किया जाता है। एक वैकल्पिक कार्यान्वयन XTI / TLI API है।

यह सभी देखें:

स्टीवंस, डब्ल्यूआर 1998, यूनिक्स नेटवर्क प्रोग्रामिंग: नेटवर्किंग एपीआई: सॉकेट्स और एक्सटीआई; खंड 1, अप्रेंटिस हॉल।
स्टीवंस, डब्ल्यूआर, 1994, टीसीपी / आईपी इलस्ट्रेटेड, वॉल्यूम 1: प्रोटोकॉल, एडिसन-वेस्ले।

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