লিনাক্সে ন্যূনতম টিসিপি এমএসএস


9

লিনাক্সের টিসিপি এমএসএস কমপক্ষে 88 হওয়া উচিত (অন্তর্ভুক্ত / নেট / tcp.h):

/* Minimal accepted MSS. It is (60+60+8) - (20+20). */
#define TCP_MIN_MSS             88U

আমার প্রশ্ন: তারা "60 + 60 + 8" নিয়ে আসে এবং কেন? আমি পেয়েছি যে 20 + 20 আইপি শিরোনাম + টিসিপি শিরোনাম থেকে আসে।

সম্পাদনা: শিরোনামগুলি ঘনিষ্ঠভাবে দেখার পরে, সূত্রটি আমাকে এইভাবে দেখায়:

(MAX_IP_HDR + MAX_TCP_HDR + MIN_IP_FRAG) - (MIN_IP_HDR + MIN_TCP_HDR)

প্রশ্ন এখনও দাঁড়িয়ে: কেন ? লিনাক্স কার্নেল কেন এই সূত্রটি ব্যবহার করে, এর মাধ্যমে 20 বাইট এর টিসিপি বিভাগগুলিকে নিষিদ্ধ (একটি বাধ্যতামূলক প্রবাহ) ব্যবহার করে? এখানে আইপিএফ ভাবুন।

সম্পাদনা 2: এখানে আমার ব্যবহারের কেস। সকেট / সংযোগে কম এমএসএস জোর করে, স্ট্যাকের মাধ্যমে প্রেরিত সমস্ত প্যাকেটগুলির একটি ছোট আকার থাকবে। প্যাকেট / দ্বিতীয় পরীক্ষার জন্য আইপিএফের সাথে কাজ করার সময় আমি একটি কম এমএসএস সেট করতে চাই। এমএসএসের এই নিম্ন সীমাটির কারণে আমি তারে 128 বাইট (142 বাইটের ইথারনেট ফ্রেম) এর চেয়ে ছোট আইপি প্যাকেটগুলি পেতে পারি না! আরএফসি 2544 অনুযায়ী আমি 64 বাইটের ইথারনেট ফ্রেমের আকারের কাছাকাছি যেতে চাই The তাত্ত্বিকভাবে এটি সম্ভব হওয়া উচিত: 18 + 20 + 20 <64।


এটি কীভাবে 20 বাইটের টিসিপি বিভাগগুলিকে নিষিদ্ধ করে?
ডেভিড শোয়ার্জ

এমএসএস এর অর্থ সর্বাধিক সেগমেন্ট আকার, এটি নির্দিষ্ট সংযোগে বিভাগের আকারের জন্য উচ্চতর সীমা (নিম্ন নয়)। TCP_MIN_MSS এই সীমাটির জন্য নিম্ন সীমা নির্দিষ্ট করে। সুতরাং ৮৮ বাইটের কম অংশে এটি কোনওভাবেই নিষিদ্ধ করে না, এটি কেবলমাত্র যে কোনও সংযোগের জন্য এমএসএস>> ৮৮ বাইট হওয়া উচিত।
geraraen

অবশ্যই! যথেষ্ট পরিষ্কার না হওয়ার জন্য দুঃখিত। সর্বশেষ সম্পাদনা দেখুন।
মিরিসা গেরজান

কেন আপনি অনুগ্রহের মেয়াদ শেষ হতে দিয়েছেন? ডেভিড এর উত্তর আমার সন্তুষ্টি পর্যন্ত জিনিস পরিষ্কার করে। তার উত্তর এবং আমার মধ্যে পার্থক্য হ'ল আমরা বিভিন্ন মিনিমা সম্পর্কে কথা বলছি। এটির মূল্য কী, তার জন্য তৃতীয় ন্যূনতম, এটি 41, বা 20 + 20 + 1 টিসিপি ডেটার বাইট by সুতরাং আপনি যে কারণে জিজ্ঞাসা করছেন তার জন্য ন্যূনতম প্যাকেটের আকার আকস্মিক। আমি আশা 68 ক্ষেত্রে যেখানে কার্নেল ব্যবহার সঠিক উত্তর হল TCP_MIN_MSS
ওয়ারেন ইয়ং

আমি এখনও উত্তর দিয়ে সন্তুষ্ট নই। যে কারনে কার্নেল আমাকে একটি অ্যাপ্লিকেশনটিতে আরবিয়েরি ছোট এমএসএস চাপিয়ে দেয় না তার কারণটি দেখতে এখনও আমি ব্যর্থ হয়েছি। আমি 41 টি বাইটের আইপি প্যাকেটগুলি (টিসিপি-লোডের একটি ধ্রুব স্ট্রিম) পেতে পছন্দ করব তবে আমি এটির কারণে পারছি না TCP_MIN_MSS। কেন এটি 1 হতে পারে না? এটি কি আরএফসি ভাঙ্গবে? এটি কোন তাত্ত্বিক / ব্যবহারিক সমস্যার কারণ হতে পারে? আপনি কি নিশ্চিত যে এটি "অনুমানের বাইরে"? "বিভিন্ন মিনিমা"? এখানে একমাত্র ন্যূনতম আগ্রহ রয়েছে: কার্নেল দ্বারা অনুমোদিত সবচেয়ে ক্ষুদ্রতম এমএসএস।
মিরসিয়া গেরজান

উত্তর:


5

সর্বাধিক আকারের টিসিপি এবং আইপি শিরোনামকে সমর্থন করার জন্য একটি বাস্তবায়নের প্রয়োজন, যা প্রতিটি 60 বাইট।

