Networking for Web Developers
Summary
How does the Web work? Under the hood of HTTP there's a whole stack of networking protocols.
Explore the underpinnings of the net with tools like traceroute
, tcpdump
, and nc
.
Expected Learning
As a web developer, it's handy to know a bit about the TCP/IP stack, IP addressing, DNS, and other protocols that underlie the Web technologies you use.
Syllabus
Lesson 1: From Ping to HTTP
In this lesson you'll begin using command-line tools to explore the network: ping
to check hosts, and nc
(netcat) to manually communicate with web servers and to emulate a web server. You'll also learn about port numbers and the layering of HTTP on top of TCP.
Lesson 2: Names and Addresses
In this lesson you'll learn about the Domain Name System (DNS). Optionally, you'll register your own domain name for your web server. You'll also learn more about the binary representation of IP addresses.
Lesson 3: Addressing and Networks
In this lesson you'll learn more details about Internet addressing: network blocks, interfaces, network address translation (NAT), and IPv6.
Lesson 4: Protocol Layers
In this lesson you'll use tcpdump
to examine the packets that make up the requests and responses for three protocols: ping, DNS, and HTTP. You'll learn more about how TCP sessions work.
Lesson 5: Big Networks
In this lesson you'll learn more about bandwidth, latency, filtering, and other properties that matter when users are accessing your application over the Internet.
Required Knowledge
You have written code that makes use of HTTP. As a beginning backend developer, you may have written code that accepts or performs HTTP requests. But you'd like to know more about what's going on "under the hood" when you use HTTP.
You can use the Linux command line. To follow the material in this course, you'll need to enter commands into the shell and make sense of their output. You'll use command-line programs like ping
and tcpdump
to gather information about computers on the network.
You have used the Internet. If you're looking at this page, you pass this requirement! This course does not assume that you are configuring routers or building firewalls in your spare time. It is really intended as an introduction.
You have access to a Linux system to run commands. If you're taking this course as part of a Udacity Nanodegree program, you can use the Linux-based development environment that we have set up for you. Find out how to access it here. Many of the practical exercises in this course can be done using another Unix-like shell environment, but you may get different results for some exercises.