TCP সংযোগ সেটআপ
যখন আমরা ওয়েব ব্রাউজ করি, একটি ইমেল পাঠাই, বা একটি অনলাইন গেম খেলি, তখন আমরা প্রায়শই এর পিছনে থাকা জটিল নেটওয়ার্ক সংযোগ সম্পর্কে চিন্তা করি না৷ যাইহোক, এটি এই আপাতদৃষ্টিতে ছোট পদক্ষেপ যা আমাদের এবং সার্ভারের মধ্যে স্থিতিশীল যোগাযোগ নিশ্চিত করে। সবচেয়ে গুরুত্বপূর্ণ পদক্ষেপগুলির মধ্যে একটি হল TCP সংযোগ সেটআপ, এবং এর মূল হল থ্রি-ওয়ে হ্যান্ডশেক।
এই নিবন্ধটি ত্রিমুখী হ্যান্ডশেকের নীতি, প্রক্রিয়া এবং গুরুত্ব সম্পর্কে বিস্তারিত আলোচনা করবে। ধাপে ধাপে, আমরা ব্যাখ্যা করব কেন ত্রিমুখী হ্যান্ডশেক প্রয়োজন, এটি কীভাবে সংযোগের স্থায়িত্ব এবং নির্ভরযোগ্যতা নিশ্চিত করে এবং ডেটা স্থানান্তরের জন্য এটি কতটা গুরুত্বপূর্ণ। ত্রি-মুখী হ্যান্ডশেক সম্পর্কে গভীর বোঝার সাথে, আমরা নেটওয়ার্ক যোগাযোগের অন্তর্নিহিত প্রক্রিয়াগুলির আরও ভাল ধারণা এবং TCP সংযোগগুলির নির্ভরযোগ্যতার একটি পরিষ্কার দৃষ্টিভঙ্গি অর্জন করব।
TCP থ্রি-ওয়ে হ্যান্ডশেক প্রসেস এবং স্টেট ট্রানজিশন
TCP একটি সংযোগ-ভিত্তিক পরিবহন প্রোটোকল, যার জন্য ডেটা ট্রান্সমিশনের আগে সংযোগ স্থাপনের প্রয়োজন হয়। এই সংযোগ স্থাপন প্রক্রিয়া একটি ত্রিমুখী হ্যান্ডশেক দ্বারা সম্পন্ন করা হয়।
আসুন প্রতিটি সংযোগে পাঠানো TCP প্যাকেটগুলিকে ঘনিষ্ঠভাবে দেখে নেওয়া যাক।
প্রাথমিকভাবে, ক্লায়েন্ট এবং সার্ভার উভয়ই বন্ধ। প্রথমত, সার্ভারটি একটি পোর্টে সক্রিয়ভাবে শোনে এবং LISTEN অবস্থায় থাকে, যার মানে সার্ভারটি চালু করতে হবে। এর পরে, ক্লায়েন্ট ওয়েবপেজ অ্যাক্সেস করা শুরু করতে প্রস্তুত৷ এটি সার্ভারের সাথে একটি সংযোগ স্থাপন করতে হবে৷ প্রথম সংযোগ প্যাকেটের বিন্যাস নিম্নরূপ:
যখন একটি ক্লায়েন্ট একটি সংযোগ শুরু করে, তখন এটি একটি এলোমেলো প্রাথমিক ক্রম সংখ্যা (client_isn) তৈরি করে এবং এটিকে TCP শিরোনামের "সিকোয়েন্স নম্বর" ক্ষেত্রে রাখে। একই সময়ে, বহির্গামী প্যাকেটটি একটি SYN প্যাকেট তা নির্দেশ করার জন্য ক্লায়েন্ট SYN পতাকা অবস্থান 1 এ সেট করে। ক্লায়েন্ট নির্দেশ করে যে সে সার্ভারে প্রথম SYN প্যাকেট পাঠিয়ে সার্ভারের সাথে একটি সংযোগ স্থাপন করতে চায়। এই প্যাকেটে অ্যাপ্লিকেশন স্তর ডেটা নেই (অর্থাৎ, পাঠানো ডেটা)। এই মুহুর্তে, ক্লায়েন্টের অবস্থা SYN-SENT হিসাবে চিহ্নিত করা হয়েছে।
যখন একটি সার্ভার একটি ক্লায়েন্টের কাছ থেকে একটি SYN প্যাকেট পায়, তখন এটি এলোমেলোভাবে তার নিজস্ব সিরিয়াল নম্বর (server_isn) শুরু করে এবং তারপর সেই নম্বরটিকে TCP হেডারের "ক্রমিক নম্বর" ক্ষেত্রে রাখে। এরপরে, সার্ভার "স্বীকৃতি নম্বর" ক্ষেত্রে ক্লায়েন্ট_isn + 1 প্রবেশ করে এবং SYN এবং ACK বিট উভয়ই 1 এ সেট করে। অবশেষে, সার্ভার ক্লায়েন্টের কাছে প্যাকেটটি পাঠায়, যাতে কোনো অ্যাপ্লিকেশন-লেয়ার ডেটা থাকে না (এবং সার্ভারের জন্য কোনো ডেটা থাকে না। পাঠাতে)। এই সময়ে, সার্ভারটি SYN-RCVD অবস্থায় আছে।
একবার ক্লায়েন্ট সার্ভার থেকে প্যাকেটটি গ্রহণ করলে, চূড়ান্ত উত্তর প্যাকেটে প্রতিক্রিয়া জানাতে নিম্নলিখিত অপ্টিমাইজেশনগুলি সম্পাদন করতে হবে: প্রথমত, ক্লায়েন্ট উত্তর প্যাকেটের TCP হেডারের ACK বিট 1 এ সেট করে; দ্বিতীয়ত, ক্লায়েন্ট "উত্তর নম্বর নিশ্চিত করুন" ক্ষেত্রের মান server_isn + 1 প্রবেশ করে; অবশেষে, ক্লায়েন্ট সার্ভারে প্যাকেট পাঠায়। এই প্যাকেটটি ক্লায়েন্ট থেকে সার্ভারে ডেটা বহন করতে পারে। এই ক্রিয়াকলাপগুলি সম্পূর্ণ করার পরে, ক্লায়েন্ট প্রতিষ্ঠিত অবস্থায় প্রবেশ করবে।
সার্ভার একবার ক্লায়েন্টের কাছ থেকে উত্তর প্যাকেট গ্রহণ করলে, এটি প্রতিষ্ঠিত অবস্থায়ও চলে যায়।
আপনি উপরের প্রক্রিয়া থেকে দেখতে পাচ্ছেন, ত্রিমুখী হ্যান্ডশেক করার সময়, তৃতীয় হ্যান্ডশেক ডেটা বহন করার অনুমতি দেওয়া হয়, তবে প্রথম দুটি হ্যান্ডশেক নয়। এটি একটি প্রশ্ন যা প্রায়ই সাক্ষাত্কারে জিজ্ঞাসা করা হয়। একবার ত্রি-মুখী হ্যান্ডশেক সম্পূর্ণ হলে, উভয় পক্ষই স্থাপিত অবস্থায় প্রবেশ করে, ইঙ্গিত করে যে সংযোগটি সফলভাবে প্রতিষ্ঠিত হয়েছে, এই সময়ে ক্লায়েন্ট এবং সার্ভার একে অপরের কাছে ডেটা পাঠানো শুরু করতে পারে।
তিনটে হ্যান্ডশেক কেন? দুবার নয়, চারবার?
সাধারণ উত্তর হল, "কারণ ত্রিমুখী হ্যান্ডশেক গ্রহণ এবং প্রেরণের ক্ষমতা নিশ্চিত করে।" এই উত্তরটি সঠিক, তবে এটি শুধুমাত্র পৃষ্ঠের কারণ, মূল কারণটি সামনে রাখে না। নিম্নলিখিতটিতে, আমি এই সমস্যাটি সম্পর্কে আমাদের বোঝার গভীরতার জন্য তিনটি দিক থেকে ট্রিপল হ্যান্ডশেকের কারণগুলি বিশ্লেষণ করব।
থ্রি-ওয়ে হ্যান্ডশেক ঐতিহাসিকভাবে পুনরাবৃত্ত সংযোগের সূচনাকে কার্যকরভাবে এড়াতে পারে (প্রধান কারণ)
থ্রি-ওয়ে হ্যান্ডশেক গ্যারান্টি দেয় যে উভয় পক্ষই একটি নির্ভরযোগ্য প্রাথমিক ক্রম নম্বর পেয়েছে।
ত্রিমুখী হ্যান্ডশেক সম্পদের অপচয় এড়ায়।
কারণ 1: ঐতিহাসিক ডুপ্লিকেট যোগদান এড়িয়ে চলুন
সংক্ষেপে, থ্রি-ওয়ে হ্যান্ডশেকের প্রধান কারণ হল পুরানো ডুপ্লিকেট সংযোগের শুরুর কারণে সৃষ্ট বিভ্রান্তি এড়ানো। একটি জটিল নেটওয়ার্ক পরিবেশে, ডেটা প্যাকেটের ট্রান্সমিশন সবসময় নির্দিষ্ট সময় অনুযায়ী গন্তব্য হোস্টে পাঠানো হয় না, এবং পুরানো ডেটা প্যাকেটগুলি নেটওয়ার্ক কনজেশন এবং অন্যান্য কারণে প্রথমে গন্তব্য হোস্টে পৌঁছাতে পারে। এটি এড়াতে, TCP সংযোগ স্থাপনের জন্য একটি ত্রিমুখী হ্যান্ডশেক ব্যবহার করে।
যখন কোনো ক্লায়েন্ট পরপর একাধিক SYN সংযোগ স্থাপন প্যাকেট পাঠায়, নেটওয়ার্ক কনজেশনের মতো পরিস্থিতিতে, নিম্নলিখিতগুলি ঘটতে পারে:
1- পুরানো SYN প্যাকেটগুলি সর্বশেষ SYN প্যাকেটের আগে সার্ভারে আসে৷
2- পুরানো SYN প্যাকেট পাওয়ার পর সার্ভার ক্লায়েন্টকে একটি SYN + ACK প্যাকেটের উত্তর দেবে।
3- যখন ক্লায়েন্ট SYN + ACK প্যাকেট পায়, তখন এটি নির্ধারণ করে যে সংযোগটি একটি ঐতিহাসিক সংযোগ (ক্রম নম্বর মেয়াদ শেষ বা টাইমআউট) তার নিজস্ব প্রসঙ্গ অনুযায়ী, এবং তারপর সংযোগটি বাতিল করতে সার্ভারে RST প্যাকেট পাঠায়।
দুই-হ্যান্ডশেক সংযোগের মাধ্যমে, বর্তমান সংযোগটি একটি ঐতিহাসিক সংযোগ কিনা তা নির্ধারণ করার কোন উপায় নেই। থ্রি-ওয়ে হ্যান্ডশেক ক্লায়েন্টকে নির্ধারণ করতে দেয় যে বর্তমান সংযোগটি প্রেক্ষাপটের উপর ভিত্তি করে একটি ঐতিহাসিক সংযোগ কিনা যখন এটি তৃতীয় প্যাকেট পাঠানোর জন্য প্রস্তুত:
1- যদি এটি একটি ঐতিহাসিক সংযোগ হয় (ক্রম নম্বর মেয়াদ শেষ বা টাইমআউট), তৃতীয় হ্যান্ডশেক দ্বারা পাঠানো প্যাকেটটি ঐতিহাসিক সংযোগ বাতিল করার জন্য একটি RST প্যাকেট।
2- যদি এটি একটি ঐতিহাসিক সংযোগ না হয়, তৃতীয়বারের জন্য পাঠানো প্যাকেটটি একটি ACK প্যাকেট, এবং দুটি যোগাযোগকারী পক্ষ সফলভাবে সংযোগ স্থাপন করে৷
তাই, টিসিপি থ্রি-ওয়ে হ্যান্ডশেক ব্যবহার করার প্রধান কারণ হল যে এটি ঐতিহাসিক সংযোগগুলি প্রতিরোধ করার জন্য সংযোগ শুরু করে।
কারণ 2: উভয় পক্ষের প্রাথমিক ক্রম সংখ্যা সিঙ্ক্রোনাইজ করা
TCP প্রোটোকলের উভয় পক্ষকে অবশ্যই একটি ক্রম সংখ্যা বজায় রাখতে হবে, যা নির্ভরযোগ্য সংক্রমণ নিশ্চিত করার জন্য একটি মূল কারণ। ক্রম সংখ্যাগুলি টিসিপি সংযোগে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে৷ তারা নিম্নলিখিতগুলি করে:
রিসিভার ডুপ্লিকেট ডেটা মুছে ফেলতে পারে এবং ডেটার যথার্থতা নিশ্চিত করতে পারে।
ডেটার অখণ্ডতা নিশ্চিত করার জন্য রিসিভার ক্রম নম্বরের ক্রম অনুসারে প্যাকেটগুলি গ্রহণ করতে পারে।
● ক্রম নম্বরটি নির্ভরযোগ্য ডেটা ট্রান্সমিশন সক্ষম করে, অন্য পক্ষের দ্বারা প্রাপ্ত ডেটা প্যাকেটটিকে সনাক্ত করতে পারে।
তাই, একটি TCP সংযোগ স্থাপন করার পরে, ক্লায়েন্ট প্রাথমিক ক্রম নম্বর সহ SYN প্যাকেট পাঠায় এবং ক্লায়েন্টের SYN প্যাকেটের সফল অভ্যর্থনা নির্দেশ করে একটি ACK প্যাকেটের সাথে সার্ভারকে উত্তর দিতে হবে। তারপর, সার্ভার ক্লায়েন্টের কাছে প্রাথমিক ক্রম নম্বর সহ SYN প্যাকেট পাঠায় এবং প্রাথমিক ক্রম নম্বরগুলি নির্ভরযোগ্যভাবে সিঙ্ক্রোনাইজ করা হয়েছে তা নিশ্চিত করতে ক্লায়েন্টের উত্তর দেওয়ার জন্য একবার এবং সর্বদা অপেক্ষা করে।
যদিও একটি ফোর-ওয়ে হ্যান্ডশেক উভয় পক্ষের প্রাথমিক ক্রম নম্বরগুলিকে নির্ভরযোগ্যভাবে সিঙ্ক্রোনাইজ করা সম্ভব, তবে দ্বিতীয় এবং তৃতীয় ধাপগুলিকে একক ধাপে একত্রিত করা যেতে পারে, যার ফলে একটি ত্রিমুখী হ্যান্ডশেক হয়। যাইহোক, দুটি হ্যান্ডশেক শুধুমাত্র একটি গ্যারান্টি দিতে পারে যে একটি পক্ষের প্রাথমিক ক্রম নম্বরটি অন্য পক্ষ সফলভাবে পেয়েছে, তবে উভয় পক্ষের প্রাথমিক ক্রম নম্বর নিশ্চিত করা যাবে এমন কোন গ্যারান্টি নেই। তাই, TCP সংযোগের স্থায়িত্ব এবং নির্ভরযোগ্যতা নিশ্চিত করার জন্য ত্রি-মুখী হ্যান্ডশেক হল সর্বোত্তম পছন্দ।
কারণ 3: সম্পদের অপচয় এড়িয়ে চলুন
যদি শুধুমাত্র একটি "টু-হ্যান্ডশেক" থাকে, যখন ক্লায়েন্ট SYN অনুরোধ নেটওয়ার্কে ব্লক করা হয়, ক্লায়েন্ট সার্ভার দ্বারা প্রেরিত ACK প্যাকেট গ্রহণ করতে পারে না, তাই SYN পুনরায় পাঠানো হবে। যাইহোক, যেহেতু কোন তৃতীয় হ্যান্ডশেক নেই, সার্ভার নির্ধারণ করতে পারে না যে সংযোগ স্থাপনের জন্য ক্লায়েন্ট একটি ACK স্বীকৃতি পেয়েছে কিনা। অতএব, সার্ভার প্রতিটি SYN অনুরোধ পাওয়ার পরে সক্রিয়ভাবে একটি সংযোগ স্থাপন করতে পারে। এটি নিম্নলিখিতগুলির দিকে পরিচালিত করে:
সম্পদের অপচয়: যদি ক্লায়েন্টের SYN অনুরোধ ব্লক করা হয়, যার ফলে একাধিক SYN প্যাকেট বারবার ট্রান্সমিশন হয়, সার্ভার অনুরোধ পাওয়ার পর একাধিক অপ্রয়োজনীয় অবৈধ সংযোগ স্থাপন করবে। এটি সার্ভার সংস্থানগুলির একটি অপ্রয়োজনীয় অপচয়ের দিকে পরিচালিত করে।
বার্তা ধারণ: তৃতীয় হ্যান্ডশেকের অভাবের কারণে, সংযোগ স্থাপনের জন্য ক্লায়েন্ট সঠিকভাবে ACK স্বীকৃতি পেয়েছে কিনা তা জানার কোনো উপায় সার্ভারের নেই। ফলস্বরূপ, বার্তাগুলি যদি নেটওয়ার্কে আটকে যায়, ক্লায়েন্ট বারবার SYN অনুরোধ পাঠাতে থাকবে, যার ফলে সার্ভার ক্রমাগত নতুন সংযোগ স্থাপন করবে। এটি নেটওয়ার্কের ভিড় এবং বিলম্ব বাড়াবে এবং সামগ্রিক নেটওয়ার্ক কর্মক্ষমতাকে নেতিবাচকভাবে প্রভাবিত করবে।
সুতরাং, নেটওয়ার্ক সংযোগের স্থায়িত্ব এবং নির্ভরযোগ্যতা নিশ্চিত করার জন্য, TCP এই সমস্যাগুলির ঘটনা এড়াতে সংযোগ স্থাপনের জন্য ত্রি-মুখী হ্যান্ডশেক ব্যবহার করে।
সারাংশ
দনেটওয়ার্ক প্যাকেট ব্রোকারTCP সংযোগ স্থাপন একটি ত্রিমুখী হ্যান্ডশেক সঙ্গে সম্পন্ন করা হয়. থ্রি-ওয়ে হ্যান্ডশেকের সময়, ক্লায়েন্ট প্রথমে সার্ভারে SYN পতাকা সহ একটি প্যাকেট পাঠায়, এটি ইঙ্গিত করে যে এটি একটি সংযোগ স্থাপন করতে চায়। ক্লায়েন্টের কাছ থেকে অনুরোধ পাওয়ার পর, সার্ভার ক্লায়েন্টকে SYN এবং ACK পতাকা সহ একটি প্যাকেটের উত্তর দেয়, যা ইঙ্গিত করে যে সংযোগের অনুরোধটি গৃহীত হয়েছে এবং তার নিজস্ব প্রাথমিক ক্রম নম্বর পাঠায়। অবশেষে, ক্লায়েন্ট সার্ভারে একটি ACK পতাকা সহ উত্তর দেয় যে সংযোগটি সফলভাবে প্রতিষ্ঠিত হয়েছে। এইভাবে, দুটি দল প্রতিষ্ঠিত অবস্থায় রয়েছে এবং একে অপরের কাছে ডেটা পাঠানো শুরু করতে পারে।
সাধারণভাবে, TCP সংযোগ স্থাপনের জন্য ত্রিমুখী হ্যান্ডশেক প্রক্রিয়াটি সংযোগের স্থায়িত্ব এবং নির্ভরযোগ্যতা নিশ্চিত করার জন্য ডিজাইন করা হয়েছে, ঐতিহাসিক সংযোগের ক্ষেত্রে বিভ্রান্তি এবং সম্পদের অপচয় এড়াতে এবং উভয় পক্ষই ডেটা গ্রহণ ও পাঠাতে সক্ষম তা নিশ্চিত করার জন্য ডিজাইন করা হয়েছে।
পোস্টের সময়: জানুয়ারি-০৮-২০২৫