In the EDNS-off article fixture, UDP returns 462 bytes with TC set and two of four TXT records. A TCP retry on the working path returns 892 bytes with TC clear and all four records.

DNS needs a working TCP path when a UDP answer is truncated

DNS supports both UDP and TCP. A server sets the TC flag when a response is truncated for the available message space. A client receiving that flag must handle the incomplete result, commonly by retrying over TCP. This is about the DNS response limit in use, not proof that the physical network cannot carry any larger UDP datagram. ...

November 19, 2026 · 6 min · XB Field Notes
Two client paths remain distinct through a shared translated address; return routing and mapping lifetime are separate.

NAT shares an address by keeping distinct connection mappings

Network Address Translation changes addressing information as packets cross a boundary. The familiar many-clients-to-one-address arrangement uses network address and port translation: the router keeps mappings that distinguish simultaneous flows. A remote TCP server may see one source IP while seeing different source ports. That shared address identifies a translation boundary, not necessarily one computer, account, or person. ...

November 18, 2026 · 7 min · XB Field Notes
An intended IPv4 model shows two namespace boundaries A and B with the identical endpoint 127.0.0.1:19091. Each local probe reaches its own service. No arrow crosses the boundary. This is not an observed run or evidence of IPv6 readiness.

Loopback returns to the caller’s network namespace

Loopback addresses let a process communicate through its local IP stack without sending the exchange over a physical network link. IPv4 reserves 127.0.0.0/8 for loopback; 127.0.0.1 is the familiar member. IPv6 uses ::1. On Linux, the relevant local networking context is a network namespace. Two processes on the same physical machine can therefore have different answers to what counts as their own loopback service. ...

November 17, 2026 · 6 min · XB Field Notes
ICMPv6 solicitation and advertisement resolve a local neighbor. Neighbor Discovery also includes router discovery and reachability detection.

IPv6 resolves neighbors with ICMPv6 before the TCP connection can work

An IPv6 host on an Ethernet link needs a link-layer destination before it can send a frame to a neighbor. Neighbor Discovery performs that address-resolution work using ICMPv6 Neighbor Solicitation and Neighbor Advertisement messages. It also covers functions beyond IPv4 ARP, including router discovery and neighbor reachability detection. Calling it merely “ARP with longer addresses” hides dependencies that matter when configuring an IPv6 network. ...

November 16, 2026 · 6 min · XB Field Notes
ARP resolves the selected IPv4 next hop on an attached Ethernet link. The cache binds IPv4 and interface to a learned MAC; an off-link destination stays outside this exchange.

ARP maps an IPv4 next hop to a link-layer address

IPv4 forwarding chooses a next hop, but Ethernet still needs a destination MAC address. Address Resolution Protocol (ARP) asks the local link which interface owns an IPv4 address, then caches the answer as a neighbor entry. The mapping is learned rather than permanent, so it can age out, be refreshed after a move, or be forged by another host on the same broadcast domain. ...

November 15, 2026 · 5 min · XB Field Notes
A route has link MTUs of 1500, 1280, and 1500 bytes. The middle link sets the path MTU; a small successful exchange does not validate large transfers.

Path MTU discovery can fail while handshakes and small requests still work

The path MTU is the smallest link MTU along a particular route. A sender cannot determine it solely from its own interface’s MTU because an intermediate link may carry smaller packets. Classic IPv4 Path MTU Discovery sends packets with Don’t Fragment set and uses ICMP fragmentation-needed feedback to reduce the estimated packet size. A working route and a working size estimate are separate requirements. ...

November 14, 2026 · 7 min · XB Field Notes
Two connection tuples share local address 192.0.2.1 and port 40200 but differ in the remote port, 18080 versus 18081. Reuse depends on socket and kernel rules.

TIME-WAIT protects a connection incarnation, not exclusive ownership of a port

TIME-WAIT is a TCP state retained after certain orderly connection closures. It gives the closing exchange time to complete if the final acknowledgment must be repeated and helps prevent delayed segments from an earlier connection incarnation being confused with a later one. The relevant identity includes both endpoint addresses and ports. A TIME-WAIT entry is not simply a universal lock on one local port number. ...

November 13, 2026 · 6 min · XB Field Notes
Two separate window limits constrain outstanding data; a separate pacing timeline spaces transmissions. Each sender chooses its own congestion policy.

TCP congestion control belongs to each sender, and peers can use different algorithms

TCP congestion control limits how a sender injects data into a network that has finite shared capacity. Its congestion window constrains outstanding data, while pacing, when used, controls how transmissions are distributed over time. The receiver’s advertised window imposes a separate flow-control limit. These mechanisms interact, but they describe different constraints and should not be collapsed into one ambiguous sending-speed setting. ...

November 12, 2026 · 6 min · XB Field Notes