ডিফল্টরূপে, যখন উভয় 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_recycle
tcp_tw_reuse
tcp_timewait_len
পরামর্শ দেয় তবে সক্ষম এবং কম করে দেয় । আমি একমত :-)