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 সমস্যা সামলায়।