টিসিপির গোপন অস্ত্র: নেটওয়ার্ক ফ্লো নিয়ন্ত্রণ এবং নেটওয়ার্ক কনজেশন নিয়ন্ত্রণ

টিসিপি নির্ভরযোগ্যতা পরিবহন
আমরা সকলেই একটি নির্ভরযোগ্য পরিবহন প্রোটোকল হিসেবে TCP প্রোটোকলের সাথে পরিচিত, কিন্তু এটি কীভাবে পরিবহনের নির্ভরযোগ্যতা নিশ্চিত করে?

নির্ভরযোগ্য ট্রান্সমিশন অর্জনের জন্য, অনেকগুলি বিষয় বিবেচনা করা প্রয়োজন, যেমন ডেটা দুর্নীতি, ক্ষতি, অনুলিপি এবং অকার্যকর শার্ড। যদি এই সমস্যাগুলি সমাধান করা না যায়, তাহলে নির্ভরযোগ্য ট্রান্সমিশন অর্জন করা সম্ভব হবে না।

অতএব, নির্ভরযোগ্য ট্রান্সমিশন অর্জনের জন্য TCP সিকোয়েন্স নম্বর, স্বীকৃতি উত্তর, পুনঃপ্রেরণ নিয়ন্ত্রণ, সংযোগ ব্যবস্থাপনা এবং উইন্ডো নিয়ন্ত্রণের মতো প্রক্রিয়া ব্যবহার করে।

এই প্রবন্ধে, আমরা TCP-এর স্লাইডিং উইন্ডো, প্রবাহ নিয়ন্ত্রণ এবং কনজেশন নিয়ন্ত্রণের উপর আলোকপাত করব। পরবর্তী বিভাগে পুনঃপ্রচার প্রক্রিয়াটি আলাদাভাবে আলোচনা করা হয়েছে।

নেটওয়ার্ক ফ্লো নিয়ন্ত্রণ
নেটওয়ার্ক ফ্লো কন্ট্রোল বা নেটওয়ার্ক ট্র্যাফিক কন্ট্রোল নামে পরিচিত আসলে উৎপাদক এবং ভোক্তাদের মধ্যে সূক্ষ্ম সম্পর্কের একটি প্রকাশ। আপনি সম্ভবত কর্মক্ষেত্রে বা সাক্ষাৎকারে এই দৃশ্যের মুখোমুখি হয়েছেন। যদি উৎপাদকের উৎপাদন ক্ষমতা গ্রাহকের উৎপাদন ক্ষমতার চেয়ে অনেক বেশি হয়, তাহলে এটি অনির্দিষ্টকালের জন্য সারি বৃদ্ধি করবে। আরও গুরুতর ক্ষেত্রে, আপনি হয়তো জানেন যে যখন RabbitMQ বার্তাগুলি খুব বেশি পরিমাণে জমা হয়, তখন এটি সমগ্র MQ সার্ভারের কর্মক্ষমতা হ্রাস করতে পারে। TCP-এর ক্ষেত্রেও একই কথা প্রযোজ্য; যদি চেক না করা হয়, তাহলে নেটওয়ার্কে অনেক বেশি বার্তা প্রবেশ করবে এবং ভোক্তারা তাদের ক্ষমতা অতিক্রম করবে, অন্যদিকে উৎপাদকরা ডুপ্লিকেট বার্তা পাঠাতে থাকবে, যা নেটওয়ার্কের কর্মক্ষমতাকে ব্যাপকভাবে প্রভাবিত করবে।

এই ঘটনাটি মোকাবেলা করার জন্য, TCP প্রেরকের জন্য একটি ব্যবস্থা প্রদান করে যা রিসিভারের প্রকৃত গ্রহণ ক্ষমতার উপর ভিত্তি করে প্রেরিত ডেটার পরিমাণ নিয়ন্ত্রণ করে, যা প্রবাহ নিয়ন্ত্রণ নামে পরিচিত। রিসিভার একটি গ্রহণ উইন্ডো বজায় রাখে, যখন প্রেরক একটি প্রেরণ উইন্ডো বজায় রাখে। এটি লক্ষ করা উচিত যে এই উইন্ডোজগুলি শুধুমাত্র একটি একক TCP সংযোগের জন্য এবং সমস্ত সংযোগ একটি উইন্ডো ভাগ করে না।

