Sliding window protocol
একটি স্লাইডিং উইন্ডো প্রোটোকল হল প্যাকেট-ভিত্তিক ডেটা ট্রান্সমিশন প্রোটোকলের একটি বৈশিষ্ট্য। স্লাইডিং উইন্ডো প্রোটোকলগুলি ব্যবহার করা হয় যেখানে প্যাকেটগুলির নির্ভরযোগ্য ইন-অর্ডার ডেলিভারি প্রয়োজন, যেমন ডেটা লিঙ্ক স্তর (ওএসআই স্তর 2) পাশাপাশি ট্রান্সমিশন কন্ট্রোল প্রোটোকল (টিসিপি)। এগুলি দক্ষতা উন্নত করতেও ব্যবহৃত হয় যখন চ্যানেলে উচ্চ বিলম্বতা অন্তর্ভুক্ত থাকতে পারে। প্যাকেট-ভিত্তিক সিস্টেমগুলি অতিরিক্ত ডেটা সহ প্যাকেটের একটি ব্যাচ পাঠানোর ধারণার উপর ভিত্তি করে তৈরি করা হয় যা রিসিভারকে এটি সঠিকভাবে গ্রহণ করা হয়েছে তা নিশ্চিত করতে দেয়, সম্ভবত একটি চেকসাম। দৃষ্টান্তটি নতুন প্যাকেট প্রবেশের অনুমতি দেওয়ার জন্য এবং ইতিমধ্যে স্বীকৃত প্যাকেটগুলি প্রত্যাখ্যান করার জন্য পাশের দিকে সরে যাওয়া উইন্ডোর অনুরূপ। রিসিভার যখন তথ্য যাচাই করে, তখন এটি প্রেরকের কাছে একটি স্বীকৃতি সংকেত বা "এ. সি. কে" পাঠায়, যা নির্দেশ করে যে এটি পরবর্তী প্যাকেট পাঠাতে পারে। একটি সাধারণ স্বয়ংক্রিয় পুনরাবৃত্তি অনুরোধ প্রোটোকলে (এআরকিউ), প্রেরক প্রতিটি প্যাকেটের পরে থেমে যায় এবং রিসিভারের এসি কে যাওয়ার জন্য অপেক্ষা করে। এটি নিশ্চিত করে যে প্যাকেটগুলি সঠিক ক্রমে পৌঁছেছে, কারণ একবারে কেবল একটিই পাঠানো যেতে পারে। এ. সি. কে সংকেত পেতে যে সময় লাগে তা প্যাকেট পাঠানোর জন্য প্রয়োজনীয় সময়ের তুলনায় উল্লেখযোগ্য পরিমাণ সময়ের প্রতিনিধিত্ব করতে পারে। এই ক্ষেত্রে, সামগ্রিক থ্রুপুট তাত্ত্বিকভাবে সম্ভব তুলনায় অনেক কম হতে পারে। এটি সমাধান করার জন্য, স্লাইডিং উইন্ডো প্রোটোকলগুলি একটি নির্বাচিত সংখ্যক প্যাকেট, উইন্ডোটিকে এসি কে-র জন্য অপেক্ষা না করেই পাঠানোর অনুমতি দেয়। প্রতিটি প্যাকেট একটি ক্রম নম্বর পায় এবং এ. সি. কে সেই নম্বরটি ফেরত পাঠায়। প্রটোকলটি কোন প্যাকেটগুলি এ. সি. কে করা হয়েছে এবং কখন সেগুলি গ্রহণ করা হয়েছে তার উপর নজর রাখে এবং আরও প্যাকেট পাঠায়। এইভাবে, স্থানান্তরটি তৈরি করে প্যাকেটের প্রবাহ বরাবর উইন্ডোটি স্লাইড করে। স্লাইডিং উইন্ডোগুলি অনেক প্রোটোকলের একটি মূল অংশ। এটি টিসিপি প্রোটোকলের একটি মূল অংশ, যা সহজাতভাবে প্যাকেটগুলিকে ক্রমের বাইরে পৌঁছানোর অনুমতি দেয় এবং ইউইউসিপি-জি এবং জেডএমওডিইএম-এর মতো অনেক ফাইল স্থানান্তর প্রোটোকলগুলিতে এক্সএমওডিইএম-এর মতো অ-উইন্ডো প্রোটোকলের তুলনায় দক্ষতা উন্নত করার উপায় হিসাবে পাওয়া যায়। এসইএলিংকও দেখুন। প্রাথমিক ধারণা ধারণাগতভাবে, সংক্রমণের প্রতিটি অংশকে (বেশিরভাগ ডেটা লিঙ্ক স্তরে প্যাকেট, তবে টিসিপিতে বাইট) একটি অনন্য ধারাবাহিক ক্রম সংখ্যা বরাদ্দ করা হয় এবং রিসিভার প্রাপ্ত প্যাকেটগুলিকে সঠিক ক্রমে রাখার জন্য সংখ্যাগুলি ব্যবহার করে, ডুপ্লিকেট প্যাকেটগুলি ফেলে দেয় এবং অনুপস্থিতগুলি সনাক্ত করে। এর সাথে সমস্যাটি হল যে প্রয়োজন হতে পারে এমন ক্রম সংখ্যার আকারের কোনও সীমা নেই। যে কোনও নির্দিষ্ট সময়ে প্রেরণ বা গ্রহণ করা যেতে পারে এমন প্যাকেটের সংখ্যার সীমা নির্ধারণ করে, একটি স্লাইডিং উইন্ডো প্রোটোকল নির্দিষ্ট আকারের ক্রম সংখ্যা ব্যবহার করে সীমাহীন সংখ্যক প্যাকেট যোগাযোগ করার অনুমতি দেয়। ট্রান্সমিটারের পাশে "উইন্ডো" শব্দটি রিসিভারের দ্বারা এখনও স্বীকৃত হওয়া মোট প্যাকেটের যৌক্তিক সীমানা উপস্থাপন করে। রিসিভার প্রতিটি স্বীকৃতি প্যাকেটের ট্রান্সমিটারকে বর্তমান সর্বাধিক রিসিভার বাফার আকার (উইন্ডো সীমানা) জানায়। টিসিপি হেডারটি প্রেরককে রিসিভার উইন্ডোর আকার রিপোর্ট করতে একটি 16 বিট ক্ষেত্র ব্যবহার করে। অতএব, ব্যবহার করা যেতে পারে এমন বৃহত্তম উইন্ডোটি হল 216 = 64 কিলোবাইট। স্লো-স্টার্ট মোডে, ট্রান্সমিটারটি কম প্যাকেট গণনা দিয়ে শুরু হয় এবং রিসিভারের কাছ থেকে স্বীকৃতি প্যাকেট পাওয়ার পরে প্রতিটি ট্রান্সমিশনে প্যাকেটের সংখ্যা বৃদ্ধি করে। প্রাপ্ত প্রতিটি এক প্যাকেটের জন্য, একটি নতুন প্যাকেট প্রেরণ করতে উইন্ডোটি একটি প্যাকেট (যৌক্তিকভাবে) দ্বারা স্লাইড করে। যখন উইন্ডো থ্রেশহোল্ডে পৌঁছায়, তখন ট্রান্সমিটার প্রাপ্ত একটি এক প্যাকেটের জন্য একটি প্যাকেট পাঠায়। যদি উইন্ডোর সীমা 10টি প্যাকেট হয়, তাহলে ধীরগতিতে শুরু করার সময় ট্রান্সমিটারটি একটি প্যাকেটের পরে দুটি প্যাকেট (দুটি প্যাকেট প্রেরণের আগে, একটি প্যাকেট অ্যাক গ্রহণ করতে হবে), তারপরে তিনটি প্যাকেট এবং 10টি প্যাকেট পর্যন্ত প্রেরণ করতে পারে। কিন্তু 10টি প্যাকেট পৌঁছনোর পর, আরও সংক্রমণ একটি প্যাকেটের মধ্যে সীমাবদ্ধ থাকে যা একটি এক প্যাকেটের জন্য প্রেরণ করা হয়। একটি সিমুলেশনে এটি প্রদর্শিত হয় যেন উইন্ডোটি প্রাপ্ত প্রতিটি এক প্যাকেটের জন্য এক প্যাকেট দূরত্ব অতিক্রম করছে। রিসিভারের দিকেও উইন্ডোটি প্রাপ্ত প্রতিটি প্যাকেটের জন্য একটি প্যাকেট সরিয়ে দেয়। স্লাইডিং উইন্ডো পদ্ধতি নিশ্চিত করে যে নেটওয়ার্কে যানজট এড়ানো হয়। অ্যাপ্লিকেশন স্তরটি এখনও নেটওয়ার্ক ট্র্যাফিক যানজটের সমস্যা নিয়ে চিন্তা না করে টিসিপিতে প্রেরণের জন্য ডেটা সরবরাহ করবে কারণ প্রেরক এবং রিসিভারের দিকে টিসিপি প্যাকেট বাফারের স্লাইডিং উইন্ডো প্রয়োগ করে। নেটওয়ার্ক ট্র্যাফিকের উপর নির্ভর করে উইন্ডোর আকার গতিশীলভাবে পরিবর্তিত হতে পারে। সর্বোচ্চ সম্ভাব্য থ্রুপুটের জন্য, এটি গুরুত্বপূর্ণ যে ট্রান্সমিটারটি একটি রাউন্ড-ট্রিপ বিলম্ব সময় (আরটিটি) এর আগে স্লাইডিং উইন্ডো প্রোটোকল দ্বারা প্রেরণ বন্ধ করতে বাধ্য হয় না। স্বীকৃতির জন্য অপেক্ষা করার আগে এটি যে পরিমাণ তথ্য পাঠাতে পারে তার সীমা যোগাযোগ লিঙ্কের ব্যান্ডউইথ-বিলম্ব পণ্যের চেয়ে বড় হওয়া উচিত। যদি তা না হয়, তবে প্রোটোকল লিঙ্কের কার্যকর ব্যান্ডউইথকে সীমাবদ্ধ করবে। অনুপ্রেরণা ত্রুটি নিয়ন্ত্রণের জন্য স্বয়ংক্রিয় পুনরাবৃত্তির অনুরোধের উপর ভিত্তি করে যে কোনও যোগাযোগ প্রোটোকলে, প্রাপককে অবশ্যই প্রাপ্ত প্যাকেটগুলি স্বীকার করতে হবে। যদি ট্রান্সমিটার যুক্তিসঙ্গত সময়ের মধ্যে একটি স্বীকৃতি না পায়, তবে এটি তথ্য পুনরায় পাঠায়। যে ট্রান্সমিটার স্বীকৃতি পায় না সে জানতে পারে না যে রিসিভার আসলে প্যাকেটটি পেয়েছে কিনা; এটি হতে পারে যে এটি সম্প্রচারের সময় হারিয়ে গেছে বা ক্ষতিগ্রস্ত হয়েছে। যদি ত্রুটি সনাক্তকরণ প্রক্রিয়া দুর্নীতি প্রকাশ করে, তবে রিসিভার দ্বারা প্যাকেটটি উপেক্ষা করা হবে এবং রিসিভার দ্বারা একটি নেতিবাচক বা ডুপ্লিকেট স্বীকৃতি পাঠানো হবে। রিসিভারকে এমনভাবেও কনফিগার করা যেতে পারে যাতে কোনও স্বীকৃতি না পাঠানো যায়। একইভাবে, প্রাপক সাধারণত তার স্বীকৃতি গ্রহণ করা হচ্ছে কিনা সে সম্পর্কে অনিশ্চিত থাকে। এটি হতে পারে যে একটি স্বীকৃতি পাঠানো হয়েছিল, কিন্তু সম্প্রচারের মাধ্যমে হারিয়ে গেছে বা নষ্ট হয়ে গেছে। এই ক্ষেত্রে, প্রাপককে অবশ্যই পুনরায় সম্প্রচারের বিষয়টি স্বীকার করতে হবে যাতে ডেটা ক্রমাগত বিরক্ত না হয়, তবে অন্যথায় অবশ্যই এটি উপেক্ষা করতে হবে। প্রোটোকল অপারেশন ট্রান্সমিটার এবং রিসিভারের প্রত্যেকটির যথাক্রমে একটি বর্তমান ক্রম সংখ্যা nt এবং nr রয়েছে। তাদের প্রত্যেকের একটি উইন্ডো আকার ডাব্লুটি এবং ডাব্লুআর রয়েছে। জানালার আকার পরিবর্তিত হতে পারে, তবে সহজ বাস্তবায়নে সেগুলি স্থির করা হয়। যে কোনও অগ্রগতির জন্য জানালার আকার অবশ্যই শূন্যের চেয়ে বড় হতে হবে। সাধারণত বাস্তবায়িত হিসাবে, এন. টি হল পরবর্তী প্যাকেট যা প্রেরণ করা হবে, অর্থাৎ। প্রথম প্যাকেটের ক্রম সংখ্যা এখনও প্রেরণ করা হয়নি। একইভাবে, এনআর হল প্রথম প্যাকেট যা এখনও পাওয়া যায়নি। উভয় সংখ্যাই সময়ের সাথে একঘেয়েভাবে বৃদ্ধি পাচ্ছে; তারা কেবল বৃদ্ধি পাচ্ছে। রিসিভার এখনও প্রাপ্ত সর্বোচ্চ ক্রম সংখ্যার উপর নজর রাখতে পারে; পরিবর্তনশীল এনএস প্রাপ্ত সর্বোচ্চ ক্রম সংখ্যার ক্রম সংখ্যার চেয়ে এক বেশি। সাধারণ রিসিভারদের জন্য যারা শুধুমাত্র প্যাকেটগুলি ক্রমানুসারে গ্রহণ করে (ডাব্লুআর = 1), এটি এনআর-এর মতো, তবে ডাব্লুআর> 1 হলে আরও বড় হতে পারে। পার্থক্যটি লক্ষ্য করুনঃ এন. আর-এর নীচের সমস্ত প্যাকেট পাওয়া গেছে, এন. এস-এর উপরে কোনও প্যাকেট পাওয়া যায়নি এবং এন. আর এবং এন. এস-এর মধ্যে কিছু প্যাকেট পাওয়া গেছে। রিসিভার যখন একটি প্যাকেট পায়, তখন এটি যথাযথভাবে তার ভেরিয়েবলগুলি আপডেট করে এবং নতুন এন. আর-এর সাথে একটি স্বীকৃতি প্রেরণ করে। ট্রান্সমিটারটি যে সর্বোচ্চ স্বীকৃতি পেয়েছে তার উপর নজর রাখে। ট্রান্সমিটার জানে যে সমস্ত প্যাকেট পাওয়া গেছে, তবে না সহ নয়, তবে না এবং এনএস-এর মধ্যে প্যাকেট সম্পর্কে অনিশ্চিত; অর্থাৎ। না ≤ এনআর ≤ এনএস। ক্রম সংখ্যাগুলি সর্বদা এই নিয়ম মেনে চলে যে Na ≤ nr ≤ ns ≤ nt ≤ Na + wt। অর্থাৎঃ না ≤ এনআরঃ ট্রান্সমিটার দ্বারা প্রাপ্ত সর্বোচ্চ স্বীকৃতি রিসিভার দ্বারা স্বীকৃত সর্বোচ্চ এনআর-এর চেয়ে বেশি হতে পারে না। এন. আর. ≤ এনএসঃ সম্পূর্ণরূপে প্রাপ্ত প্যাকেটগুলির ব্যাপ্তি আংশিকভাবে প্রাপ্ত প্যাকেটগুলির শেষের বাইরে প্রসারিত হতে পারে না। এনএস ≤ এনটিঃ প্রাপ্ত সর্বোচ্চ প্যাকেট পাঠানো সর্বোচ্চ প্যাকেটের চেয়ে বেশি হতে পারে না। এন. টি. ≤ না + ডব্লিউ. টিঃ পাঠানো সর্বোচ্চ প্যাকেটটি প্রাপ্ত সর্বোচ্চ স্বীকৃতি এবং ট্রান্সমিট উইন্ডোর আকার দ্বারা সীমাবদ্ধ। ট্রান্সমিটার অপারেশন যখনই ট্রান্সমিটারের কাছে পাঠানোর জন্য তথ্য থাকে, এটি সর্বশেষ স্বীকৃতির আগে ডাব্লুটি প্যাকেটগুলিতে প্রেরণ করতে পারে। অর্থাৎ, এটি এন. টি <না + ডব্লিউ. টি পর্যন্ত প্যাকেট নম্বর এন. টি প্রেরণ করতে পারে। যোগাযোগের ত্রুটির অভাবে, ট্রান্সমিটার শীঘ্রই তার পাঠানো সমস্ত প্যাকেটের জন্য একটি স্বীকৃতি পায়, যা না-কে nt-এর সমান রাখে। যদি যুক্তিসঙ্গত বিলম্বের পরে এটি না ঘটে, তবে ট্রান্সমিটারকে অবশ্যই না এবং এনটি-র মধ্যে প্যাকেটগুলি পুনরায় প্রেরণ করতে হবে। "যুক্তিসঙ্গত বিলম্ব" সংজ্ঞায়িত করার কৌশলগুলি অত্যন্ত বিস্তৃত হতে পারে, তবে এগুলি কেবল দক্ষতাকে প্রভাবিত করে; স্লাইডিং উইন্ডো প্রোটোকলের মৌলিক নির্ভরযোগ্যতা বিশদ বিবরণের উপর নির্ভর করে না। রিসিভার অপারেশন যখনই x সংখ্যাযুক্ত একটি প্যাকেট পাওয়া যায়, রিসিভার পরীক্ষা করে দেখে যে এটি রিসিভ উইন্ডোতে পড়ে কিনা, nr ≤ x <nr + wr। (সহজতম রিসিভারদের শুধুমাত্র একটি মান এনআর = এনএস-এর উপর নজর রাখতে হয়।) যদি এটি জানালার মধ্যে পড়ে, তবে রিসিভার এটি গ্রহণ করে। যদি এটি nr সংখ্যাযুক্ত হয়, তবে রিসিভ সিকোয়েন্স নম্বর 1 দ্বারা বৃদ্ধি করা হয়, এবং সম্ভবত আরও বেশি যদি আরও ধারাবাহিক প্যাকেট আগে গ্রহণ করা হয় এবং সংরক্ষণ করা হয়। যদি x> nr হয়, তাহলে পূর্ববর্তী সমস্ত প্যাকেট না পাওয়া পর্যন্ত প্যাকেটটি সংরক্ষণ করা হয়। যদি x ± এনএস হয়, তবে পরেরটি এনএস = এক্স + 1 এ আপডেট করা হয়। যদি প্যাকেটের নম্বর রিসিভ উইন্ডোর মধ্যে না থাকে, তবে রিসিভার এটি ফেলে দেয় এবং এনআর বা এনএস পরিবর্তন করে না। প্যাকেটটি গৃহীত হোক বা না হোক, রিসিভার বর্তমান এন. আর সহ একটি স্বীকৃতি প্রেরণ করে। (স্বীকৃতিটিতে এনআর এবং এনএস-এর মধ্যে প্রাপ্ত অতিরিক্ত প্যাকেট সম্পর্কে তথ্যও অন্তর্ভুক্ত থাকতে পারে, তবে এটি কেবল দক্ষতায় সহায়তা করে।) মনে রাখবেন যে রিসিভ উইন্ডোটি ট্রান্সমিট উইন্ডো ডাব্লুটি-র চেয়ে বড় হওয়ার কোনও মানে হয় না, কারণ এমন একটি প্যাকেট পাওয়ার বিষয়ে চিন্তা করার দরকার নেই যা কখনই প্রেরণ করা হবে না; দরকারী পরিসীমা হল 1 ≤ ডাব্লুটি। ক্রম সংখ্যার পরিসীমা প্রয়োজন এখন পর্যন্ত, প্রটোকলটি এমনভাবে বর্ণনা করা হয়েছে যেন ক্রম সংখ্যা সীমাহীন আকারের, ক্রমাগত বৃদ্ধি পাচ্ছে। যাইহোক, বার্তাগুলিতে পূর্ণ ক্রম সংখ্যা x প্রেরণ করার পরিবর্তে, কিছু সসীম N-এর জন্য শুধুমাত্র x মড N প্রেরণ করা সম্ভব। উদাহরণস্বরূপ, ট্রান্সমিটার শুধুমাত্র না থেকে এন. টি পর্যন্ত পরিসরে স্বীকৃতি গ্রহণ করবে। যেহেতু এটি গ্যারান্টি দেয় যে nt − na ≤ wt, সর্বাধিক wt + 1 সম্ভাব্য ক্রম সংখ্যা রয়েছে যা যে কোনও নির্দিষ্ট সময়ে আসতে পারে। সুতরাং, ট্রান্সমিটারটি দ্ব্যর্থহীনভাবে এন> ডাব্লুটি পর্যন্ত ক্রম সংখ্যাটি ডিকোড করতে পারে। রিসিভার দ্বারা একটি শক্তিশালী সীমাবদ্ধতা আরোপ করা হয়। প্রটোকলের কার্যকারিতা নির্ভর করে রিসিভারের নির্ভরযোগ্যভাবে নতুন প্যাকেটগুলি (যা গ্রহণ করা উচিত এবং প্রক্রিয়াজাত করা উচিত) এবং পুরানো প্যাকেটগুলির পুনঃপ্রসারণ (যা বাতিল করা উচিত এবং শেষ স্বীকৃতি পুনরায় প্রেরণ করা উচিত) থেকে আলাদা করতে সক্ষম হওয়ার উপর। ট্রান্সমিটারের জানালার আকার সম্পর্কে জ্ঞান থাকলে এটি করা যেতে পারে। x সংখ্যাযুক্ত একটি প্যাকেট পাওয়ার পর, রিসিভার জানে যে x <na + wt, তাই na> x − wt। সুতরাং, x−wt সংখ্যাযুক্ত প্যাকেটগুলি আর কখনও পুনরায় প্রেরণ করা হবে না। ভবিষ্যতে আমরা যে সর্বনিম্ন ক্রম সংখ্যাটি পাব তা হল এনএস-ডাব্লুটি রিসিভার এটাও জানেন যে ট্রান্সমিটারের না এখন পর্যন্ত পাঠানো সর্বোচ্চ স্বীকৃতির চেয়ে বেশি হতে পারে না, যা হল এনআর। সুতরাং আমরা সম্ভবত যে সর্বোচ্চ ক্রম সংখ্যাটি দেখতে পাচ্ছি তা হল nr + wt ≤ ns + wt। সুতরাং, 2wt বিভিন্ন ক্রম সংখ্যা রয়েছে যা রিসিভার যে কোনও এক সময়ে পেতে পারে। তাই মনে হতে পারে যে আমাদের অবশ্যই N ≤ 2wt থাকতে হবে। তবে প্রকৃত সীমা আরও কম। অতিরিক্ত অন্তর্দৃষ্টিটি হল যে রিসিভারকে খুব কম (এনআর-এর চেয়ে কম) বা খুব বেশি (এনএস + ডাব্লুআর-এর চেয়ে বড় বা সমান) ক্রম সংখ্যার মধ্যে পার্থক্য করার প্রয়োজন নেই। উভয় ক্ষেত্রেই, রিসিভার একটি স্বীকৃতি পুনরায় প্রেরণ করা ছাড়া প্যাকেটটি উপেক্ষা করে। সুতরাং, এটি শুধুমাত্র প্রয়োজন যে N ± wt + wr। যেহেতু ডাব্লুআর <ডাব্লুটি হওয়া সাধারণ (যেমন। নীচে দেখুন গো-ব্যাক-এন), এটি একটি নির্দিষ্ট এন-এর মধ্যে বৃহত্তর ডাব্লুটি-র অনুমতি দিতে পারে। উদাহরণস্বরূপ সহজ স্লাইডিং উইণ্ডোঃ স্টপ-অ্যান্ড-ওয়েট যদিও সাধারণত স্লাইডিং-উইন্ডো প্রোটোকল থেকে আলাদা, স্টপ-অ্যান্ড-ওয়েট এআরকিউ প্রোটোকল আসলে এটির সহজতম সম্ভাব্য বাস্তবায়ন। ট্রান্সমিট উইন্ডোটি হল 1 প্যাকেট এবং রিসিভ উইন্ডোটি হল 1 প্যাকেট। সুতরাং, এন = 2 সম্ভাব্য ক্রম সংখ্যা (সুবিধামত একটি বিট দ্বারা প্রতিনিধিত্ব করা) প্রয়োজন। অস্পষ্টতার উদাহরণ ট্রান্সমিটার পর্যায়ক্রমে "বিজোড়" এবং "জোড়" চিহ্নিত প্যাকেট পাঠায়। স্বীকৃতিগুলি একইভাবে "অদ্ভুত" এবং "জোড়" বলে। ধরুন যে ট্রান্সমিটারটি একটি বিজোড় প্যাকেট পাঠিয়েছে, একটি বিজোড় স্বীকৃতির জন্য অপেক্ষা করেনি এবং পরিবর্তে অবিলম্বে নিম্নলিখিত জোড় প্যাকেটটি পাঠিয়েছে। এরপরে এটি একটি স্বীকৃতি পেতে পারে যে "পরবর্তী একটি অদ্ভুত প্যাকেটের প্রত্যাশা"। এটি ট্রান্সমিটারটিকে একটি দ্বিধায় ফেলে দেবেঃ রিসিভার কি উভয় প্যাকেটই পেয়েছে, নাকি দুটোই পায়নি? গো-ব্যাক-এন গো-ব্যাক-এন এআরকিউ হল স্লাইডিং উইন্ডো প্রোটোকল যা ডাব্লুটি> 1, কিন্তু একটি নির্দিষ্ট ডাব্লুআর = 1। রিসিভার কোনও প্যাকেট গ্রহণ করতে অস্বীকার করে তবে পরেরটি ক্রমানুসারে। যদি ট্রানজিটের সময় একটি প্যাকেট হারিয়ে যায়, তবে নিম্নলিখিত প্যাকেটগুলি উপেক্ষা করা হয় যতক্ষণ না হারিয়ে যাওয়া প্যাকেটটি পুনরায় প্রেরণ করা হয়, সর্বনিম্ন এক রাউন্ড-ট্রিপ সময়ের ক্ষতি। এই কারণে, যে লিঙ্কগুলি ঘন ঘন প্যাকেটের ক্ষতির সম্মুখীন হয় সেগুলিতে এটি অকার্যকর। অস্পষ্টতার উদাহরণ ধরুন আমরা একটি 3-বিট ক্রম সংখ্যা ব্যবহার করছি, যেমন এইচ. ডি. এল. সি-র জন্য সাধারণ। এর থেকে N = 23 = 8 পাওয়া যায়। যেহেতু ডাব্লুআর = 1, তাই আমাদের অবশ্যই ডাব্লুটি ≤ 7 সীমাবদ্ধ করতে হবে। কারণ, 7টি প্যাকেট পাঠানোর পর 8টি সম্ভাব্য ফলাফল পাওয়া যেতে পারেঃ 0 থেকে 7টি প্যাকেট যে কোনও জায়গায় সফলভাবে পাওয়া যেতে পারত। এটি 8টি সম্ভাবনা, এবং ট্রান্সমিটারের স্বীকৃতিতে যথেষ্ট তথ্যের প্রয়োজন যাতে সেগুলির মধ্যে পার্থক্য করা যায়। যদি ট্রান্সমিটারটি স্বীকৃতির জন্য অপেক্ষা না করে 8টি প্যাকেট পাঠায়, তবে এটি স্টপ-অ্যান্ড-ওয়েট মামলার মতো একটি দ্বিধায় নিজেকে খুঁজে পেতে পারেঃ স্বীকৃতির অর্থ কি এই যে সমস্ত 8টি প্যাকেট সফলভাবে গ্রহণ করা হয়েছে, নাকি তাদের কোনওটিই নয়? সিলেক্টিভ রিপিট স্লাইডিং উইন্ডো প্রোটোকলের সবচেয়ে সাধারণ কেস হল সিলেক্টিভ রিপিট এআরকিউ। এর জন্য অনেক বেশি সক্ষম রিসিভারের প্রয়োজন, যা বর্তমান এনআর-এর চেয়ে বেশি ক্রম সংখ্যা সহ প্যাকেটগুলি গ্রহণ করতে পারে এবং ফাঁক পূরণ না হওয়া পর্যন্ত সেগুলি সংরক্ষণ করতে পারে। তবে, সুবিধাটি হ 'ল ট্রান্সমিটারকে পুনরায় সম্প্রচারের প্রয়োজন সম্পর্কে অবহিত করার আগে এক রাউন্ড-ট্রিপ সময়ের জন্য নিম্নলিখিত সঠিক তথ্যগুলি ফেলে দেওয়ার প্রয়োজন নেই। তাই কম নির্ভরযোগ্যতা এবং/অথবা উচ্চ ব্যান্ডউইথ-বিলম্বিত পণ্যের লিঙ্কগুলির জন্য এটি পছন্দ করা হয়। উইন্ডোটির আকার কেবল ধারাবাহিকভাবে হারিয়ে যাওয়া প্যাকেটের সংখ্যার চেয়ে বড় হতে হবে যা সহ্য করা যায়। সুতরাং, ছোট মানগুলি জনপ্রিয়; ডাব্লুআর = 2 সাধারণ। অস্পষ্টতার উদাহরণ অত্যন্ত জনপ্রিয় এইচ. ডি. এল. সি প্রোটোকল একটি 3-বিট ক্রম সংখ্যা ব্যবহার করে এবং নির্বাচিত পুনরাবৃত্তির জন্য ঐচ্ছিক বিধান রয়েছে। তবে, যদি সিলেক্টিভ রিপিট ব্যবহার করতে হয়, তবে nt + nr ≤ 8-এর প্রয়োজনীয়তা বজায় রাখতে হবে; যদি ডাব্লুআর 2-এ বৃদ্ধি করা হয়, তবে ডাব্লুটি অবশ্যই 6-এ হ্রাস করতে হবে। ধরুন যে ডাব্লুআর = 2, তবে একটি অপরিবর্তিত ট্রান্সমিটার ডাব্লুটি = 7 এর সাথে ব্যবহৃত হয়, যেমনটি সাধারণত এইচডিএলসি-র গো-ব্যাক-এন বৈকল্পিকের সাথে ব্যবহৃত হয়। আরও ধরুন যে রিসিভারটি nr = ns = 0 দিয়ে শুরু হয়। এখন মনে করুন যে রিসিভার নিম্নলিখিত প্যাকেটগুলির সিরিজ দেখতে পায় (সমস্ত মডুলো 8): 0 1 2 3 4 5 6 (বিরতি) 0 কারণ ডাব্লুআর = 2, রিসিভার চূড়ান্ত প্যাকেট 0 গ্রহণ করবে এবং সংরক্ষণ করবে (এটি সিরিজের প্যাকেট 8 বলে মনে করে), প্যাকেট 7-এর পুনঃপ্রসারণের অনুরোধ করার সময়। যাইহোক, এটিও সম্ভব যে ট্রান্সমিটারটি কোনও স্বীকৃতি পেতে ব্যর্থ হয়েছে এবং প্যাকেট 0 পুনরায় প্রেরণ করেছে। এই পরবর্তী ক্ষেত্রে, রিসিভার ভুল প্যাকেটটিকে প্যাকেট 8 হিসাবে গ্রহণ করবে। সমাধানটি হল ট্রান্সমিটারের জন্য ডাব্লুটি ≤ 6 সীমাবদ্ধ করা। এই সীমাবদ্ধতার সাথে, রিসিভার জানে যে সমস্ত স্বীকৃতি হারিয়ে গেলে, প্যাকেট 5-এর পরে ট্রান্সমিটারটি বন্ধ হয়ে যেত। যখন এটি প্যাকেট 6 গ্রহণ করে, তখন রিসিভার অনুমান করতে পারে যে ট্রান্সমিটার প্যাকেট 0 (ট্রান্সমিটারের না ≤ 1) এর জন্য স্বীকৃতি পেয়েছে এবং এইভাবে নিম্নলিখিত প্যাকেটটি অবশ্যই প্যাকেট 8 হতে হবে। প্রটোকলটি প্রসারিত করার অনেক উপায় রয়েছেঃ উপরের উদাহরণগুলি ধরে নিয়েছে যে প্যাকেটগুলি কখনই সংক্রমণের সময় পুনরায় সাজানো হয় না; এগুলি পরিবহনের সময় হারিয়ে যেতে পারে (ত্রুটি সনাক্তকরণ দুর্নীতিকে ক্ষতির সমতুল্য করে তোলে), তবে কখনই ক্রমের বাইরে প্রদর্শিত হবে না। প্রোটোকলটি প্যাকেট পুনর্বিন্যাসকে সমর্থন করার জন্য প্রসারিত করা যেতে পারে, যতক্ষণ দূরত্ব সীমাবদ্ধ করা যায়; ক্রম সংখ্যা মডুলাস এন অবশ্যই সর্বাধিক ভুল ক্রম দূরত্ব দ্বারা প্রসারিত করা উচিত। প্রতিটি প্যাকেটকে স্বীকৃতি না দেওয়া সম্ভব, যতক্ষণ বিরতি থাকলে অবশেষে একটি স্বীকৃতি পাঠানো হয়। উদাহরণস্বরূপ, টিসিপি সাধারণত প্রতিটি দ্বিতীয় প্যাকেটকে স্বীকৃতি দেয়। প্যাকেটের ক্রমের মধ্যে কোনও ফাঁক ধরা পড়লে ট্রান্সমিটারকে অবিলম্বে অবহিত করা সাধারণ ব্যাপার। এর জন্য এইচ. ডি. এল. সি-র একটি বিশেষ আর. ই. জে (প্রত্যাখ্যান) প্যাকেট রয়েছে। যোগাযোগের সময় প্রেরণ এবং গ্রহণ উইন্ডোর আকার পরিবর্তন করা যেতে পারে, যতক্ষণ না তাদের যোগফল এন-এর সীমার মধ্যে থাকে। সাধারণত, তাদের প্রত্যেককে সর্বোচ্চ মান দেওয়া হয় যা সেই সীমাকে সম্মান করে, তবে যে কোনও নির্দিষ্ট সময়ে কার্যকরী মান সর্বোচ্চের চেয়ে কম হতে পারে। বিশেষতঃ স্যাচুরেশন বা যানজট এড়াতে লিঙ্কের গতির সাথে মেলাতে ট্রান্সমিশনকে ধীর করার জন্য ট্রান্সমিট উইন্ডোর আকার হ্রাস করা সাধারণ। সিলেক্টিভ-রিপিটের একটি সাধারণ সরলীকরণকে বলা হয় এস. আর. ই. জে-আর. ই. জে এ. আর. কিউ। এটি একটি ফাঁক অনুসরণ করে ডাব্লুআর = 2 এবং বাফারের প্যাকেটগুলির সাথে কাজ করে, তবে শুধুমাত্র একটি হারিয়ে যাওয়া প্যাকেটের অনুমতি দেয়; সেই প্যাকেটের জন্য অপেক্ষা করার সময়, ডাব্লুআর = 1 এবং যদি দ্বিতীয় প্যাকেটটি হারিয়ে যায় তবে আর কোনও প্যাকেট বাফার করা হয় না। এটি একটি সহজ বাস্তবায়নের সাথে সম্পূর্ণ সিলেক্টিভ-রিপিট প্রোটোকলের বেশিরভাগ পারফরম্যান্স সুবিধা দেয়। আরও দেখুন ফেডারেল স্ট্যান্ডার্ড 1037সি কম্পাউন্ড টিসিপি সিরিয়াল নম্বর গাণিতিক টিসিপি ফাস্ট ওপেন রেফারেন্স কমার, ডগলাস ই. "টিসিপি/আইপি-এর সাথে ইন্টারনেট ওয়ার্কিং, ভলিউম 1: নীতি, প্রোটোকল এবং আর্কিটেকচার", প্রেন্টিস হল, 1995। বাহ্যিক লিঙ্ক আরএফসি 1323-উচ্চ কার্যকারিতা টিসিপি উইন্ডো স্কেলিং এবং ভাঙা রাউটারের জন্য টিসিপি এক্সটেনশন, 2004 যোগাযোগ ডেটা ট্রান্সমিশন