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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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

बाहरी संबंध

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