TCP একটি রিসিভ উইন্ডোর জন্য একটি ভেরিয়েবল ব্যবহার করে প্রবাহ নিয়ন্ত্রণ প্রদান করে। রিসিভ উইন্ডো প্রেরককে একটি ইঙ্গিত দেয় যে এখনও কতটা ক্যাশে স্থান খালি আছে। প্রেরক রিসিভারের প্রকৃত গ্রহণ ক্ষমতা অনুসারে প্রেরিত ডেটার পরিমাণ নিয়ন্ত্রণ করে।

রিসিভার হোস্ট প্রেরককে তথ্য গ্রহণের আকার সম্পর্কে অবহিত করে এবং প্রেরক এই সীমা পর্যন্ত পাঠায়। এই সীমা হল উইন্ডোর আকার, TCP হেডারটি মনে রাখবেন? একটি রিসিভ উইন্ডো ক্ষেত্র রয়েছে, যা রিসিভার কত বাইটের বাইট গ্রহণ করতে সক্ষম বা ইচ্ছুক তা নির্দেশ করতে ব্যবহৃত হয়।

প্রেরক হোস্ট পর্যায়ক্রমে একটি উইন্ডো প্রোব প্যাকেট পাঠাবে, যা রিসিভার হোস্ট এখনও ডেটা গ্রহণ করতে সক্ষম কিনা তা সনাক্ত করতে ব্যবহৃত হয়। যখন রিসিভারের বাফার উপচে পড়ার ঝুঁকিতে থাকে, তখন প্রেরককে প্রেরিত ডেটার পরিমাণ নিয়ন্ত্রণ করার নির্দেশ দেওয়ার জন্য উইন্ডোর আকার একটি ছোট মান সেট করা হয়।

এখানে একটি নেটওয়ার্ক ফ্লো কন্ট্রোল ডায়াগ্রাম রয়েছে:

ট্রাফিক নিয়ন্ত্রণ

নেটওয়ার্ক কনজেশন নিয়ন্ত্রণ
কনজেশন নিয়ন্ত্রণ প্রবর্তনের আগে, আমাদের বুঝতে হবে যে রিসিভ উইন্ডো এবং সেন্ড উইন্ডো ছাড়াও, একটি কনজেশন উইন্ডোও রয়েছে, যা মূলত প্রেরক কত হারে রিসিভ উইন্ডোতে ডেটা পাঠাতে শুরু করে তার সমস্যা সমাধানের জন্য ব্যবহৃত হয়। অতএব, কনজেশন উইন্ডোটি টিসিপি প্রেরক দ্বারাও রক্ষণাবেক্ষণ করা হয়। কতটা ডেটা পাঠানো উপযুক্ত তা নির্ধারণ করার জন্য আমাদের একটি অ্যালগরিদম প্রয়োজন, যেহেতু খুব কম বা খুব বেশি ডেটা পাঠানো আদর্শ নয়, তাই কনজেশন উইন্ডোর ধারণাটি তৈরি হয়েছে।

পূর্ববর্তী নেটওয়ার্ক প্রবাহ নিয়ন্ত্রণে, আমরা যা এড়িয়ে গিয়েছিলাম তা হল প্রেরক রিসিভারের ক্যাশে ডেটা দিয়ে পূরণ করছিলেন, কিন্তু আমরা জানতাম না যে নেটওয়ার্কে কী ঘটছে। সাধারণত, কম্পিউটার নেটওয়ার্কগুলি একটি ভাগ করা পরিবেশে থাকে। ফলস্বরূপ, অন্যান্য হোস্টের মধ্যে যোগাযোগের কারণে নেটওয়ার্ক কনজেশন হতে পারে।

যখন নেটওয়ার্কে ভিড় থাকে, তখন যদি প্রচুর সংখ্যক প্যাকেট পাঠানো অব্যাহত থাকে, তাহলে এটি বিলম্ব এবং প্যাকেট হারিয়ে যাওয়ার মতো সমস্যার সৃষ্টি করতে পারে। এই মুহুর্তে, TCP ডেটা পুনঃপ্রেরণ করবে, কিন্তু পুনঃপ্রেরণ নেটওয়ার্কের উপর বোঝা বাড়িয়ে দেবে, যার ফলে আরও বেশি বিলম্ব হবে এবং আরও বেশি প্যাকেট ক্ষতি হবে। এটি একটি দুষ্টচক্রের মধ্যে পড়ে যেতে পারে এবং ক্রমশ বড় হতে পারে।