একটি বাস্তবায়নের জন্য 576-বাইট ডেটাগ্রামগুলিকে সমর্থন করা আবশ্যক, এমনকি সর্বোচ্চ-শিরোনাম সহ ডেটাগ্রামে 8 বাইটের বেশি ডেটা হওয়া উচিত। 8 বাইটের বেশি ডেটা সহ ডেটাগ্রামগুলি প্রেরণ করতে, আইপি ফ্র্যাগমেন্টেশন অবশ্যই ডেটাগ্রামের টুকরোকে উপস্থাপন করে এমন প্যাকেটে অন্তত একটি প্যাকেটে কমপক্ষে 8 বাইট ডেটা রাখতে হবে। সুতরাং একটি বাস্তবায়নের জন্য অবশ্যই কোনও প্যাকেটে অন্তত 8 বাইট ডেটা সমর্থন করা উচিত।

এটি একসাথে রেখে, একটি বাস্তবায়ন অবশ্যই 60 + 60 + 8 বাইট প্যাকেট সমর্থন করে।

আমরা যখন প্যাকেটগুলি প্রেরণ করি যা কোনও টিসিপি স্ট্রিমের অংশ, তাদের একটি 20 বাইট আইপি শিরোনাম (প্লাস বিকল্প) এবং একটি 20-বাইট টিসিপি শিরোনাম (প্লাস বিকল্প) থাকে। এটি ডেটা এবং বিকল্পের জন্য সর্বনিম্ন (60 + 60 + 8) - (20 + 20) বাইট রেখে দেয়। সুতরাং এটি কার্যকরভাবে কার্যকর করার টিসিপি এমএসএসকে আমরা ধরে নিতে পারি।


1
এমএসএস এর মধ্যে 60
শিরোনামটি

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

ঠিক আছে, সুতরাং আপনি 8 বাইট ব্যাখ্যা করেছেন। "টিসিপি / আইপি" শিরোনাম বলতে কী বোঝাতে চেয়েছি তা আমি জানি না। আমি একটি আইপি শিরোলেখ এবং একটি টিসিপি জানি। এবং, মাইকেল যেমন 60 বার দু'বার দেখিয়েছে। এবং আরএফসি কেবলমাত্র "কার্যকর এমএসএস" আলোচনা করে এবং একটি সর্বনিম্ন নয়।
মিরসিয়া গেরজান

60 বার দুবার দেখাবে, একবার আইপি শিরোলেখীর জন্য এবং একবার টিসিপি শিরোনামের জন্য।
ডেভিড শোয়ার্জ 21

68 খণ্ড খণ্ড সম্পর্কে প্রায়। "60 + 60 + 8" খণ্ডিত হয়ে যেতে পারে, তাই কেন খণ্ড খণ্ডন সম্পর্কে যত্নশীল? এমনকি "68 + 20" খণ্ডিত হতে পারে। এবং কেন "অন্যদিকে" অবশ্যই "গ্রহণ করুন" "60 + 60 + 8"? "বিভক্তকরণ ছাড়াই" হিসাবে "গ্রহণ"? নীচের লাইন: আমাকে কেন "20 + 20" + 10 বাইট ডেটা পাঠানোর অনুমতি দেওয়া হচ্ছে না?
মিরসিয়া গেরজান

3

আমি জানি না যে সংখ্যাটি কোথা থেকে এসেছে, তবে আমি আপনাকে বলতে পারি এটি এটি অনুমানের বাইরে। আইপি নেটওয়ার্কগুলির জন্য সমর্থিত সর্বনিম্ন এমটিইউ হ'ল 576 বাইট, যা আইপি + টিসিপি শিরোনাম এবং টিসিপি বিকল্পগুলির জন্য tes৪ বাইট পর্যন্ত 5১২ ডেটা বাইট। আদর্শ ক্ষেত্রে শালীনভাবে কম ওভারহেড দেওয়ার জন্য এই মানটি বেছে নেওয়া হয়েছিল।

কার্নেল কোডের বিটগুলি সম্পর্কে আমার পঠনটি বোঝায় যে আপনি যে মানটি দেখিয়েছেন তা নির্বিচারে নয়। সেখানে কেবলমাত্র কাঁচা ধ্রুবক 64 ব্যবহার করার জন্য একটি পুরানো অনুশীলন ছিল TCP_MIN_MSS। অতএব, আমি ধরে নিই যে কিছু আশ্চর্যজনক আইপি-ওভার-ফু নেটওয়ার্ক রয়েছে কার্নেল বিকাশকারীরা তাদের সামনে এসেছিল যাতে তারা কীভাবে আপনার মূল্য দেখায় তার মূল্য বাড়িয়ে দিতে পারে তা সিদ্ধান্ত নিয়েছে।

সেই নন-স্ট্যান্ডার্ড নেটওয়ার্ক টাইপটি কী, তবে আমি বলতে পারি না।


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

সর্বনিম্ন এমটিইউ আইপি ডেটাগ্রামের জন্য সংজ্ঞায়িত, এবং টিসিপি প্যাকেটগুলিও আইপি ডেটাগ্রাম।
geraraen

ঠিক আছে, তবে এই টিসিপি সীমাবদ্ধতাটি প্যাকেটের জন্য, ডেটাগ্রামের জন্য নয়, কারণ টিসিপি ডেটাগ্রামগুলি কখনই (সাধারণত) খণ্ডিত হয় না। 576-বাইট ডেটাগ্রাম রুল সম্পর্কিত একমাত্র অর্থেই এর অর্থ হল বাস্তবায়ন অবশ্যই কোনও প্যাকেটে কমপক্ষে 8 বাইট ডেটা সমর্থন করতে সক্ষম হবে (সুতরাং সূত্রের 8 টি)। অন্যথায়, 576-বাইট ডেটাগ্রাম খণ্ডন করা অসম্ভব।
ডেভিড শোয়ার্জ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.