Learning path
Computer networks
Learn protocol layering, IP addressing, TCP and UDP sockets, HTTP messages, and how routers choose where to send a packet.
About this subject
Computer networks connect machines so programs on them can exchange data. The Internet is organized in layers: links move frames between neighbours, IP moves packets across networks, TCP and UDP connect programs, and application protocols such as HTTP define what the programs say.
This path covers layering and encapsulation, IP addressing and subnets, TCP and UDP sockets on the loopback interface, HTTP request and response messages, and longest-prefix-match forwarding. Each lesson uses a small, complete program that runs on its own. Python has the full sequence. The other languages listed below add lessons that use that language's own idioms and standard library, such as Java threads, C++ smart pointers, C# LINQ, or Node.js streams, and appear only for the topics the language supports. The programs are simplified models chosen to make an idea visible, so they are a foundation for further study rather than a replacement for a full course or for production-grade software.
Before you start: Strings, bytes, dictionaries, and basic threads.
- 1
Python
Readable code for automation, data, and first programs.
Protocol layers and encapsulation
Wrap data in transport, network, and link headers on the way down and unwrap it on the way up.
IP addressing, CIDR, and subnets
Read a prefix length, count addresses and usable hosts, and split a network into subnets.
TCP sockets: a loopback echo server
Open a listening socket, connect a client, and exchange bytes over a reliable stream.
UDP datagrams
Send independent datagrams with no connection and see how UDP differs from TCP.
HTTP messages: requests, responses, and status codes
Read the text structure of an HTTP/1.1 request and response, and parse a response by hand.
Forwarding with longest-prefix match
Choose the next hop by finding the most specific route that matches a destination address.
- 2
C
Learn memory, pointers, and efficient systems programming.
- 3
C++
Build fast applications with modern types and classes.
- 4
Java
Understand object oriented programs and the JVM.
- 5
C#
Build typed applications on .NET.
- 6
JavaScript
Add behavior to the web and build applications.
- 7
TypeScript
JavaScript with static types for dependable code.
- 8
HTML
Structure accessible web pages.