সুতরাং, নেটওয়ার্কে যা ঘটছে তা TCP উপেক্ষা করতে পারে না। যখন নেটওয়ার্কে ভিড় থাকে, তখন TCP ডেটা প্রেরণের পরিমাণ হ্রাস করে নিজেকে উৎসর্গ করে।

অতএব, কনজেশন নিয়ন্ত্রণ প্রস্তাব করা হয়েছে, যার লক্ষ্য হল প্রেরকের কাছ থেকে তথ্য দিয়ে পুরো নেটওয়ার্ক ভরাট করা এড়ানো। প্রেরকের পাঠানো তথ্যের পরিমাণ নিয়ন্ত্রণ করার জন্য, TCP কনজেশন উইন্ডো নামে একটি ধারণা সংজ্ঞায়িত করে। কনজেশন নিয়ন্ত্রণ অ্যালগরিদম নেটওয়ার্কের কনজেশনের মাত্রা অনুসারে কনজেশন উইন্ডোর আকার সামঞ্জস্য করবে, যাতে প্রেরকের পাঠানো তথ্যের পরিমাণ নিয়ন্ত্রণ করা যায়।

কনজেশন উইন্ডো কী? এর সাথে সেন্ড উইন্ডোর কী সম্পর্ক?

কনজেশন উইন্ডো হল প্রেরক দ্বারা পরিচালিত একটি স্টেট ভ্যারিয়েবল যা প্রেরক কত ডেটা পাঠাতে পারবেন তা নির্ধারণ করে। নেটওয়ার্কের কনজেশন লেভেল অনুসারে কনজেশন উইন্ডোটি গতিশীলভাবে পরিবর্তিত হয়।

সেন্ডিং উইন্ডো হলো প্রেরক এবং প্রাপকের মধ্যে একটি সম্মত উইন্ডোর আকার যা নির্দেশ করে যে প্রাপক কতটা ডেটা গ্রহণ করতে পারবেন। কনজেশন উইন্ডো এবং সেন্ডিং উইন্ডো সম্পর্কিত; সেন্ডিং উইন্ডো সাধারণত কনজেশন এবং রিসিভিং উইন্ডোজের ন্যূনতম সমান হয়, অর্থাৎ, swnd = min(cwnd, rwnd)।

কনজেশন উইন্ডো cwnd নিম্নলিখিতভাবে পরিবর্তিত হয়:

যদি নেটওয়ার্কে কোনও যানজট না থাকে, অর্থাৎ, কোনও পুনঃপ্রচারের সময়সীমা না ঘটে, তাহলে যানজট উইন্ডো বৃদ্ধি পায়।

নেটওয়ার্কে যানজট থাকলে, যানজটের সময়সীমা কমে যায়।

নির্দিষ্ট সময়ের মধ্যে ACK স্বীকৃতি প্যাকেটটি গৃহীত হয়েছে কিনা তা পর্যবেক্ষণ করে প্রেরক নেটওয়ার্কে যানজট আছে কিনা তা নির্ধারণ করেন। যদি প্রেরক নির্দিষ্ট সময়ের মধ্যে ACK স্বীকৃতি প্যাকেটটি গ্রহণ না করেন, তাহলে নেটওয়ার্কটি যানজটযুক্ত বলে বিবেচিত হবে।

কনজেশন উইন্ডো ছাড়াও, টিসিপি কনজেশন নিয়ন্ত্রণ অ্যালগরিদম নিয়ে আলোচনা করার সময় এসেছে। টিসিপি কনজেশন নিয়ন্ত্রণ অ্যালগরিদম তিনটি প্রধান অংশ নিয়ে গঠিত:

ধীরগতির শুরু:প্রাথমিকভাবে, cwnd কনজেশন উইন্ডো তুলনামূলকভাবে ছোট, এবং প্রেরক নেটওয়ার্কের ক্ষমতার সাথে দ্রুত খাপ খাইয়ে নিতে কনজেশন উইন্ডোটি দ্রুত বৃদ্ধি করে।
যানজট এড়ানো:কনজেশন উইন্ডো একটি নির্দিষ্ট সীমা অতিক্রম করার পরে, প্রেরক কনজেশন উইন্ডোর বৃদ্ধির হার কমাতে এবং নেটওয়ার্কের ওভারলোডিং এড়াতে একটি রৈখিক পদ্ধতিতে কনজেশন উইন্ডো বৃদ্ধি করে।
দ্রুত আরোগ্য:যদি কনজেশন দেখা দেয়, তাহলে প্রেরক কনজেশন উইন্ডোটি অর্ধেক করে দেয় এবং প্রাপ্ত ডুপ্লিকেট অ্যাকাউন্টগুলির মাধ্যমে নেটওয়ার্ক পুনরুদ্ধারের অবস্থান নির্ধারণের জন্য দ্রুত পুনরুদ্ধার অবস্থায় প্রবেশ করে এবং তারপর কনজেশন উইন্ডোটি বৃদ্ধি করতে থাকে।

ধীরগতির শুরু
যখন একটি TCP সংযোগ স্থাপন করা হয়, তখন কনজেশন উইন্ডো cwnd প্রাথমিকভাবে একটি ন্যূনতম MSS (সর্বোচ্চ সেগমেন্ট সাইজ) মান নির্ধারণ করা হয়। এইভাবে, প্রাথমিক প্রেরণ হার প্রায় MSS/RTT বাইট/সেকেন্ড। প্রকৃত উপলব্ধ ব্যান্ডউইথ সাধারণত MSS/RTT এর চেয়ে অনেক বেশি হয়, তাই TCP সর্বোত্তম প্রেরণ হার খুঁজে পেতে চায়, যা ধীর-শুরু মাধ্যমে অর্জন করা যেতে পারে।

ধীর-প্রারম্ভিক প্রক্রিয়ায়, কনজেশন উইন্ডো cwnd এর মান 1 MSS এ শুরু করা হবে এবং প্রতিবার ট্রান্সমিটেড প্যাকেট সেগমেন্ট স্বীকার করার সময়, cwnd এর মান এক MSS বৃদ্ধি পাবে, অর্থাৎ, cwnd এর মান 2 MSS হয়ে যাবে। এরপর, একটি প্যাকেট সেগমেন্টের প্রতিটি সফল ট্রান্সমিশনের জন্য cwnd এর মান দ্বিগুণ করা হবে, ইত্যাদি। নির্দিষ্ট বৃদ্ধি প্রক্রিয়াটি নিম্নলিখিত চিত্রে দেখানো হয়েছে।

 নেটওয়ার্ক কনজেশন নিয়ন্ত্রণ

তবে, প্রেরণের হার সবসময় বাড়তে পারে না; বৃদ্ধি একসময় শেষ হতে হবে। তাহলে, প্রেরণের হার বৃদ্ধি কখন শেষ হবে? ধীর-প্রারম্ভ সাধারণত প্রেরণের হার বৃদ্ধিকে বিভিন্ন উপায়ের একটিতে শেষ করে:

প্রথম উপায় হল ধীরগতির স্টার্ট সেন্ডিং প্রক্রিয়ার সময় প্যাকেট নষ্ট হয়ে যাওয়া। যখন প্যাকেট নষ্ট হয়, তখন TCP প্রেরকের কনজেশন উইন্ডো cwnd কে 1 এ সেট করে এবং স্লো-স্টার্ট প্রক্রিয়াটি পুনরায় চালু করে। এই পর্যায়ে, স্লো স্টার্ট থ্রেশহোল্ড ssthresh এর একটি ধারণা চালু করা হয়, যার প্রাথমিক মান cwnd এর মানের অর্ধেক যা প্যাকেট লস তৈরি করে। অর্থাৎ, যখন কনজেশন সনাক্ত করা হয়, তখন ssthresh এর মান উইন্ডো মানের অর্ধেক হয়।

