यूआईपी (सॉफ्टवेयर)
Stable release | Script error: The module returned a nil value. It is supposed to return an export table.
/ Script error: The module returned a nil value. It is supposed to return an export table. |
---|---|
Platform | embedded systems |
Type | TCP/IP stack |
License | BSD |
यूआईपी एक खुला स्रोत सॉफ्टवेयर है | टीसीपी/आईपी नेटवर्क प्रोटोकॉल स्टैक का ओपन-सोर्स कार्यान्वयन, जिसका उद्देश्य छोटे 8- और 16-बिट माइक्रोकंट्रोलर्स के साथ उपयोग करना है। इसे शुरू में स्वीडिश इंस्टीट्यूट ऑफ कंप्यूटर साइंस में नेटवर्क्ड एंबेडेड सिस्टम्स समूह के एडम डंकल्स द्वारा विकसित किया गया था, जिसे बीएसडी स्टाइल लाइसेंस के तहत लाइसेंस दिया गया था, और आगे डेवलपर्स के एक विस्तृत समूह द्वारा विकसित किया गया था।
अंतः स्थापित प्रणाली में यूआईपी बहुत उपयोगी हो सकता है क्योंकि इसके लिए बहुत कम मात्रा में कोड और रैम की आवश्यकता होती है। इसे कई प्लेटफार्मों पर पोर्ट किया गया है,[1][2][3]अंकीय संकेत प्रक्रिया प्लेटफॉर्म सहित।[4]
अक्टूबर 2008 में, सिस्को, एटमेल और एसआईसीएस ने यूआईपी के लिए पूरी तरह से अनुकूल आईपीवीएसएच एक्सटेंशन की घोषणा की, जिसे यूआईपीवी6 कहा जाता है।[5]
कार्यान्वयन
यूआईपी अपने लिए आवश्यक संसाधनों को कम करने के लिए कई असामान्य डिज़ाइन विकल्प बनाता है। यूआईपी का मूल सॉफ़्टवेयर इंटरफ़ेस बिना ऑपरेटिंग सिस्टम वाले छोटे कंप्यूटर सिस्टम के लिए डिज़ाइन किया गया है। इसे एक समयबद्ध लूप में कॉल किया जा सकता है, और कॉल सभी पुनर्प्रयासों और अन्य नेटवर्क व्यवहार को प्रबंधित करता है। यूआईपी कॉल करने के बाद हार्डवेयर ड्राइवर को कॉल किया जाता है। यूआईपी पैकेट बनाता है, और फिर ड्राइवर इसे भेजता है, और वैकल्पिक रूप से एक प्रतिक्रिया प्राप्त करता है।
आईपी प्रोटोकॉल स्टैक सॉफ़्टवेयर के लिए ट्रांसमिशन, रिसेप्शन के लिए अलग-अलग आईपी पैकेट की कई प्रतियां रखना और उन्हें दोबारा भेजने की आवश्यकता होने पर प्रतियां रखना सामान्य है। यूआईपी मेमोरी के उपयोग में किफायती है क्योंकि यह केवल एक पैकेट बफर का उपयोग करता है। सबसे पहले, यह पैकेट बफ़र को आधे-डुप्लेक्स तरीके से उपयोग करता है, ट्रांसमिशन और रिसेप्शन के लिए इसका उपयोग करता है। साथ ही, जब यूआईपी को किसी पैकेट को दोबारा प्रसारित करने की आवश्यकता होती है, तो यह एप्लिकेशन कोड को इस तरह से कॉल करता है कि पिछले डेटा को पुन: प्रस्तुत करने का अनुरोध करता है।
एक और विचित्रता यह है कि यूआईपी कनेक्शन कैसे प्रबंधित करता है। अधिकांश आईपी कार्यान्वयन में प्रति कनेक्शन एक कार्य होता है, और कार्य कनेक्शन के दूसरे छोर पर दूर के कंप्यूटर में एक कार्य के साथ संचार करता है। यूआईपी में, कोई मल्टीटास्किंग ऑपरेटिंग सिस्टम नहीं माना जाता है। कनेक्शन एक सरणी में रखे गए हैं। प्रत्येक कॉल पर, यूआईपी एक कनेक्शन प्रदान करने का प्रयास करता है, एप्लिकेशन कोड पर एक सबरूटीन कॉल करता है जो डेटा का जवाब देता है या भेजता है। कनेक्शन सरणी का आकार एक संख्या है जिसे यूआईपी के पुन: संकलित होने पर समायोजित किया जा सकता है।
यूआईपी टिप्पणियों के अनुरोध के साथ पूरी तरह से अनुपालन करता है जो प्रसारण नियंत्रण प्रोटोकॉल , उपयोगकर्ता डेटाग्राम प्रोटेकॉलका उपयोग करें इंटरनेट प्रोटोकॉल को परिभाषित करता है। यह अनिवार्य रखरखाव प्रोटोकॉल इंटरनेट नियंत्रण संदेश प्रोटोकॉल को भी लागू करता है।
संस्करण
यूआईपी 0.9[6]ऑपरेटिंग सिस्टम पर सबसे कम निर्भरता वाला संस्करण, सबसे कम संसाधन उपयोग वाला संस्करण है, और एकमात्र संस्करण जो शुद्ध इवेंट लूप एपीआई प्रस्तुत करता है, लेकिन अपने मूल रूप में आईपी संस्करण 6 का समर्थन नहीं करता है, केवल पुराने, अधिक सामान्य आईपीवी4 का समर्थन करता है। इसका उपयोग बहुत कम मात्रा में संसाधनों के साथ एम्बेडेड सिस्टम में किया जा सकता है।
इसे उच्च-स्तरीय प्रोटोकॉल के उदाहरणों के एक सेट के साथ वितरित किया गया था जो इवेंट लूप सिस्टम पर भी चलता है, जिसमें HTTP (एक साधारण वेब सर्वर), एसएमटीपी (सरल मेल ट्रांसमिशन प्रोटोकॉल), एफ़टीपी (फ़ाइल ट्रांसफर प्रोटोकॉल), टेलनेट (टर्मिनल इम्यूलेशन) शामिल है। ), और दूसरे। उदाहरणों और इसके छोटे आकार के बावजूद, यूआईपी 0.9 को लागू करना मुश्किल हो सकता है क्योंकि यह सॉकेट एपीआई के किसी भी रूप का उपयोग नहीं करता है।[7] यूआईपी प्रसिद्ध कमजोरियों के साथ व्यापक रूप से उपयोग किया जाने वाला कोड है। डिज़ाइन 32-बिट अंकगणित को छोटा और अलग करता है ताकि इसे 8 और 16-बिट सीपीयू के लिए समायोजित या अनुकूलित किया जा सके। इसके अलावा, 16-बिट सॉफ़्टवेयर टाइमर (छोटे माइक्रोकंट्रोलर पर आम) पूर्णांक अतिप्रवाह कर सकते हैं और दोषपूर्ण संचालन का कारण बन सकते हैं। इसे एक टाइमर प्रणाली के साथ ठीक किया जा सकता है जो अतिप्रवाह नहीं करता है (उदाहरण के लिए टाइमर उलटी गिनती करते हैं या मॉड्यूलर अंकगणित का उपयोग करते हैं)।
एक और मुद्दा यह है कि इसके एकल पैकेट बफर में पर्याप्त थ्रूपुट समस्याएं हो सकती हैं क्योंकि एक पीसी होस्ट आमतौर पर अधिक पैकेट की प्रतीक्षा में एसीके पैकेट में देरी करता है। धीमे, आनुक्रमिक द्वार कार्यान्वयन में, प्रत्येक पैकेट को दो आधे-पैकेट टुकड़ों के रूप में भेजने के लिए यूआईपी को संशोधित करके एके-थ्रूपुट को ठीक किया जा सकता है। तेज़ ईथरनेट या वाईफ़ाई वाले यूआईपी सिस्टम प्रत्येक पैकेट को दो बार भेजने के लिए हार्डवेयर ड्राइवर को संशोधित कर सकते हैं।[4]
कुछ पीसी स्थानीय ईथरनेट पर तेज़ यूआईपी सिस्टम पर सही ढंग से प्रतिक्रिया नहीं देते हैं, क्योंकि पीसी को प्राप्त करने के लिए तैयार होने से पहले यूआईपी सिस्टम एक प्रतिक्रिया पैकेट शुरू कर सकता है।[dubious ] समाधान मुख्य लूप में यूआईपी सिस्टम को कम बार कॉल करना है (विंडोज पीसी लगभग 1 मिलीसेकंड के प्रतिक्रिया समय के लिए डिज़ाइन किए गए हैं)। यूआईपी के विशिष्ट कार्यान्वयन में एक निश्चित आईपी पता होता है, जो उन्हें वास्तविक नेटवर्क में अव्यवहारिक बना सकता है, हालांकि कुछ ने डीएचसीपी लागू किया है।[8][9] यूआईपी के बाद के संस्करण, जिसमें यूआईपीवी6 का संदर्भ संस्करण भी शामिल है, बंद करना के साथ एकीकृत है, एक ऑपरेटिंग सिस्टम जो सहकारी मल्टीटास्किंग के लिए coroutine का उपयोग करता है। कॉन्टिकी यूआईपी के उपयोग को सरल बनाते हुए एक सरलीकृत सॉकेट एपीआई द्वारा आवश्यक मल्टीटास्किंग प्रदान करता है। हालाँकि ये संस्करण 0.9 से कम लोकप्रिय हो सकते हैं। एम्बेडेड कोड के कई उदाहरण उनका उपयोग नहीं करते हैं।[10][11][12]
यह भी देखें
- इंटरनेट इंजीनियरिंग टास्क फोर्स
- टीसीपी और यूडीपी पोर्ट नंबरों की सूची
- एलडब्ल्यूआईपी - एक अन्य टीसीपी/आईपी स्टैक प्रोजेक्ट (डंकल्स द्वारा भी बनाया गया), लेकिन अधिक पूर्ण रूप से चित्रित और अधिक सक्षम हार्डवेयर के उद्देश्य से
संदर्भ
- ↑ Metzinger, Zach (March 25, 2008). "APPLICATION NOTE 4205 - Using the uIP Stack to Network a MAXQ Microcontroller". Maxim Integrated Products, Inc. Retrieved February 2, 2015.
- ↑ "AN057 – uIP V1.0 TCP/IP Stack for eCOG1k and eCOG1X, Version 1.0" (PDF). Cyan Technology Ltd. January 28, 2008. Archived from the original (PDF) on February 18, 2012. Retrieved February 18, 2012.
- ↑ Curtis, Paul. "Adam Dunkel's uIP on the Olimex EasyWeb2 and LPC-E2124". Rowley Associates Limited. Retrieved February 2, 2015.
- ↑ 4.0 4.1 Barnett, Drew; Massa, Anthony J. (February 1, 2005). "Inside the uIP Stack". Dr Dobbs Journal. Retrieved February 2, 2015.
- ↑ "Cisco, Atmel and the Swedish Institute of Computer Science (SICS) Collaborate to Support a Future Where Any Device Can Be Connected to the Internet". Cisco. October 14, 2008. Retrieved February 2, 2015.
- ↑ Dunkels, Adam. "Tagged releases". uIP tagged releases on GitHub. Retrieved February 2, 2015.
- ↑ See Dunkel's original web site, above, on the wayback machine.
- ↑ See Code-Red sample code for the RDB4078 PCB, 2012.
- ↑ Dunkel provided sample code for DHCP.
- ↑ Metzinger, above
- ↑ FreeRTOS web site examples, 2013
- ↑ Code-Red examples, above.