नेटवर्क सॉकेट

एक नेटवर्क सॉकेट एक संगणक संजाल  के नोड (नेटवर्किंग) के भीतर एक सॉफ्टवेयर संरचना है जो पूरे नेटवर्क में डेटा भेजने और प्राप्त करने के लिए एक समापन बिंदु के रूप में कार्य करता है। सॉकेट की संरचना और गुणों को नेटवर्किंग आर्किटेक्चर के लिए एक अप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई) द्वारा परिभाषित किया गया है। सॉकेट केवल नोड में चल रहे किसी एप्लिकेशन की प्रक्रिया (कंप्यूटिंग) के जीवनकाल के दौरान बनाए जाते हैं।

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

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

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

नेटवर्क प्रोटोकॉल स्टैक के लिए एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (एपीआई) एक एप्लिकेशन द्वारा बनाए गए प्रत्येक सॉकेट के लिए एक हैंडल (कंप्यूटिंग) बनाता है, जिसे आमतौर पर सॉकेट डिस्क्रिप्टर कहा जाता है। यूनिक्स जैसे ऑपरेटिंग सिस्टम में, यह डिस्क्रिप्टर एक प्रकार का फाइल डिस्क्रिप्टर है। यह संचार चैनल पर प्रत्येक पढ़ने और लिखने के संचालन के उपयोग के लिए आवेदन प्रक्रिया द्वारा संग्रहीत किया जाता है।

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

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

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

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

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

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

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

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

परिभाषा
सॉकेट (आंतरिक प्रतिनिधित्व), सॉकेट डिस्क्रिप्टर (अमूर्त पहचानकर्ता), और सॉकेट एड्रेस (सार्वजनिक पता) के बीच भेद सूक्ष्म हैं, और ये हमेशा दैनिक उपयोग में अलग नहीं होते हैं। इसके अलावा, सॉकेट की विशिष्ट परिभाषाएँ लेखकों के बीच भिन्न होती हैं। IETF टिप्पणियों के लिए अनुरोध, इंटरनेट मानक ्स, कई पाठ्यपुस्तकों में, साथ ही साथ इस लेख में, सॉकेट शब्द एक इकाई को संदर्भित करता है जो विशिष्ट रूप से सॉकेट नंबर द्वारा पहचाना जाता है। अन्य पाठ्यपुस्तकों में, सॉकेट शब्द एक स्थानीय सॉकेट एड्रेस को संदर्भित करता है, यानी आईपी एड्रेस और पोर्ट नंबर का संयोजन। RFC 147 में दी गई सॉकेट की मूल परिभाषा में, जैसा कि 1971 में ARPANET से संबंधित था, सॉकेट को 32 बिट संख्या के रूप में निर्दिष्ट किया गया है, यहां तक ​​​​कि सॉकेट्स प्राप्त करने वाले सॉकेट्स की पहचान करते हैं और विषम सॉकेट्स भेजने वाले सॉकेट्स की पहचान करते हैं। हालाँकि, आज सॉकेट संचार द्विदिश हैं। ऑपरेटिंग सिस्टम के भीतर और सॉकेट बनाने वाले एप्लिकेशन में, सॉकेट को एक अद्वितीय पूर्णांक मान द्वारा संदर्भित किया जाता है जिसे सॉकेट डिस्क्रिप्टर कहा जाता है।

उपकरण
यूनिक्स जैसे ऑपरेटिंग सिस्टम और माइक्रोसॉफ़्ट विंडोज़  पर, कमांड-लाइन टूल्स netstat या iproute2 स्थापित सॉकेट और संबंधित जानकारी को सूचीबद्ध करने के लिए उपयोग किया जाता है।

उदाहरण
बर्कले सॉकेट इंटरफ़ेस के अनुसार तैयार किया गया यह उदाहरण, स्ट्रिंग हैलो, वर्ल्ड भेजता है! 1.2.3.4 पते के साथ होस्ट के 80 को पोर्ट करने के लिए प्रसारण नियंत्रण प्रोटोकॉल  के माध्यम से। यह एक सॉकेट (गेटसॉकेट) के निर्माण को दिखाता है, इसे रिमोट होस्ट से जोड़ता है, स्ट्रिंग भेजता है, और अंत में सॉकेट को बंद करता है:

 सॉकेट mysocket = getSocket (प्रकार = टीसीपी) कनेक्ट करें (mysocket, पता = 1.2.3.4, पोर्ट = 80) भेजें (mysocket, हैलो, दुनिया!) बंद (mysocket) 

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

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

