Web servers are very simple to implement, and there are several tutorials on how to build one.
Here is such a tutorial for C#: http://www.codeguru.com/csharp/.net/net_general/article.php/c4603, this tutorial is nice because it implements the server down to raw sockets and HTTP header passing, so you learn a lot about the HTTP Spec. Unfortunatly, some tutorials and libraries abstract this away.
Implementing on yourself allow you to touch many topics:
- Socket programming
- HTTP Protocol (GET / POST)
- Multi-threading
And once you get a basic webserver built you can extend your server and protocol into your own web-framework. should make a really cool pet-project.
I have done just this for Java, C++, and Python.