Computer Networks
Computer networks take the previous topic's isolation, addressing, and controlled access and stretch them across many separate machines connected by nothing but a wire, a radio signal, or a fiber link, exactly the extension operating systems closed by promising. Instead of sending a file in one unbroken stream, a network breaks it into packets, small chunks of data each carrying its own header with a source and destination address, so that if one chunk gets lost or corrupted only that chunk needs to be resent rather than the entire transfer. An IP address identifies a specific machine on the network, playing exactly the same role at network scale that a memory address already played inside one machine in memory and program execution — a unique location that data can be addressed to and delivered toward. Routing is how a packet actually gets from its source to its destination across a network of many intermediate machines called routers: each router looks only at the destination address and forwards the packet one hop closer, the same kind of shortest-path graph traversal already covered in algorithms, except the graph here is made of physical routers and the edges are physical links. Once packets can reach a destination, TCP and UDP decide how reliably they arrive: TCP numbers every packet, waits for acknowledgment, and automatically retransmits anything lost or out of order, trading some speed for a guarantee that data arrives complete and in the right sequence, exactly what loading a web page needs; UDP skips all of that overhead and just fires packets off with no guarantee of delivery or order, which is wasted effort for a file but ideal for something like a live video call, where a late packet is worthless anyway and arriving fast matters more than arriving guaranteed. DNS is the system that turns a human-readable name into the IP address routing actually needs, functioning as the internet's phone book: typing a domain name triggers a DNS lookup that resolves it to an IP address before a single packet can even be addressed. HTTP is the application-level language built on top of all of this, the actual request-and-response format a browser and a web server speak once a TCP connection is established, with a request naming a specific resource and a response carrying it back. Every layer here builds on the one below it, the same layered discipline this entire series has used since digital logic, and the next topic, databases, is what sits on the other end of that HTTP response, organizing the actual data being requested.