ACK (acknowledgment) is a TCP flag confirming receipt of data. The ACK number indicates the next byte the receiver expects. Delayed ACKs batch confirmations for efficiency (typically every 2 segments or 200ms). Missing ACKs trigger retransmission – the sender assumes data was lost.
TCP acknowledgments confirm data delivery. When a receiver gets segment with bytes 1000-1499, it ACKs with ack_number=1500, meaning 'I have everything up to byte 1499, send me byte 1500 next.' This cumulative acknowledgment scheme means a single ACK can confirm multiple segments. TCP Selective Acknowledgment (SACK, RFC 2018) extends this by reporting non-contiguous received blocks, so the sender retransmits only truly lost segments instead of everything after a gap. Delayed ACK (RFC 1122) waits up to 200ms or 2 segments before sending an ACK to reduce overhead – this trades latency for efficiency. In interactive protocols (SSH, gaming), disabling Nagle's algorithm (TCP_NODELAY) avoids interaction with delayed ACK that causes 200ms stalls.
SYN (Synchronize)
SYN is a TCP flag used to initiate a connection via the three-way handshake: SYN, SYN-ACK, ACK. The SYN packet carries the client's initial sequence number (ISN). SYN floods are a classic DDoS attack that exhausts server connection tables by sending SYNs without completing handshakes.
FIN (Finish)
FIN is a TCP flag used to gracefully close a connection. TCP close is a four-way process: FIN from initiator, ACK from peer, FIN from peer, ACK from initiator. The TIME_WAIT state after closing lasts 2*MSL (typically 60s) to handle delayed packets – this can exhaust ports on busy servers.
Retransmission
TCP retransmission resends packets that were lost or not acknowledged within a timeout period. Fast retransmit triggers after 3 duplicate ACKs (indicating a gap). Timeout-based retransmission (RTO) fires after a calculated delay. Excessive retransmissions indicate network congestion or path problems.