যদি কোনও টিসিপি প্যাকেট আংশিকভাবে স্বীকৃত হয়, তবে পুনঃস্থাপন প্রক্রিয়াটি কীভাবে প্রতিক্রিয়া জানাবে?


12

যদি কোনও টিসিপি ক্লায়েন্ট 10000 থেকে 20000 পর্যন্ত সিকোয়েন্স নম্বর সহ একটি প্যাকেট টিসিপি সার্ভারে প্রেরণ করে। টিসিপি একটি এসকে দিয়ে seq_ack 20001 এর সাথে প্রতিক্রিয়া জানাবে।

যদি আমি ক্লায়েন্টের কাছ থেকে টিসিপি প্যাকেটটি অবিচ্ছিন্ন করি এবং প্যাকেটটি 2 টিসিপি বিভাগে বিভক্ত করি, একটি সেক 10000 থেকে 15000 পর্যন্ত এবং অন্যটি সেক সহ 15001 থেকে 20000 হয়। এবং তারপরে এই 2 টিসিপি বিভাগগুলি টিসিপি সার্ভারে প্রেরণ করা হয়। ধরে নিই যে দ্বিতীয় খণ্ডটি হারিয়ে গেছে। টিসিপি সার্ভার একটি এসকেকে seq_ack 15001 দিয়ে প্রতিক্রিয়া জানাবে।

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

আমার মনে হয় টিসিপিতে পাঠান বাফারটিতে, যখন কোনও টিসিপি বিভাগ প্রেরণ করা হয়, সেগমেন্টটি এখনও এসিকে না হওয়া পর্যন্ত সেখানেই থাকে। এসি কে এলে বিভাগটির জন্য এই বাইটগুলি বাফার থেকে সাফ হয়ে যায়। প্রেরক বাফারটিতে একটি পয়েন্টার রয়েছে, যখন একটি এসি কে আসে, পয়েন্টারটি সেই অবস্থানটিতে নির্দেশ করে যেখানে ack_seq এর সাথে সম্পর্কিত হয়। Ack_seq এর নীচে থাকা বাইটগুলি সাফ করা হয়েছে। এইভাবে, পুরো বিভাগটিকে পুনঃপ্রেরণ করার দরকার নেই?

উত্তর:


8

একে নির্বাচিত স্বীকৃতি বলা হয় এবং এটি ইতিমধ্যে আরএফসি 2018 এ সংজ্ঞায়িত টিসিপি স্পেসিফিকেশনের অন্তর্ভুক্ত । এটি ক্লায়েন্টকে প্রকৃতপক্ষে কেবলমাত্র 15001 থেকে 20000 বাইটে পুনরায় পাঠানোর অনুমতি দেবে (যেহেতু তারা বিভিন্ন প্যাকেট / বিভাগগুলিতে থাকে যদি আপনি তাদের বলার মতো বিভক্ত করে থাকেন) তবে আরও মজার বিষয় হল এটি আউট অফ-অর্ডার স্বীকৃতিও দেয়।

আরএফসি 2018 থেকে:

SACK বিকল্পযুক্ত এসিকি গ্রহণ করার সময়, ডেটা প্রেরক ভবিষ্যতের রেফারেন্সের জন্য নির্বাচিত স্বীকৃতি রেকর্ড করতে হবে। ডেটা প্রেরককে অনুদান-সংখ্যার ক্রম অনুসারে প্রেরণ করা হয়েছে তবে স্বীকৃত হয়নি এমন খণ্ডগুলি রয়েছে এমন একটি পুনঃপ্রেরণ সারি রয়েছে বলে ধরে নেওয়া হয়।

টিসিপি স্পেসিফিকেশন দ্বারা সমর্থন প্রয়োজন SACKহয় না । যদি ক্লায়েন্ট বা সার্ভার বাছাই করা স্বীকৃতিটিকে সমর্থন না করে, সত্যই 10000 থেকে 20000 পর্যন্ত সমস্ত বাইট পুনরায় প্রেরণ করতে হবে।

টিসিপি স্ট্যাক বাস্তবায়নে, এটি কি তত্ত্বের মতো?

সাধারণত SACK হয় কর্মক্ষমতা, দক্ষতা যেমন, সমর্থিত, এবং লেটেন্সি লাভ গুরুত্বপূর্ণ - বিশেষ করে ইন্টারনেট মত একটি নেটওয়ার্কের মধ্যে।

প্রকৃতপক্ষে, এই অনুমানগুলি সত্য হওয়া উচিত যদিও আপনি নিজের মতো করে প্যাকেটগুলি ম্যানুয়ালি ব্যবহার করলেও। অনুযায়ী বোঝায় যা RFC 793 , সর্বনিম্ন সময়ে, সমগ্র ডেটা উইন্ডোর retransmitted করতে হবে, কিন্তু গ্রাহক নেই জানি যে পেয়েছেন তথ্য অন্তত হয় বৈধ । বাস্তবায়নের বিশদগুলির জন্য, বিভাগ 3.3 - আরএফসি 793 থেকে সিকোয়েন্স নম্বর

নির্বাচনী স্বীকৃতি সহায়তার সাথে এবং ছাড়াই উভয়ই সম্পূর্ণ প্রক্রিয়ার একটি রূপরেখার জন্য, এই নিবন্ধটি দেখুন (যার মধ্যে কিছু খুব দরকারী ডায়াগ্রাম রয়েছে)।


