ডিফল্টরূপে, যখন উভয় tcp_tw_reuseএবং tcp_tw_recycleঅক্ষম হয়ে গেলে, কার্নেল নিশ্চিত করবে যে TIME_WAITরাজ্যে সকেটগুলি সেই রাজ্যে যথেষ্ট দীর্ঘ থাকবে - এটি নিশ্চিত হওয়ার জন্য যথেষ্ট যে ভবিষ্যতের সংযোগগুলির সাথে সম্পর্কিত প্যাকেটগুলি পুরানো সংযোগের দেরী প্যাকেটের জন্য ভুল হবে না।
যখন আপনি সক্ষম করবেন tcp_tw_reuse, TIME_WAITরাষ্ট্রের সকেটগুলি মেয়াদ শেষ হওয়ার আগে ব্যবহার করা যেতে পারে এবং কার্নেলটি এটি নিশ্চিত করার চেষ্টা করবে যে টিসিপি সিকোয়েন্স সংখ্যার সাথে কোনও সংঘর্ষ নেই। আপনি যদি সক্ষম হন tcp_timestamps(ওরফে PAWS, সুরক্ষার বিরুদ্ধে র্যাপড সিকোয়েন্স নম্বরের জন্য), এটি নিশ্চিত করবে যে এই সংঘর্ষগুলি ঘটতে পারে না। যাইহোক, উভয় প্রান্তে সক্রিয় করার জন্য আপনার টিসিপি টাইমস্ট্যাম্পগুলি প্রয়োজন (অন্তত, এটি আমার বোঝার)। গোরো বিবরণের জন্য tcp_twsk_unique এর সংজ্ঞাটি দেখুন ।
আপনি সক্ষম করার পরে tcp_tw_recycle, কার্নেলটি আরও বেশি আক্রমণাত্মক হয়ে ওঠে এবং দূরবর্তী হোস্টগুলির দ্বারা ব্যবহৃত টাইমস্ট্যাম্পগুলিতে অনুমানগুলি তৈরি করে। এটি প্রতিটি দূরবর্তী হোস্টের TIME_WAITরাষ্ট্রের সাথে সংযোগযুক্ত সর্বশেষ টাইমস্ট্যাম্প ট্র্যাক করবে ) এবং টাইমস্ট্যাম্পটি সঠিকভাবে বৃদ্ধি পেলে সকেটটি পুনরায় ব্যবহারের অনুমতি দেয়। তবে, হোস্ট দ্বারা ব্যবহৃত টাইমস্ট্যাম্প পরিবর্তিত হলে (অর্থাত্ সময়সীমার পিছনে ফিরে আসে), SYNপ্যাকেটটি নিঃশব্দে বাদ যাবে এবং সংযোগটি প্রতিষ্ঠিত হবে না (আপনি "সংযুক্ত সময়সীমা" এর অনুরূপ একটি ত্রুটি দেখতে পাবেন)। আপনি যদি কার্নেল কোডটিতে ডুব দিতে চান তবে tcp_timewait_state_process এর সংজ্ঞাটি একটি ভাল সূচনা পয়েন্ট হতে পারে।
এখন, টাইমস্ট্যাম্পগুলি কখনই সময় মতো ফিরে আসা উচিত নয়; যদি না:
- হোস্টটি পুনরায় বুট করা হয়েছে (তবে তারপরে, এটি ফিরে আসার সাথে সাথে
TIME_WAITসম্ভবত সকেটটির মেয়াদ শেষ হয়ে যাবে, সুতরাং এটি কোনও নন ইস্যু হবে);
- আইপি অ্যাড্রেসটি দ্রুত অন্য কোনও কিছুর দ্বারা পুনরায় ব্যবহার করা হয়েছে (
TIME_WAITসংযোগগুলি কিছুটা সময় TCP RSTঅবধি থাকবে , তবে অন্যান্য সংযোগগুলি সম্ভবত আঘাত হানে এবং এটি কিছু স্থান খালি করে দেবে);
- নেটওয়ার্ক ঠিকানার অনুবাদ (বা স্মার্ট প্যান্ট ফায়ারওয়াল) সংযোগের মাঝখানে জড়িত।
পরবর্তী ক্ষেত্রে, একই আইপি ঠিকানার পিছনে আপনার একাধিক হোস্ট থাকতে পারে এবং তাই, টাইমস্ট্যাম্পগুলির বিভিন্ন সিকোয়েন্সগুলি (বা, বলেছেন যে ফায়ারওয়ালের মাধ্যমে প্রতিটি সংযোগে টাইমস্ট্যাম্পগুলি এলোমেলোভাবে করা হয়)। সেক্ষেত্রে কিছু হোস্ট এলোমেলোভাবে সংযোগ করতে অক্ষম হবে, কারণ সেগুলি এমন একটি বন্দরে ম্যাপ করা হয়েছে যার জন্য TIME_WAITসার্ভারের বালতিতে একটি নতুন টাইমস্ট্যাম্প রয়েছে। এজন্য ডক্স আপনাকে জানায় যে "NAT ডিভাইস বা লোড ব্যালেন্সারগুলি সেটিংসের কারণে ড্রপ ফ্রেম শুরু করতে পারে"।
কিছু লোক একা চলে যাওয়ারtcp_tw_recycletcp_tw_reusetcp_timewait_len পরামর্শ দেয় তবে সক্ষম এবং কম করে দেয় । আমি একমত :-)