The SYN queue holds incomplete handshakes; the accept queue holds established connections awaiting accept(). With listen backlog configured as 8192 and somaxconn as 4096, the accept-side cap is 4096. Buffering more waiting work does not itself increase processing rate. The source article remains held/pending.

The SYN backlog holds incomplete handshakes

A listening TCP socket separates incomplete handshakes from established connections waiting for accept(). The real setting is tcp_max_syn_backlog; this article retains its historical URL spelling. It concerns remembered incomplete requests, whereas the listen() backlog concerns the accept queue. Diagnose which stage is under pressure before choosing a remedy. ...

March 24, 2028 · 4 min · XB Field Notes
In the article’s Reno example, idle time and a one-byte request leave cwnd at ten segments; a one-MiB transfer includes selected values 10, 20, 40 and 80. These are sampled values, not one value per RTT.

TCP slow start grows with acknowledged data, not merely with elapsed time

Slow start grows a TCP sender’s congestion window while it learns how much outstanding data the path can support. With enough data and suitable acknowledgments, the classic behavior is approximately exponential growth across round trips. “Doubles every RTT” is a useful simplified pattern, not an unconditional timer rule. The window changes in response to transport feedback and the implementation’s growth conditions. ...

December 28, 2027 · 6 min · XB Field Notes
Client offers shift one and server offers shift two. After setup, the server’s advertised field 53,213 is multiplied by four for a 212,852-byte receive window. SYN and SYN-ACK windows remain unscaled.

TCP window scaling enlarges receive-window encoding in each direction

TCP’s header has a 16-bit receive-window field. Window scaling lets established connections interpret that field using a shift negotiated during setup, allowing a receiver to advertise more than 65535 bytes of space. The two directions can use different shifts. The extension enlarges the encoding of receive-window information; it does not directly enlarge every buffer or guarantee that a sender will keep that much data in flight. ...

December 2, 2027 · 6 min · XB Field Notes
Historical source packet-order lanes show Nagle on: a, ACK covering a, b; TCP_NODELAY: a, b, first data ACK. Both source trials receive ab and return OK.

Nagle and delayed ACK can stall the second part of a small request

Nagle’s algorithm reduces small TCP segments by holding additional short data while earlier data remains unacknowledged, unless enough data accumulates for a full segment. Delayed acknowledgment is a separate receiver behavior that can postpone an ACK briefly. The interaction matters when an application sends a request in multiple small writes and the peer needs the later bytes before producing a response. ...

October 31, 2027 · 6 min · XB Field Notes
A verified SYN cookie reaches the separate accept queue only if admitted. The application must still call accept().

SYN cookies answer when the queue overflows

A Linux TCP listener distinguishes pending handshake requests from established connections waiting for accept(). These are commonly called the SYN queue and accept queue. Their capacity limits and overflow paths differ, so diagnosing a connection failure requires identifying which stage is under pressure. ...

October 30, 2027 · 4 min · XB Field Notes
Established connections wait in an accept queue. An accept() arrow moves one to accepted sockets, which can remain open.

The listen backlog holds connections waiting for accept

On Linux TCP sockets, the listen() backlog concerns established connections waiting for the application to accept them. The incomplete-handshake queue is a separate concept. Calling accept() removes a pending connection and returns a connected socket for application use. That accepted connection no longer occupies the listener’s accept queue, even if it remains open and busy for a long time. ...

October 25, 2027 · 5 min · XB Field Notes
Two separated rows distinguish a TCP peer kernel that can return ACK from a peer application that may stay silent. The footer calls for an application wait deadline in addition to probing TCP.

TCP keepalive probes idle connections

TCP keepalive asks whether the other TCP endpoint still responds after a quiet period. It does not ask whether an HTTP handler, database query, or worker is making progress. A peer’s kernel can acknowledge traffic while its application is stalled. Treat transport reachability and useful application responses as different observations. ...

October 5, 2027 · 5 min · XB Field Notes
A received byte range is followed by a gap and a later received range. Cumulative ACK stays at the gap; SACK reports the later received range.

SACK reports received ranges beyond a gap so recovery can target missing data

A TCP cumulative acknowledgment identifies the next byte expected in order. If a segment is missing but later bytes arrive, that acknowledgment cannot advance across the hole. Selective Acknowledgment, or SACK, adds information about received byte ranges beyond the cumulative boundary. It helps a sender distinguish missing data from data already queued at the receiver, improving the information available to its recovery algorithm. ...

September 11, 2027 · 6 min · XB Field Notes