TCP (Transmission Control Protocol) কিভাবে প্যাকেট হালনাগাদ করে এবং নির্ভরযোগ্য ডেটা স্থানান্তর নিশ্চিত করে, তা নিচে বিস্তারিত আলোচনা করা হলো:
TCP একটি "কানেকশন-ওরিয়েন্টেড" প্রোটোকল। এর মানে হলো, ডেটা পাঠানোর আগে প্রেরক (sender) এবং প্রাপকের (receiver) মধ্যে একটি ভার্চুয়াল সংযোগ স্থাপন করা হয়। এই সংযোগ স্থাপনের মাধ্যমে TCP ডেটা স্থানান্তরের নির্ভরযোগ্যতা নিশ্চিত করে।
TCP এর প্রধান বৈশিষ্ট্য যা নির্ভরযোগ্য ডেটা স্থানান্তর নিশ্চিত করে:
* থ্রি-ওয়ে হ্যান্ডশেক (Three-Way Handshake): TCP সংযোগ স্থাপনের জন্য থ্রি-ওয়ে হ্যান্ডশেক নামক একটি প্রক্রিয়া ব্যবহার করে। এই প্রক্রিয়ার মাধ্যমে প্রেরক এবং প্রাপক উভয়েই সংযোগের জন্য প্রস্তুত কিনা তা নিশ্চিত করা হয়। তিনটি ধাপ হলো:
* SYN (Synchronize): প্রেরক প্রাপকের কাছে একটি SYN প্যাকেট পাঠায়, যা সংযোগ স্থাপনের অনুরোধ জানায়।
* SYN-ACK (Synchronize-Acknowledge): প্রাপক প্রেরকের SYN প্যাকেট পেয়ে একটি SYN-ACK প্যাকেট পাঠায়, যা সংযোগ স্থাপনের সম্মতি জানায়।
* ACK (Acknowledgement): প্রেরক প্রাপকের SYN-ACK প্যাকেট পেয়ে একটি ACK প্যাকেট পাঠায়, যা সংযোগ স্থাপন সম্পন্ন করে।
* সিকোয়েন্স নাম্বারিং (Sequence Numbering): TCP প্রতিটি ডেটা প্যাকেটের সাথে একটি সিকোয়েন্স নাম্বার যুক্ত করে। এই নাম্বার দিয়ে প্রাপক বুঝতে পারে কোন প্যাকেটের পর কোন প্যাকেট আসবে এবং প্যাকেটগুলো সঠিক ক্রমে সাজানো আছে কিনা।
* অ্যাকনলেজমেন্ট (Acknowledgement): প্রাপক প্রতিটি সফলভাবে প্রাপ্ত প্যাকেটের জন্য প্রেরককে একটি ACK প্যাকেট পাঠায়। এই ACK প্যাকেট দিয়ে প্রেরক জানতে পারে যে প্যাকেটটি নিরাপদে পৌঁছেছে।
* টাইমআউট এবং রিট্রান্সমিশন (Timeout and Retransmission): প্রেরক একটি নির্দিষ্ট সময় পর্যন্ত ACK প্যাকেটের জন্য অপেক্ষা করে। যদি এই সময়ের মধ্যে ACK না আসে, তাহলে প্রেরক ধরে নেয় যে প্যাকেটটি হারিয়ে গেছে এবং সেটি পুনরায় পাঠায়।
* ফ্লো কন্ট্রোল (Flow Control): TCP ফ্লো কন্ট্রোল মেকানিজমের মাধ্যমে প্রেরকের ডেটা পাঠানোর গতি নিয়ন্ত্রণ করে, যাতে প্রাপক অতিরিক্ত ডেটা গ্রহণ করতে গিয়ে সমস্যায় না পড়ে। এটি "স্লাইডিং উইন্ডো" নামক একটি পদ্ধতির মাধ্যমে করা হয়।
* কনজেশন কন্ট্রোল (Congestion Control): TCP নেটওয়ার্কের কনজেশন (congestion) বা জ্যাম নিয়ন্ত্রণ করে। যদি নেটওয়ার্কে বেশি জ্যাম থাকে, তাহলে প্রেরক ডেটা পাঠানোর গতি কমিয়ে দেয়, যাতে নেটওয়ার্ক আরও বেশি জ্যাম না হয়।
কিভাবে TCP প্যাকেট হালনাগাদ করে:
TCP সরাসরি প্যাকেট হালনাগাদ করে না। বরং, যদি কোনো প্যাকেট হারিয়ে যায় বা ক্ষতিগ্রস্ত হয়, তাহলে TCP সেই প্যাকেট পুনরায় পাঠায়। এই প্রক্রিয়াটি নিম্নলিখিতভাবে কাজ করে:
* প্রেরক ডেটা প্যাকেট পাঠায় এবং একটি টাইমার শুরু করে।
* যদি নির্দিষ্ট সময়ের মধ্যে প্রাপকের কাছ থেকে ACK না আসে, তাহলে টাইমার শেষ হয়ে যায়।
* টাইমার শেষ হলে প্রেরক ধরে নেয় যে প্যাকেটটি হারিয়ে গেছে এবং সেটি পুনরায় পাঠায়।
* প্রাপক যদি ডুপ্লিকেট প্যাকেট পায় (অর্থাৎ একই সিকোয়েন্স নাম্বারের প্যাকেট), তাহলে সেটি ডিসকার্ড করে দেয় এবং প্রেরককে একটি ACK পাঠায়।
এইভাবে TCP বিভিন্ন পদ্ধতির মাধ্যমে ডেটা স্থানান্তরের নির্ভরযোগ্যতা নিশ্চিত করে। থ্রি-ওয়ে হ্যান্ডশেক দিয়ে সংযোগ স্থাপন, সিকোয়েন্স নাম্বারিং দিয়ে প্যাকেটের ক্রম ঠিক রাখা, ACK দিয়ে প্যাকেটের প্রাপ্তি নিশ্চিত করা, টাইমআউট এবং রিট্রান্সমিশন দিয়ে হারানো প্যাকেট পুনরুদ্ধার করা, ফ্লো কন্ট্রোল দিয়ে প্রাপকের ক্ষমতা অনুযায়ী ডেটা পাঠানো, এবং কনজেশন কন্ট্রোল দিয়ে নেটওয়ার্কের জ্যাম নিয়ন্ত্রণ করা — এই সবই TCP এর নির্ভরযোগ্য ডেটা স্থানান্তরের গুরুত্বপূর্ণ অংশ।