এটি আমার কাছে কিছুটা অদ্ভুত, কারণ টিসিপি স্ট্রিম-ভিত্তিক, বাইট-ওরিয়েন্টেড প্রোটোকল। কেন এটি পুরো বিভাগটিকে পুনঃপ্রেরণ করবে? আমার কাছে মনে হয় যে এসএসিসি ছাড়া টিসিপি সেগমেন্ট-ভিত্তিক স্ট্রিম প্রোটোকল, তবে স্যাক সহ টিসিপি হ'ল আসল বাইট-ভিত্তিক। আমি মনে করি আরএফসি এ সম্পর্কে বিশেষভাবে বিশদ বিবরণ দেয় না।
মিস্টারয়েজ

টিসিপি স্ট্যাক তার প্রেরণ বাফারটি কীভাবে পরিচালনা করে, আপডেট প্রশ্নে আমি যা লিখেছি তা একই।
মিস্টারয়েজ

@ মিস্টেরয়েস এই নিবন্ধটি প্রক্রিয়াটির রূপরেখা দিয়েছে (কিছু দুর্দান্ত চিত্র সহ, খুব!)।
ব্রেকথ্রু

আপনার প্রস্তাবিত লিঙ্কটিতে, মনে হয় যে লেখক এখনও সমস্যাটি বাস্তব বাইট-ভিত্তিক উপায়ে নয়, সেগমেন্ট-ভিত্তিক উপায়ে আলোচনা করেছেন discuss তাই না?
মিস্টারয়েজ

1
আমি এই প্রশ্নটি পোস্ট করার আগে স্যাককে জানতাম। একেবারে শুরুতে আমি মনে করি না এই প্রশ্নের সাথে স্যাকের কিছু আছে। আমার মতে, টিসিপি যদি বাইট-ওরিয়েন্টেড না হলেও সেগমেন্ট-ওরিয়েন্টেড হয়, তবে স্যাকও একই রকম হওয়া উচিত। SACK- সক্ষম এবং SACK- অক্ষম মধ্যে পার্থক্য হ'ল SACK এর সাথে, TCP ack_seq এ একটি সিকোয়েন্সস হোল অনুমতি দেয়। তবে আমি ভেবেছিলাম সিকোয়েন্স হোল একটি বিভাগের সাথে মিলে যায়। আপনার বক্তব্য অনুসারে, গর্তটি কোনও অংশের অর্ধেক / অংশ হতে পারে।
মিস্টারয়েজ

3

বিভাগের আকারগুলি কোনও সংযোগের আজীবন পরিবর্তিত হতে পারে (এবং করতে পারে)। ভাগ্যক্রমে, টিসিপিকে সেগমেন্টের আকার রেকর্ড করার দরকার নেই যা পৃথক প্যাকেটগুলি আগে পাঠানো হয়েছিল। অতএব, এটি নিম্নলিখিতটি করবে:

  1. যখনই কোনও এসকে আসে, সেই অনুযায়ী পয়েন্টারটিকে প্রথমে অজ্ঞাতীত বাইটে অগ্রসর করুন এবং এখন-অনিবদ্ধ যে কোনও বাফার বাতিল করুন।
  2. যখন retransmission (দ্রুত retransmit বা সময়সীমা; প্রথম ACK প্রাপ্তির অবিলম্বে নয় !) এর জন্য যখন প্রয়োজনীয়তা দেখা দেয় , তখন এটি পয়েন্টার থেকে শুরু করে প্রথম অগ্রহণিত বাইট পর্যন্ত বর্তমান বৈধ বিভাগের আকারে পুনরায় পাঠানো হবে।

উভয় ক্রিয়াকলাপটি এই বাইটগুলি মূলত প্রেরণ করা হয়েছে সেগমেন্টের আকারের থেকে স্বাধীনভাবে করা হয় So সুতরাং তত্ত্বটি সর্বাধিক বাস্তবায়নের সাথে মেলে।

আমাকে ব্যাখ্যা করার জন্য কিছু পটভূমি দেওয়া যাক:

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

  • বিকল্পগুলি প্রবর্তন করা হচ্ছে, উদাহরণস্বরূপ, পিছুবি্যাক করে একটি ফেরত পাঠানোর সময় একটি SACK (বাস্তব বাস্তবায়ন এটি খুব কমই এর মুখোমুখি হবে, যদি আদৌ)
  • পাথ এমটিইউ পরিবর্তিত হয়, উদাহরণস্বরূপ পথের সাথে একটি লিঙ্কটি নিম্ন এমটিইউতে পরিবর্তিত হয় বা বোতল নখের এমটিইউ লিঙ্কটি উত্থাপিত হয়। যখন টানেলগুলি প্রতিষ্ঠিত হয় (ভিপিএন, পিপিপিওই) বা রাউটিং প্রোটোকল একটি পৃথক-এমটিইউ লিঙ্ক নির্বাচন করে তখন এটি ঘটে। আইপিভি 4-এ ডোন্ট ফ্রেগমেন্ট সেট (বেশিরভাগ আধুনিক টিসিপি-র ক্ষেত্রে সত্য) দিয়ে ঘটে; সর্বদা টিসিপিভি 6 এ)।

বিটিডাব্লু: SACK এখানে উত্তর নয়, কারণ প্রাপক (সাধারণত) কেবলমাত্র SACK ব্যবহার করবে যদি এটি বাইট স্ট্রিমের কোনও গর্ত স্বীকৃতি দেয় (যেমন, যদি কোনও প্যাকেট হারিয়ে যায় তবে নিম্নলিখিত প্যাকেটটি উপস্থিত হয়)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.