Web systems / July 2026
How the web fits together.
Learning each component separately was useful. Connecting the request from DNS lookup to backend response made the security boundaries easier to see.
DNS maps human-readable names to records that computers and services can use. An A record points to IPv4, AAAA to IPv6, CNAME to another hostname, MX to mail servers, and TXT can carry verification or email-security policy.
Finding the destination
The browser or operating system checks its cache first. If it needs help, it asks a recursive resolver. That resolver can follow the chain from a root server to the correct top-level-domain server and then to the domain’s authoritative nameserver. The authoritative server returns the requested record, and the resolver caches the answer for its time to live.
That corrected an early version of my notes where I mixed up the resolver, root server, and authoritative server. The recursive resolver does the journey on the client’s behalf; the root does not store the final address for every domain.
Serving the request
Once the client has an address and establishes a connection, a web server such as Nginx, Apache, IIS, or a Node.js application handles HTTP requests. Static files may come directly from a configured document root. Backend code can authenticate users, query databases, call other services, and build dynamic responses.
The supporting systems
A load balancer distributes requests and can stop routing to an unhealthy server. A CDN places static content closer to users. A database stores application state. A web application firewall can inspect requests and enforce controls such as rate limits, while TLS protects HTTP data in transit.
Each addition improves a capability but also creates another trust boundary, configuration surface, and source of logs. Understanding the full path makes it easier to ask where input is validated, where identities are checked, where secrets live, where failure can spread, and which system would record the evidence.