Last weekend, I’ve built a simple web server completely in 64-bit Linux assembly (x86-64, Intel syntax, no prefix).
Working at this low level was both challenging and fascinating — you interact directly with the kernel using syscalls, with no abstractions in between. This project gave me a deeper understanding of how the Linux kernel handles processes, sockets, and networking.
The server supports GET and POST requests and uses fork to handle multiple requests in parallel. Along the way, I also wrote standalone syscall programs to gradually build up to the full server.
This journey not only sharpened my systems programming skills but also helped me understand what really happens under the hood when we say “the kernel does it for us.”
Check out the code here:
https://github.com/kh0kamoni/asm_webserver/blob/main/webserver.s
This was a basic computing module from (pwn.college)