The kernel queue that holds pending handshakes before accept

The TCP backlog holds connections that are still syncing

A listening TCP socket has two queues, not one, and the sysctl this article is named after governs the queue that almost never drops anything. The backlog passed to listen(2) is the accept queue, holding connections that finished the handshake and await the application; the SYN queue holds half-open requests. Confusing them produces the wrong fix. ...

March 24, 2028 · 4 min · XB Field Notes
Removing a named handle does not free a network namespace while a process still holds it.

Network namespaces isolate networking; their names do not own every process

A Linux network namespace separates networking resources such as interfaces, routes, neighbor tables, socket ports, and packet-filter rules. It shares the kernel with other namespaces; it is not a separate operating system. A process normally inherits its parent’s network namespace, and tools can execute a process in another one. The resulting isolation covers networking resources, not every aspect of process identity or filesystem access. ...

February 19, 2028 · 6 min · XB Field Notes
An AAAA answer identifies an IPv6 destination; a separate connection verifies whether it works.

AAAA records publish IPv6 addresses without proving reachability

An AAAA resource record contains one 128-bit IPv6 address. An A record contains an IPv4 address. A name may have either type, both types, or several addresses within each type. These are separate RRsets, so A and AAAA can have different TTLs. Publishing AAAA makes an address discoverable through DNS; it does not create an interface, route, listener, or working application. ...

December 30, 2027 · 5 min · XB Field Notes
A bulk sender grows its congestion window while an idle or application-limited sender need not double it.

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
Accepting drains the listener queue; the backlog is not the total number of open application connections.

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 · 4 min · XB Field Notes
IPv6 fragments leave the original sender, while an intermediate router returns Packet Too Big for an oversized unfragmented packet.

IPv6 routers report oversized packets; sources decide how to fit the path

An IPv6 router does not fragment a packet while forwarding it toward its destination. If the packet is too large for the next link, the router normally discards it and sends ICMPv6 Packet Too Big feedback. The source can then adjust its packet size or, where appropriate, send fragments using the IPv6 Fragment header. Reassembly of those fragments takes place at the destination. ...

October 6, 2027 · 6 min · XB Field Notes
Observe-decide-act boxes beside the message: Probe TCP peers, not app health.

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
The client can retain a valid default route while the server lacks a route for the reply.

A default route matches broadly; it does not rescue every failed path

An IPv4 default route is the prefix 0.0.0.0/0: it matches every IPv4 destination, with the least possible specificity. In a selected routing table, a longer matching prefix normally takes precedence. The default is not a procedure that retries whenever a more specific route fails. Routing policy selects relevant tables, and the chosen route describes a forwarding decision rather than promising that the entire round trip will succeed. ...

September 14, 2027 · 5 min · XB Field Notes