দ্বিতীয় উপায় হল স্লো-স্টার্ট থ্রেশহোল্ড ssthrash এর মানের সাথে সরাসরি সম্পর্ক স্থাপন করা। যেহেতু কনজেশন সনাক্ত হওয়ার সময় ssthresh এর মান উইন্ডো মানের অর্ধেক, তাই cwnd ssthresh এর চেয়ে বড় হলে প্রতিটি দ্বিগুণ হওয়ার সাথে সাথে প্যাকেট লস হতে পারে। অতএব, cwnd কে ssthresh এ সেট করা ভাল, যার ফলে TCP কনজেশন কন্ট্রোল মোডে স্যুইচ করবে এবং স্লো-স্টার্ট শেষ করবে।

ধীরগতির শুরু শেষ করার শেষ উপায় হল যদি তিনটি অপ্রয়োজনীয় অ্যাক সনাক্ত করা হয়, তাহলে TCP দ্রুত পুনঃপ্রেরণ সম্পাদন করে এবং পুনরুদ্ধার অবস্থায় প্রবেশ করে। (যদি তিনটি ACK প্যাকেট কেন তা স্পষ্ট না হয়, তাহলে পুনঃপ্রেরণ প্রক্রিয়ায় এটি আলাদাভাবে ব্যাখ্যা করা হবে।)

যানজট এড়ানো
যখন TCP কনজেশন কন্ট্রোল অবস্থায় প্রবেশ করে, তখন cwnd কনজেশন থ্রেশহোল্ড ssthrash এর অর্ধেকে সেট করা হয়। এর অর্থ হল প্রতিবার প্যাকেট সেগমেন্ট গ্রহণের সময় cwnd এর মান দ্বিগুণ করা যায় না। পরিবর্তে, একটি অপেক্ষাকৃত রক্ষণশীল পদ্ধতি গ্রহণ করা হয় যেখানে প্রতিটি ট্রান্সমিশন সম্পন্ন হওয়ার পরে cwnd এর মান শুধুমাত্র একটি MSS (সর্বোচ্চ প্যাকেট সেগমেন্ট দৈর্ঘ্য) দ্বারা বৃদ্ধি করা হয়। উদাহরণস্বরূপ, 10টি প্যাকেট সেগমেন্ট স্বীকার করা হলেও, cwnd এর মান শুধুমাত্র একটি MSS দ্বারা বৃদ্ধি পাবে। এটি একটি রৈখিক বৃদ্ধি মডেল এবং এর বৃদ্ধির উপর একটি উচ্চতর সীমাও রয়েছে। যখন প্যাকেট ক্ষতি ঘটে, তখন cwnd এর মান একটি MSS এ পরিবর্তিত হয় এবং ssthresh এর মান cwnd এর অর্ধেকে সেট করা হয়। অথবা 3টি অপ্রয়োজনীয় ACK প্রতিক্রিয়া প্রাপ্ত হলে এটি MSS এর বৃদ্ধিও বন্ধ করে দেবে। cwnd এর মান অর্ধেক করার পরেও যদি তিনটি অপ্রয়োজনীয় acks প্রাপ্ত হয়, তাহলে ssthresh এর মান cwnd এর অর্ধেক মানের হিসাবে রেকর্ড করা হয় এবং দ্রুত পুনরুদ্ধারের অবস্থা প্রবেশ করানো হয়।

দ্রুত আরোগ্য
দ্রুত পুনরুদ্ধার অবস্থায়, প্রতিটি প্রাপ্ত অপ্রয়োজনীয় ACK এর জন্য, অর্থাৎ, ক্রমানুসারে না আসা ACK এর জন্য কনজেশন উইন্ডো cwnd এর মান একটি MSS বৃদ্ধি করা হয়। এটি নেটওয়ার্কে সফলভাবে প্রেরণ করা প্যাকেট অংশগুলিকে ব্যবহার করে ট্রান্সমিশন দক্ষতা যতটা সম্ভব উন্নত করার জন্য করা হয়।

যখন হারিয়ে যাওয়া প্যাকেট সেগমেন্টের একটি ACK আসে, তখন TCP cwnd এর মান হ্রাস করে এবং তারপর কনজেশন এভয়েডেন্স অবস্থায় প্রবেশ করে। এটি কনজেশন উইন্ডোর আকার নিয়ন্ত্রণ করতে এবং নেটওয়ার্ক কনজেশন আরও বৃদ্ধি এড়াতে করা হয়।

