টিসিপি থ্রি-ওয়ে হ্যান্ডশেক এর মতো কাজ করে:
Client ------SYN-----> Server
Client <---ACK/SYN---- Server
Client ------ACK-----> Server
কেন শুধু এই না?
Client ------SYN-----> Server
Client <-----ACK------ Server
টিসিপি থ্রি-ওয়ে হ্যান্ডশেক এর মতো কাজ করে:
Client ------SYN-----> Server
Client <---ACK/SYN---- Server
Client ------ACK-----> Server
কেন শুধু এই না?
Client ------SYN-----> Server
Client <-----ACK------ Server
উত্তর:
হ্যান্ডশেকটি আসলে কী করছে তা ভেঙে দিন।
টিসিপিতে, দুটি দল একটি সিকোয়েন্স নম্বর ব্যবহার করে তারা কী পাঠিয়েছিল তা ট্র্যাক করে। কার্যকরভাবে এটি প্রেরিত সমস্ত কিছুর একটি চলমান বাইট গণনা হয়ে শেষ হয়। প্রাপ্ত দলটি যা পেয়েছে তা স্বীকার করতে বিপরীতে স্পিকারের ক্রম সংখ্যাটি ব্যবহার করতে পারে।
তবে সিকোয়েন্স নম্বরটি 0 থেকে শুরু হয় না এটি ISN (প্রারম্ভিক সিকোয়েন্স নম্বর) থেকে শুরু হয়, যা এলোমেলোভাবে নির্বাচিত মান। এবং যেহেতু টিসিপি দ্বি-দিকনির্দেশক যোগাযোগ, উভয় পক্ষই "কথা বলতে" পারে, এবং তাই উভয়কেই এলোমেলোভাবে তাদের প্রারম্ভিক সিকোয়েন্স নম্বর হিসাবে একটি আইএসএন তৈরি করতে হবে। যার পরিবর্তে উভয় পক্ষকে তাদের শুরু হওয়া আইএসএন সম্পর্কে অন্য পক্ষকে অবহিত করা দরকার।
সুতরাং আপনি অ্যালিস এবং ববের মধ্যে একটি টিসিপি কথোপকথন শুরু করার জন্য ইভেন্টগুলির এই ক্রমটি শেষ করেছেন:
Alice ---> Bob SYNchronize with my Initial Sequence Number of X
Alice <--- Bob I received your syn, I ACKnowledge that I am ready for [X+1]
Alice <--- Bob SYNchronize with my Initial Sequence Number of Y
Alice ---> Bob I received your syn, I ACKnowledge that I am ready for [Y+1]
লক্ষ্য করুন, চারটি ঘটনা ঘটছে:
বাস্তবে বাস্তবে, মাঝের দুটি ইভেন্ট (# 2 এবং # 3) একই প্যাকেটে ঘটে। কী এক প্যাকেট একটি তোলে SYN
বা ACK
সহজভাবে একটি বাইনারি পতাকা চালু বা বন্ধ প্রতিটি ভিতরে পরিণত বিভিন্ন TCP হেডার , তাই একই প্যাকেট সক্রিয় হওয়া থেকে এই পতাকার উভয় প্রতিরোধ কিছুই নেই। সুতরাং ত্রি-মুখী হ্যান্ডশেকটি শেষ হচ্ছে:
Bob <--- Alice SYN
Bob ---> Alice SYN ACK
Bob <--- Alice ACK
"SYN" এবং "ACK" এর দুটি উদাহরণ দু'দিকেই লক্ষ্য করুন।
সুতরাং আপনার প্রশ্নে ফিরে আসতে, কেন কেবল দ্বি-মুখী হ্যান্ডশেক ব্যবহার করবেন না? সংক্ষিপ্ত উত্তরটি হ'ল দ্বিমুখী হ্যান্ডশেক কেবল একটি পক্ষকে আইএসএন প্রতিষ্ঠার অনুমতি দেবে এবং অন্য পক্ষটি এটি স্বীকৃতি জানাতে পারে। যার অর্থ শুধুমাত্র একটি পক্ষই ডেটা প্রেরণ করতে পারে।
তবে টিসিপি একটি দ্বি-দিকনির্দেশক যোগাযোগ প্রোটোকল, যার অর্থ উভয় প্রান্তটি নির্ভরযোগ্যভাবে ডেটা প্রেরণ করতে সক্ষম হওয়া উচিত। উভয় পক্ষের একটি আইএসএন প্রতিষ্ঠা করা দরকার, এবং উভয় পক্ষেরই অপরের আইএসএনকে স্বীকৃতি দেওয়া দরকার।
সুতরাং বাস্তবে, আপনার কাছে যা আছে তা হ'ল দ্বি-মুখী হ্যান্ডশেকটির বিবরণ তবে প্রতিটি দিকেই । সুতরাং, চারটি ঘটনা ঘটছে। এবং আবারও, মাঝের দুটি পতাকা একই প্যাকেটে ঘটে। যেমন তিনটি প্যাকেট একটি সম্পূর্ণ টিসিপি সংযোগের সূচনা প্রক্রিয়াতে জড়িত।
কারণ উভয় পক্ষের প্রয়োজন তিনপথ হ্যান্ডশেক প্রয়োজনীয় SYN chronize তাদের সেগমেন্ট ক্রম তাদের সংক্রমণ সময় ব্যবহৃত নম্বর। এটির জন্য তাদের প্রতিটি পাঠায় (পালাক্রমে) একটি র্যান্ডম মানে সেট একটি ক্রম নম্বরে কোনো SYN সেগমেন্ট এন , যা করা হয় ACK সেট একটি ক্রম নম্বরে কোনো সেটি হল ACK সেগমেন্ট এর মাধ্যমে অন্যান্য পক্ষ দ্বারা nowledged এন + 1 টি ।
Eddie
তার উত্তরের মন্তব্য থেকে উদ্ধৃত ।
সংযোগটি কাজ করার জন্য, প্রতিটি পক্ষের এটি যাচাই করা দরকার যে এটি অন্যদিকে প্যাকেটগুলি প্রেরণ করতে পারে। আপনি যে কোনও প্যাকেট অন্যদিকে পেয়েছিলেন তা নিশ্চিত হওয়ার একমাত্র উপায় হ'ল তাদের কাছ থেকে একটি প্যাকেট পেয়ে যে সংজ্ঞা অনুসারে আপনি যে প্যাকেটটি পাঠিয়েছিলেন তা না পেলে পাঠানো হত না । টিসিপি মূলত এর জন্য দুটি ধরণের বার্তা ব্যবহার করে: এসওয়াইএন (এই প্যাকেটটি দিয়েছিল তার প্রমাণের জন্য) এবং এসিএন (যা কেবল কোনও এসওয়াইএন পাওয়ার পরে প্রেরণ করা হয় তা প্রমাণ করার জন্য যে এসওয়াইএন হয়েছে)। সেখানে আসলে তৃতীয় ধরণের বার্তা রয়েছে তবে আমরা তা মুহূর্তের মধ্যেই পেয়ে যাব।
সংযোগ শুরুর আগে কোনও পক্ষই অন্যটির সম্পর্কে সত্যই কিছু জানে না। ক্লায়েন্ট সার্ভারে একটি এসওয়াইএন প্যাকেট প্রেরণ করে, তার বার্তাগুলি পেতে পারে এমন প্রমাণের জন্য অনুরোধ করতে । এটি উভয়কেই কিছু বলে না, তবে এটি হ্যান্ডশেকের প্রথম ধাপ।
যদি এসওয়াইএন এর মধ্য দিয়ে যায় তবে সার্ভার জানে যে ক্লায়েন্ট এটিতে প্যাকেটগুলি প্রেরণ করতে পারে, কারণ, ঠিক আছে। কিন্তু এটি প্রমাণ করে না যে সার্ভার প্যাকেটগুলি ফেরত পাঠাতে পারে: ক্লায়েন্টরা বহু কারণে এসআইএনএন পাঠাতে পারে । সুতরাং সার্ভারটি ক্লায়েন্টকে দুটি বার্তা পাঠাতে হবে: একটি এসি (এসআইএনএন পেয়েছে তা প্রমাণ করার জন্য) এবং একটি এসওয়াইএন (তার নিজের একটি এসিকে অনুরোধ করার জন্য)। টিসিপি এই দুটি বার্তাকে এক-এসওয়াইএন-এসিএইচ বার্তার সাথে সংযুক্ত করে, যদি আপনি চান- নেটওয়ার্ক ট্রাফিক কমাতে। এটি হ্যান্ডশেকের দ্বিতীয় ধাপ।
যেহেতু একটি SYN-ACK একটি ACK, ক্লায়েন্ট এখন নিশ্চিতভাবেই জানে যে এটি সার্ভারে প্যাকেটগুলি প্রেরণ করতে পারে। এবং যেহেতু একটি SYN-ACK একটি SYN, এটি এটিও জানে যে সার্ভারটি এই বার্তাটি পেয়েছে তার প্রমাণ চায়। সুতরাং এটি একটি এসকে ফেরত পাঠায়: এবার কেবল একটি সরল এসিকে, কারণ এর প্যাকেটগুলি পেতে পারে তার আর প্রমাণের দরকার নেই। এই হ্যান্ডশেক চূড়ান্ত পদক্ষেপ হল: ক্লায়েন্ট এখন জানে প্যাকেট উভয় উপায় যেতে পারেন, এবং সার্ভার যে প্রায় এই জিনিসটা (কারণ তা জানেন সেটি হল ACK মধ্য দিয়ে যেতে হবে)।
একবার এটির মাধ্যমে গেলে এখন সার্ভার জানে যে এটি ক্লায়েন্টকে প্যাকেট প্রেরণ করতে পারে । এটি আরও জানে যে ক্লায়েন্ট এটি জানেন, তাই এটি এখনই ডেটা প্রেরণ শুরু করতে পারেন। হ্যান্ডশেক সম্পূর্ণ। আমাদের একটি ভাল চ্যানেল রয়েছে।
ভাল, কঠোরভাবে বলতে গেলে, আমরা নিশ্চিত হতে পারি না আমাদের একটি ভাল চ্যানেল রয়েছে । শুধু কারণ প্যাকেট এই ক্রম নেই মাধ্যমে পেয়েছিলাম কঠোরভাবে গ্যারান্টি দিই যে অন্যদের হবে। আমরা প্রমাণ করতে পারি না যে সীমাহীন সংখ্যক এসওয়াইএন এবং এসিকে না পাঠানো এবং তারপরে আর কোনও কিছুই করা সম্ভব হবে না, তাই এটি বাস্তবিক বিকল্প নয়। তবে অনুশীলনে, তিনটি পদক্ষেপ বেশিরভাগ কারণে যথেষ্ট ভাল হতে পারে ।
আসলে, 3-উপায় হ্যান্ডশেক টিসিপি সংযোগ স্থাপনের একমাত্র উপায় নয়। একযোগে এসওয়াইএন এক্সচেঞ্জেরও অনুমতি রয়েছে: http://www.tcpipguide.com/free/t_TCPConnicationEstablishmentProcessTheTreeWayHandsh-4.htm
এটি ডাবল 2-ওয়ে হ্যান্ডশেকের ধরণের হিসাবে দেখা যেতে পারে।
টিসিপি সংযোগ দ্বি নির্দেশমূলক। এর অর্থ কী এটি আসলে একমুখী সংযোগগুলির একটি জুড়ি। প্রবর্তক এসওয়াইএন প্রেরণ করেন, প্রতিক্রিয়াকারী এসিকে প্রেরণ করে: একটি সিম্পলেক্স সংযোগ শুরু হয়। "তারপরে" প্রতিক্রিয়াকারী এসওয়াইএন পাঠায়, সূচনাকারী এসিকে প্রেরণ করে: আর একটি সিমপ্লেক্স সংযোগ শুরু হয়। দুটি সিমপ্লেক্স সংযোগগুলি একটি দ্বৈত টিসিপি অধিবেশন তৈরি করে, সম্মত হন? সুতরাং যৌক্তিকভাবে চারটি পদক্ষেপ জড়িত রয়েছে; তবে যেহেতু এসওয়াইএন এবং এসি কে পতাকাগুলি টিসিপি শিরোনামের পৃথক "ক্ষেত্র", সেগুলি একই সাথে সেট করা যায় - দ্বিতীয় এবং তৃতীয় ধাপ (চারটির) একত্রিত হয়, তাই প্রযুক্তিগতভাবে তিনটি প্যাকেট এক্সচেঞ্জ হয়। প্রতিটি প্রস্তাবিত (অর্ধ-) সংযোগ দ্বি-মুখী এক্সচেঞ্জ ব্যবহার করে, যেমনটি আপনি প্রস্তাব করেছিলেন।
যদি সার্ভার এবং ক্লায়েন্ট কোনও সংযোগ তৈরি করতে চান তবে তাদের চারটি বিষয় নিশ্চিত করতে হবে:
ক্লায়েন্টকে নিশ্চিত করতে হবে যে সে সার্ভারের কাছ থেকে প্যাকেট গ্রহণ করতে পারে
ক্লায়েন্টকে একটি জিনিস নিশ্চিত করতে হবে: সার্ভার ক্লায়েন্টের কাছ থেকে প্যাকেট গ্রহণ করতে পারে
পরে Client ------SYN-----> Server
, বিধি 1 নিশ্চিত করা হয়েছে।
পরে Client <---ACK/SYN---- Server
, বিধি 2 এবং 3 নিশ্চিত হয়ে গেছে।
সুতরাং, নিয়ম 4 নিশ্চিত করতে একটি তৃতীয় প্যাকেট দরকার।
এটি মোটেই প্রয়োজন হয় না। এটা স্পষ্ট যে একটি সংক্ষিপ্ত বার্তায় কেবল সার্ভারের জন্য একটি প্যাকেট থাকা উচিত যার মধ্যে স্টার্ট + বার্তা অন্তর্ভুক্ত থাকে এবং একটি প্যাকেট এটি স্বীকার করে ফিরে আসে।
পূর্ববর্তী উত্তরগুলি প্রথমে প্রথমে র্যান্ডম সিকোয়েন্স সংখ্যাগুলির প্রয়োজনীয়তার জন্য আলোচনা না করেই সিস্টেমটি বর্ণনা করে। মূল প্রশ্নটি টিসিপি নিজেই ডিজাইনের ছিল - স্পষ্টত যদি আপনি টিসিপি প্রোটোকল ব্যবহার করেন তবে আপনার জন্য তিনটি বার্তা প্রয়োজন কারণ এটি প্রোটোকল। তবে টিসিপি কেন প্রথম জায়গায় ডিজাইন করা হয়েছিল?
আমি বিশ্বাস করি যে আসল ধারণাটি ছিল ক্লায়েন্ট এবং সার্ভারগুলির মধ্যে কোনও পার্থক্য নেই। উভয়ই অন্যের বন্দরগুলিকে দ্বিপাক্ষিক পদ্ধতিতে জানত এবং হয় কথোপকথনটি শুরু করতে পারে। এবং যে Syns ইত্যাদি প্রয়োজন।
তবে এটি আজকের দিনে কীভাবে ব্যবহৃত হয় তা অবশ্যই নয়। সার্ভারটি একটি সুপরিচিত পোর্টে শোনে এবং "গ্রহণ" করে, ক্লায়েন্ট পোর্ট নম্বরটি সংক্ষিপ্ত হয়। এমনকি সাধারণ অপারেটিং সিস্টেমে একই ক্লায়েন্ট পোর্ট নম্বরে অন্য কোনওকে একটি অনুরোধ প্রেরণ করার জন্য "গ্রহণযোগ্য" অপেক্ষায় থাকা কোনও সার্ভারের পক্ষে এটি সম্ভব বলেও আমি মনে করি না ।
(দ্রষ্টব্য যে এটি সংযোগের দ্বিপাক্ষিক সূচনা সম্পর্কে, যা আজ কখনই করা হয় না once এটি একবার প্রতিষ্ঠিত সংযোগে দ্বিপাক্ষিক বার্তা প্রেরণ করা থেকে একেবারেই আলাদা))
টিসিপি অদক্ষতা নিয়ে কাজ করার জন্য, আমরা এইচটিটিপি ১.১ এর মতো প্রোটোকল ব্যবহার করি যা একাধিক অনুরোধের জন্য একই সংযোগটি পুনরায় ব্যবহার করতে পারে এবং এইভাবে টিসিপি হ্যান্ডশেক এড়াতে পারে যা প্রথম স্থানে প্রয়োজনীয় ছিল না।
তবে এইচটিটিপি 1.1 তুলনামূলকভাবে নতুন। এবং পি কেআই অ্যালগরিদমের ব্যয়ের কারণে এসএসএল / টিএলএসের শুরু থেকেই সেশনটি পুনরায় ব্যবহার করার একটি উপায় প্রয়োজন needed যাতে প্রোটোকলটির নিজস্ব সেশন পুনঃব্যবহার প্রক্রিয়া অন্তর্ভুক্ত থাকে যা এইচটিটিপি 1.1 এর শীর্ষে চলে টিসিপির শীর্ষে চলে।
সফটওয়্যার দিয়ে এইভাবে। মলমূত্রের উপর চাপগুলি যা মিলিত হলে একটি গ্রহণযোগ্য ফলাফল দেয়।
এডির উত্তর পড়ার পরে (সঠিক হিসাবে গ্রহণযোগ্য), এখনও প্রশ্ন রয়েছে যে 1 ম হোস্ট কেন আইএসএন উভয়কে এলোমেলো সংখ্যার সাথে বরাদ্দ করতে পারে না এবং 2 য় মাত্র এটি গ্রহণ করে। থ্রি-ওয়ে হ্যান্ডশেক ব্যবহারের আসল কারণ হ'ল অর্ধ-সংযোগ এড়ানো । দ্বি-মুখী হ্যান্ডশেকে অর্ধ সংযোগের পরিস্থিতি:
1) ক্লায়েন্ট --- এসওয়াইএন -> সার্ভার
2) ক্লায়েন্ট তার মন পরিবর্তন করে এবং আর সংযোগ করতে চান না
3) ক্লায়েন্ট <-X-ACK-- সার্ভার // ACK হারিয়ে গেছে
সার্ভার রাগান্বিত এসওয়াইএন দেখতে পাচ্ছে না, তাই তিনি মনে করেন যে ক্লায়েন্ট তার এসি কে পেয়েছে এবং সংযোগ স্থাপন করা হয়েছে। ফলস্বরূপ সার্ভারের সংযোগ রয়েছে যা কখনই বন্ধ হবে না