व्यक्तिगत रूप से मुझे यह भी महसूस नहीं होता है कि एसीके की आवश्यकता है। यदि हम सिर्फ प्राप्त पैकेट के लिए ACK भेजने के बजाय NACK (n) भेजते हैं तो यह तेज़ है। तो कब / किन स्थितियों में कोई एनएके और वाइसएवर पर एसीके का उपयोग करेगा?
व्यक्तिगत रूप से मुझे यह भी महसूस नहीं होता है कि एसीके की आवश्यकता है। यदि हम सिर्फ प्राप्त पैकेट के लिए ACK भेजने के बजाय NACK (n) भेजते हैं तो यह तेज़ है। तो कब / किन स्थितियों में कोई एनएके और वाइसएवर पर एसीके का उपयोग करेगा?
जवाबों:
ACK का कारण यह है कि एक NACK बस पर्याप्त नहीं है। मान लीजिए कि मैं आपको X सेगमेंट का डेटा स्ट्रीम भेजता हूं (आइए सरलता के लिए 10 कहते हैं)।
आप एक खराब कनेक्शन पर हैं, और केवल सेगमेंट 1, 2, 4 और 5 प्राप्त करते हैं। आपका कंप्यूटर सेगमेंट 3 के लिए NACK भेजता है, लेकिन यह महसूस नहीं करता है कि सेगमेंट 6-10 सेगमेंट के होने चाहिए और जो NACK नहीं हैं।
इसलिए, मैं खंड 3 को फिर से भेज देता हूं, लेकिन फिर मेरा कंप्यूटर गलत तरीके से मानता है कि डेटा सफलतापूर्वक भेजा गया है।
ACK कुछ आश्वासन देता है कि गंतव्य पर खंड आ गया है।
यदि आप चाहते हैं कि एप्लिकेशन डेटा और पुनर्प्राप्ति के आदेश से निपटने के लिए, आप बस यूडीपी जैसे प्रोटोकॉल का उपयोग करना चुन सकते हैं (उदाहरण के लिए, जैसे टीएफटीपी करता है)।
यह सभी नुकसान की संभावना वितरण और यातायात पैटर्न के लिए उबालता है।
उदाहरण के लिए एक विशिष्ट वायरलेस लिंक लें, जिसमें स्थिर 10-30% हानि दर है। यदि आप प्रत्येक प्राप्त फ्रेम (जैसे 802.11abg) को अंकित करते हैं, तो आप जल्दी से पता लगा लेंगे कि कोई फ्रेम कब खो गया है, इसलिए आप टाइमआउट की प्रतीक्षा करने के लिए ढीला समय नहीं लेंगे।
यदि आप इसके बजाय NAK थे, तो आप ट्रैफ़िक पैटर्न पर निर्भर हो जाएंगे: - यदि आप एक एकल अनुरोध पैकेट भेजते हैं और एक उत्तर की अपेक्षा करते हैं, और वह अनुरोध खो जाता है, तो आपको एक समय समाप्त होना होगा जो समाप्त हो जाएगा यदि आपको नहीं मिलता है जवाब। - यदि आप ज्यादातर मूक प्राप्तकर्ता को पैकेट की एक धारा भेज रहे हैं, तो यह केवल एक NAK प्राप्त करने के लिए स्वीकार्य है जब प्राप्तकर्ता को अगला पैकेट या तो प्राप्त होता है। लेकिन इसका मतलब यह है कि प्राप्तकर्ता को पैकेट को फिर से चालू करना होगा और प्रेषक को अपने द्वारा भेजे गए संदेशों के एक बड़े बैकलॉग का ट्रैक रखना होगा।
(अनुमान करें कि समाधान 802.11n क्या चुनता है? दोनों। रिसीवर एक फ़्रेम-लंबाई बिटमैप भेजता है जो इसे प्राप्त हुआ है)
अब एक विशिष्ट इंटरनेट नेटवर्क लें: आपके पास 0% पैकेट हानि के करीब है, जब तक कि कुछ बुरा नहीं हो जाता है, और कुछ एक्सपोनेंशियल डिस्ट्रीब्यूशन लॉ के बाद, एक 200ms रुकावट से एक मिनट और एक निश्चित समय के लिए आपके पास 100% पैकेट लॉस होता है। आधा।
प्रत्येक पैकेट को एक गैर-हानिपूर्ण नेटवर्क में बेकार लग रहा है, जब तक आप उस मामले पर विचार नहीं करते जब लिंक को अलग किया जाता है: आपको संभवतः विस्तारित समय के लिए ACK या NACK प्राप्त नहीं होगा, और रिसीवर आमतौर पर लिंक तक कुछ भी नहीं भेजेगा। बहाल किया गया है।
यदि आप ACK का उपयोग करते हैं, तो प्रेषक भेजना बंद कर देगा और लिंक बहाल होने तक अपना बैकलॉग रखेगा। यदि आप इसके बजाय NACK का उपयोग करते हैं, तो रिसीवर अंततः आपको बता सकता है कि उसे वह पैकेट नहीं मिला है जो लंबे समय से प्रेषक के बैकलॉग से गिर गया था, और कनेक्शन अनिवार्य रूप से अप्राप्य है।
ACK विंडो प्रोटोकॉल को खिसकाने में उपयोगी होते हैं, वे ट्रांसमीटर A को यह ज्ञात करने की अनुमति देते हैं कि भेजा गया डेटा दूरस्थ B. द्वारा प्राप्त किया गया है। ट्रांसमीटर A तब अगला डेटा भेजने के लिए आगे बढ़ सकता है - जब तक कि इसकी संचारित विंडो पूरी नहीं हो जाती (तब तक दूरस्थ को भेजे गए डेटा की है लेकिन अभी तक नहीं स्वीकार किया)।
ACKs को NAK की तुलना में अधिक आवश्यक माना जा सकता है। NAKs केवल तेजी से रिकवरी के लिए अनुमति देते हैं , उस स्थिति में जहां A द्वारा भेजा गया पैकेट / ब्लॉक B को प्राप्त नहीं होता है, और B किसी तरह से पता लगा लेता है कि पैकेट / ब्लॉक गायब है।
यह एक प्रोटोकॉल को विश्वसनीय हस्तांतरण और प्रवाह नियंत्रण का समर्थन करने के लिए केवल ACK के साथ डिजाइन करने के लिए पूरी तरह से संभव है, बिना NAK (ट्रांसमीटर में अनुलिपित्र के साथ मामले में ट्रांसमीटर ACK, किसी भी मामले में आवश्यक पुनर्प्राप्ति तंत्र प्राप्त नहीं करता है)।
एक सबसे महत्वपूर्ण बात जो मैं यहां जोड़ना चाहूंगा, टीसीपी में, हमने हर तरह के पैकेट के लिए एसीके नहीं भेजे।
हालाँकि, ACK को केवल LAST RECEIVED PACKET के लिए भेजा जाता है।
यदि मैं गलत हूं तो मुझे बताएं।