কনজেশন কন্ট্রোল স্টেটের পরে যদি টাইমআউট হয়, তাহলে নেটওয়ার্কের অবস্থা আরও গুরুতর হয়ে ওঠে এবং TCP কনজেশন এভয়েডেন্স স্টেট থেকে স্লো-স্টার্ট স্টেটে স্থানান্তরিত হয়। এই ক্ষেত্রে, কনজেশন উইন্ডো cwnd এর মান 1 MSS, সর্বোচ্চ প্যাকেট সেগমেন্ট দৈর্ঘ্য এবং স্লো-স্টার্ট থ্রেশহোল্ড ssthresh এর মান cwnd এর অর্ধেক সেট করা হয়। এর উদ্দেশ্য হল নেটওয়ার্ক পুনরুদ্ধারের পরে কনজেশন উইন্ডোর আকার ধীরে ধীরে বৃদ্ধি করা যাতে ট্রান্সমিশন রেট এবং নেটওয়ার্ক কনজেশনের মাত্রার ভারসাম্য বজায় থাকে।

সারাংশ
একটি নির্ভরযোগ্য পরিবহন প্রোটোকল হিসেবে, TCP নির্ভরযোগ্য পরিবহন পদ্ধতি প্রয়োগ করে ক্রম সংখ্যা, স্বীকৃতি, পুনঃপ্রেরণ নিয়ন্ত্রণ, সংযোগ ব্যবস্থাপনা এবং উইন্ডো নিয়ন্ত্রণ দ্বারা। এর মধ্যে, প্রবাহ নিয়ন্ত্রণ ব্যবস্থা প্রেরকের দ্বারা প্রেরিত ডেটার পরিমাণ নিয়ন্ত্রণ করে রিসিভারের প্রকৃত গ্রহণ ক্ষমতা অনুসারে, যা নেটওয়ার্ক কনজেশন এবং কর্মক্ষমতা হ্রাসের সমস্যা এড়ায়। কনজেশন নিয়ন্ত্রণ ব্যবস্থা প্রেরকের দ্বারা প্রেরিত ডেটার পরিমাণ সামঞ্জস্য করে নেটওয়ার্ক কনজেশনের ঘটনা এড়ায়। কনজেশন উইন্ডো এবং সেন্ডিং উইন্ডোর ধারণাগুলি একে অপরের সাথে সম্পর্কিত, এবং কনজেশন উইন্ডোর আকার গতিশীলভাবে সামঞ্জস্য করে প্রেরকের কাছে ডেটার পরিমাণ নিয়ন্ত্রণ করা হয়। ধীরগতির শুরু, কনজেশন এড়ানো এবং দ্রুত পুনরুদ্ধার হল TCP কনজেশন নিয়ন্ত্রণ অ্যালগরিদমের তিনটি প্রধান অংশ, যা নেটওয়ার্কের ক্ষমতা এবং কনজেশন ডিগ্রির সাথে খাপ খাইয়ে নিতে বিভিন্ন কৌশলের মাধ্যমে কনজেশন উইন্ডোর আকার সামঞ্জস্য করে।

পরবর্তী বিভাগে, আমরা TCP-এর পুনঃপ্রেরণ প্রক্রিয়াটি বিস্তারিতভাবে পরীক্ষা করব। নির্ভরযোগ্য ট্রান্সমিশন অর্জনের জন্য পুনঃপ্রেরণ প্রক্রিয়া TCP-এর একটি গুরুত্বপূর্ণ অংশ। এটি হারিয়ে যাওয়া, দূষিত বা বিলম্বিত ডেটা পুনঃপ্রেরণ করে নির্ভরযোগ্য ডেটা ট্রান্সমিশন নিশ্চিত করে। পুনঃপ্রেরণ প্রক্রিয়ার বাস্তবায়ন নীতি এবং কৌশল পরবর্তী বিভাগে বিস্তারিতভাবে উপস্থাপন এবং বিশ্লেষণ করা হবে। সাথে থাকুন!


পোস্টের সময়: ফেব্রুয়ারী-২৪-২০২৫