Understanding HTTP from the Ground Up
Webserv is a minimal HTTP server written in C. The goal was straightforward: understand how web servers actually work by building one from scratch.
What I Learned
Building a web server in C strips away every abstraction. You deal directly with:
- Socket programming where you create, bind, and listen on TCP sockets
- HTTP parsing where you read raw bytes and extract method, path, headers, and body
- Concurrency where you handle multiple clients without blocking
- Memory management where there’s no garbage collector and no runtime safety net
Most developers interact with HTTP through high-level frameworks. Writing a server in C forces you to understand what those frameworks are doing underneath. Every Content-Length header, every \r\n line ending, every Connection: keep-alive, you handle it all manually.
Why C?
Go, Rust, and Python all have excellent HTTP libraries. But C is where the web started. Apache, Nginx, and most of the internet’s infrastructure were written in C. Building a server in C connects you directly to that lineage.