Foundationপ্রথম নীতি থেকে
LEVEL 7 · Computer Networking

TIME_WAIT

টাইম-ওয়েট

TCP connection close-এর পর active closer যে state-এ অপেক্ষা করে, দেরিতে আসা পুরনো segment ফেলার জন্য।

চার-ধাপ close-এর শেষে যে পক্ষ প্রথম FIN পাঠায় (active closer) সে TIME_WAIT-এ যায় — Linux-এ ৬০ সেকেন্ড fixed (2×MSL)।

কেন অপেক্ষা

  • শেষ ACK হারালে peer FIN retransmit করবে; TIME_WAIT-এ থাকলে ACK আবার পাঠানো সম্ভব — connection সৎভাবে মরে
  • একই 4-tuple-এর পুরনো connection-এর দেরিতে আসা segment নতুন connection-এ ঢুকে data corrupt করা আটকায়

ব্যবহারিক সংকট — server বারবার active closer হলে (short- lived HTTP connection) হাজার হাজার TIME_WAIT জমে, ephemeral port ফুরিয়ে connect() fail করতে পারে।

ss -tan | awk '{print $1}' | sort | uniq -c
sysctl net.ipv4.tcp_tw_reuse      # outgoing connection-এ reuse

Mitigation: client-কে close করতে দেওয়া, keep-alive, connection pool; SO_REUSEADDR শুধু bind-এর TIME_WAIT সমস্যা সামলায়।