यूआईपी (सॉफ्टवेयर)

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

अंत: स्थापित प्रणाली में यूआईपी अधिक उपयोगी हो सकता है क्योंकि इसके लिए न्यूनतम कोड तथा रैम की आवश्यकता होती है। इसे डीएसपी प्लेटफॉर्म सहित अनेक प्लेटफ़ॉर्म पर पोर्ट किया गया है।

अक्टूबर वर्ष 2008 में, सिस्को, एटमेल तथा एसआईसीएस ने यूआईपी के लिए पूर्णतया अनुपालित आईपीवी6 एक्सटेंशन की घोषणा की, जिसे यूआईपीवी6 कहा जाता है।

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

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

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

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

संस्करण
यूआईपी 0.9 ऑपरेटिंग प्रणाली पर सबसे कम निर्भरता एवं सबसे कम संसाधन उपयोग वाला संस्करण है और यह एकमात्र संस्करण है जो शुद्ध घटना लूप एपीआई प्रस्तुत करता है किंतु अपने मूल रूप में आईपी संस्करण 6 का समर्थन नहीं करता है एवं केवल पुराने व अधिक सामान्य आईपीवी4 का समर्थन करता है। इसका उपयोग अत्यधिक न्यूनतम संसाधनों के साथ अंत: स्थापित तंत्र में किया जा सकता है।

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

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

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

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

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

यह भी देखें

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

बाहरी संबंध

 * uIP source
 * uIP port for AVR microcontrollers
 * uIP-based Webserver using OpenRISC-embedded SoC