title: How can I learn _really_ low-level network programming?
body: <p>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?</p>
  
  <p>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 <a href="http://www.schneier.com/book-applied.html" rel="noreferrer">Applied Cryptography</a>, but about networks.</p>
  
  <p>Thanks to anyone who can help to point me (and others like me?) in the right direction.</p>
  
  <p>* 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 :)</p>
  
  <p>Similar Question: <a href="https://stackoverflow.com/questions/124968/lower-than-low-level-common-bsd-sockets">here</a>.  However I'm looking for more than just 'what's below TCP/UDP sockets?'.</p>
  
  <p>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?</p>