मैं एक प्रोग्राम लिख रहा हूं जो यूएनपी के शीर्ष पर एक स्टॉप और प्रतीक्षा प्रोटोकॉल का उपयोग करता है ताकि लैन पर पैकेट और वैन पर भी भेज सकें। मैंने हाल ही में अपने कार्यक्रम का परीक्षण किया है और देखा है कि पैकेट हानि दर बड़े पैकेट (64k बाइट्स के करीब) के लिए अधिक है। सहजता से यह समझ में आता है लेकिन इसके लिए वास्तविक कारण क्या हैं?यूडीपी पैकेट आकार और पैकेट नुकसान
उत्तर
MTU size से अधिक यूडीपी पैकेट जो उन्हें लेते हैं, स्वचालित रूप से एकाधिक पैकेट में विभाजित हो जाएंगे, और फिर प्राप्तकर्ता द्वारा पुनः एकत्र किए जाएंगे। यदि उनमें से कोई भी उप-पैकेट गिरा दिया जाता है, तो रिसीवर भी बाकी को छोड़ देगा।
तो उदाहरण के लिए यदि आप 63k यूडीपी पैकेट भेजते हैं, और यह ईथरनेट पर चला जाता है, तो यह 47+ छोटे "खंड" पैकेट में टूट जाएगा (क्योंकि ईथरनेट का एमटीयू 1500 बाइट है, लेकिन उनमें से कुछ यूडीपी के लिए उपयोग किए जाते हैं हेडर आदि, इसलिए यूडीपी पैकेट में उपलब्ध उपयोगकर्ता-डेटा-स्पेस की मात्रा उस से छोटी है)। रिसीवर केवल यूडीपी पैकेट को "देख" देगा यदि उन सभी 47+ टुकड़े-पैकेट इसे ठीक से बनाते हैं। अगर उनमें से केवल एक टुकड़े-पैकेट गिरा दिए जाते हैं, तो पूरा ऑपरेशन विफल हो जाता है।
अच्छा, डेटा नेटवर्क विश्वसनीय से बहुत दूर हैं; पैकेट हर समय गिरा दिया जाता है। अधिभारित राउटर, पूर्ण बफर और भ्रष्ट पैकेट कुछ कारण हैं। चूंकि यूडीपी में प्रवाह नियंत्रण क्षमता नहीं है, इसलिए उदाहरण के लिए प्राप्त करने वाला अंत अधिभारित होने पर यह धीमा नहीं हो सकता है।
जेरेमी ने समझाया, जितना बड़ा पेलोड, उतना अधिक पैकेट इसे विभाजित करने जा रहा है, और इसलिए उनमें से कुछ खोने का एक बड़ा मौका है।
यूडीपी उन मामलों में उपयोग किया जाता है जहां यहां गिराए गए पैकेट में कुछ भी या मामलों को प्रभावित नहीं किया जाएगा, जिन्हें आपको समय पर वहां पहुंचने के लिए कुछ चाहिए या नहीं। (वीओआईपी, वीडियो स्ट्रीमिंग आदि)
यह सब आईपी विखंडन और डीफ्रैग्मेंटेशन के बारे में है। एमटीयू से अधिक पैकेट खंडित किया जाएगा और अंतिम मेजबान में डिफ्रैग्मेंट किया जाना चाहिए, वहां भी पथ पर टुकड़े टुकड़े हो जाते हैं और फिर देरी को जोड़ सकते हैं। कभी-कभी यदि कुछ एन/डब्ल्यू तत्व परत 4 फ़िल्टरिंग के लिए कॉन्फ़िगर किया गया है तो यह डिफ्रैगमेंट्स (अंतिम होस्ट नहीं) नियम लागू करता है और फिर फिर से frgaments और आगे। आवेदैटन जिस कारण प्रदर्शन की आवश्यकता है, वह हमेशा आकार < = (एमटीयू-ईटीएचएचडीआर-आईपीएचडीआर) के साथ डेटा भेजने का प्रयास करता है
आप 64k पैकेट नहीं भेज सकते हैं। अधिकतम यूडीपी पेलोड 65507 बाइट है। – EJP
ठीक है, अगर हम नाइट्स लेने जा रहे हैं, तो 65507 बाइट पेलोड वाला यूडीपी पैकेट 65535 बाइट लंबा है (हेडर समेत) - एक बाइट 64KiB से छोटा है। लेकिन सटीकता के लिए मैं अपना उदाहरण 63k में बदल दूंगा। –
इसका प्रभाव पैकेट नुकसान की एक छोटी राशि प्रदर्शन को महत्वपूर्ण रूप से प्रभावित कर सकता है। इस उदाहरण में, यदि आपके पास 2% पैकेट नुकसान था, तो आप लगभग 50% अपने पैकेट्स को खो देते हैं जिससे थ्रूपुट में महत्वपूर्ण गिरावट आती है। देखें: http://stackoverflow.com/a/19057666/84206 – AaronLS