रॉ सॉकेट
 * बिना किसी प्रोटोकॉल-विशिष्ट परिवहन परत स्वरूपण के सीधे आईपी पैकेट भेजने और प्राप्त करने की अनुमति दें। अन्य प्रकार के सॉकेट के साथ, पेलोड (कंप्यूटिंग) स्वचालित रूप से चुने गए ट्रांसपोर्ट लेयर प्रोटोकॉल (जैसे टीसीपी, यूडीपी) के अनुसार एनकैप्सुलेशन (नेटवर्किंग) होता है, और सॉकेट उपयोगकर्ता प्रोटोकॉल हैडर (कंप्यूटिंग)  के अस्तित्व से अनजान होता है जो इसके साथ प्रसारित होता है पेलोड। कच्चे सॉकेट से पढ़ते समय, हेडर आमतौर पर शामिल होते हैं। रॉ सॉकेट से पैकेट ट्रांसमिट करते समय, हेडर का स्वत: जोड़ वैकल्पिक होता है।
 * अधिकांश सॉकेट एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई), उदाहरण के लिए, जो बर्कले सॉकेट पर आधारित हैं, कच्चे सॉकेट का समर्थन करते हैं। Windows XP को 2001 में Winsock इंटरफ़ेस में कच्चे सॉकेट समर्थन के साथ जारी किया गया था, लेकिन तीन साल बाद, Microsoft ने सुरक्षा चिंताओं के कारण Winsock के कच्चे सॉकेट समर्थन को सीमित कर दिया।
 * Nmap जैसे सुरक्षा से संबंधित अनुप्रयोगों में कच्चे सॉकेट का उपयोग किया जाता है। कच्चे सॉकेट के लिए एक उपयोग मामला उपयोगकर्ता स्थान में नए ट्रांसपोर्ट-लेयर प्रोटोकॉल का कार्यान्वयन है। कच्चे सॉकेट आमतौर पर नेटवर्क उपकरण में उपलब्ध होते हैं, और इंटरनेट समूह प्रबंधन प्रोटोकॉल  (IGMP) और पहले सबसे छोटा रास्ता खोलो (OSPF) जैसे रूटिंग प्रोटोकॉल के लिए उपयोग किए जाते हैं, और  इंटरनेट नियंत्रण संदेश प्रोटोकॉल  (ICMP) में, अन्य बातों के अलावा, द्वारा उपयोग किया जाता है। पिंग उपयोगिता।

अन्य सॉकेट प्रकार अन्य ट्रांसपोर्ट प्रोटोकॉल पर लागू होते हैं, जैसे सिस्टम नेटवर्क आर्किटेक्चर और आंतरिक अंतर-प्रक्रिया संचार के लिए यूनिक्स डोमेन सॉकेट।

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

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

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

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

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

इतिहास
सॉकेट शब्द 1971 में RFC 147 के प्रकाशन की तारीख है, जब इसका उपयोग ARPANET में किया गया था। सॉकेट्स के अधिकांश आधुनिक कार्यान्वयन बर्कले सॉकेट्स (1983), और अन्य स्टैक्स जैसे विंसॉक (1991) पर आधारित हैं। बर्कले सॉफ्टवेयर वितरण  (बीएसडी) में बर्कले सॉकेट्स एपीआई, एपीआई के रूप में 4.2बीएसडी यूनिक्स ऑपरेटिंग सिस्टम के साथ उत्पन्न हुआ। केवल 1989 में, हालांकि, कैलिफोर्निया विश्वविद्यालय, बर्कले एटी एंड टी के कॉपीराइट-संरक्षित यूनिक्स की लाइसेंसिंग बाधाओं से मुक्त अपने ऑपरेटिंग सिस्टम और नेटवर्किंग लाइब्रेरी के संस्करण जारी कर सका।

सी में। 1987, एटी एंड टी ने यूनिक्स प्रणाली वी ी रिलीज 3 (एसवीआर3) में स्ट्रीम (नेटवर्किंग एपीआई) आधारित  ट्रांसपोर्ट लेयर इंटरफ़ेस  (टीएलआई) की शुरुआत की। और रिलीज़ 4 (SVR4) में जारी रहा। अन्य शुरुआती कार्यान्वयन के लिए लिखा गया था टॉप -20, एमवीएस, वीएम (ऑपरेटिंग सिस्टम), आईबीएम पीसी डॉस | आईबीएम-डॉस (पीसीआईपी).

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

कच्चे सॉकेट आमतौर पर नेटवर्क उपकरण में उपलब्ध होते हैं और IGRP और OSPF जैसे रूटिंग प्रोटोकॉल और इंटरनेट कंट्रोल मैसेज प्रोटोकॉल (ICMP) के लिए उपयोग किए जाते हैं।

यह भी देखें

 * टीसीपी और यूडीपी पोर्ट नंबरों की सूची
 * अव्यवस्थित यातायात
 * वेबसॉकेट

बाहरी संबंध

 * How sockets work - IBM documentation
 * Server Programming with TCP/IP Sockets
 * Beej's Guide to Network Programming
 * Java Tutorials: Networking basics
 * Net::RawIP; module for Perl applications. Created by Sergey Kolychev.
 * SOCK_RAW Demystified: article describing inner workings of Raw Sockets
 * C language examples of Linux raw sockets for IPv4 and IPv6 - David Buchan's C language examples of IPv4 and IPv6 raw sockets for Linux.