How can I learn _really_ low-level network programming?

Alex Gartrell picture Alex Gartrell · Jun 5, 2009 · Viewed 18.5k times · Source

So I want to learn all about networks. Well below the socket, down to raw sockets and stuff. And I want to understand hubs, routers, access points, etc. For example, I'd like to be able to write my own software to do this kind of stuff.* Is there a great source for this kind of information?

I know that I'm asking a LOT here, and that to fully explain it all requires from high level down to low level. I guess I'm looking for a source similar in scope and depth to Applied Cryptography, but about networks.

Thanks to anyone who can help to point me (and others like me?) in the right direction.

* Yes, I realize using any of my hand-crafted network stack code would be a huge security issue, and am only looking to do it to learn :)

Similar Question: here. However I'm looking for more than just 'what's below TCP/UDP sockets?'.

Edited for Clarification: The depth I'm talking about is above the driver level. So assuming that the bits can make it to and from the other end of the wire, what next?

Answer

Greg Hewgill picture Greg Hewgill · Jun 5, 2009

I learned IP networking from TCP/IP Illustrated. Highly recommended.