2009-04-23 18 views
7

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

क्या आप उपरोक्त रेखा को समझा सकते हैं? यह यूनिक्स डोमेन में एक सॉकेट के बारे में है।

धन्यवाद!

उत्तर

12

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

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

डेटा भेजने के अलावा, प्रक्रिया sendmsg() और recvmsg() सिस्टम कॉल का उपयोग कर यूनिक्स डोमेन सॉकेट कनेक्शन में फ़ाइल डिस्क्रिप्टर भेज सकती है।

+0

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

+1

@ माविया - यह सही है। उदाहरण के लिए, आप अपने DISPLAY पर्यावरण चर को ": 0.0" या टीसीपी/आईपी सॉकेट पर "लोकलहोस्ट: 0.0" पर सेट करके यूनिक्स डोमेन सॉकेट पर स्थानीय एक्स विंडो सर्वर से बात कर सकते हैं। –

+0

विभिन्न होस्टों के बीच संवाद करने के लिए आईपी सॉकेट के लिए AF_INET देखें। – user39113

4

यूनिक्स डोमेन सॉकेट के अंत बिंदु फ़ाइल सिस्टम (मेजबान/बंदरगाह के बजाए) में फ़ाइलों द्वारा दर्शाए जाते हैं।

हालांकि प्रक्रियाओं के बीच संचार स्थानीय प्रणाली के भीतर किया जाता है और नतीजतन एक खोजने योग्य फ़ाइल कहीं भी संग्रहीत नहीं होती है।

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

+0

/* एसीएल लागू किया जा सकता है - यदि आप अंत-बिंदु नहीं खोल सकते हैं तो आप कनेक्ट नहीं कर सकते हैं। */ कृपया अपनी उपर्युक्त पंक्तियों को समझाएं। – mawia

+1

इसका मतलब है कि (उदाहरण के लिए) यदि यूनिक्स फ़ाइल नाम chmod 0700 है तो केवल फ़ाइल (या रूट) का मालिक सॉकेट खोल सकता है। इस प्रकार सॉकेट को भी खोला जा सकता है इससे पहले सुरक्षा का एक अतिरिक्त स्तर लागू किया जाता है। – Alnitak

+0

धन्यवाद Alnitak !! – mawia

4

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

संचार कर्नेल स्तर पर होता है, और आप केवल उसी कर्नेल में बैठे प्रक्रियाओं के बीच डेटा स्थानांतरित कर सकते हैं।

+0

मेरी इच्छा है कि एनएफएस के पास उनको प्रॉक्सी करने का विकल्प होगा। मुझे नेटफिल्टर (डिफ़ॉल्ट अनुमति) से अधिक सुविधाजनक माउंट अनुमतियां (डिफ़ॉल्ट अस्वीकार) मिलती है। – Tobu

संबंधित मुद्दे