We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.

Welcome to “Learn the HTTP Protocol”

Or, as I like to call it, HTTP from TCP.

In this course, we'll build our own HTTP 1.1 server from scratch in Go.

Click to play video

for Windows Users

If you try to complete this course without WSL 2 installed on Windows, you're gonna have a bad time.

Prerequisites

Learning Goals

  1. Understand the big ideas of HTTP, and implement the HTTP/1.1 protocol. (Look, the RFC is long, but the main points are fairly straightforward). You'll understand from a high level what happens when you fetch("google.com").
  2. To feel like a wizard, building the protocol of the internet from scratch.
  3. To gain more challenging programming practice, and a deeper understanding of how web applications work.
  4. To have a good time.

Story Time

I still remember sitting in class, fall of 2007, as I watched my first data structure coded in Java. The magic I felt seeing a class reference itself...

class Node<T> {
    public Node prev;
    public Node next;
    public T data;
    ...
}

In that moment, I knew I was a computer scientist through and through. This feeling reached a pinnacle when I had to create a video transfer protocol for a government robot.

  • Packet ordering? Nope.
  • Reliable transport? Ackshually yes. (pikachu shocked face)
  • Corrupt Data? Regularly.
  • But did I create it? You're darn tootin'.

I felt empowered. And the best part? It was all in C.

Were there security issues? Yep. Memory leaks? Probably. I wouldn't know. Did it successfully transfer video while the other teams struggled to get basic hardware components to even work? Yes. I felt like a wizard. And I want you to feel like a wizard too.

Welcome to TCP to HTTP.

Boot.dev CLI

Throughout this course, you'll be using the Boot.dev CLI to run our tests (which are just CLI commands) against your local environment. Install it now if you don't already have it. All the instructions and troubleshooting info are on the GitHub page.

Make sure the Boot.dev CLI install worked:

bootdev --version

If you're stuck, reach out in the help forums of the Discord.

Once the bootdev command is working, log in and follow the instructions:

bootdev login

Assignment

Once you have the CLI installed and you're logged in, copy and paste the run command from the right into your terminal and execute it. If it's doing what you'd expect (printing bootdev cli is ready!), then use the submit command.