I understand the basics of networking such as Lan and stuff. I know what many of the protocols are and how to build a client/server socket program in C. But what I really want is a very good understanding of how networks actually work. Not only from a programming aspect but also from a application aspect. I am looking for some material(preferably a book) which will give me a very good foundation to go off of. I am in the middle of wanting to be a programmer or a UNIX admin, so I really should learn and know how to apply networking fundamentals.
Does any such a concise resource exist? Would it be better going the more academic route by buying a networking book(such as those from Tanenbaum or Kurose), or is it better to go the It route possibly looking into network admin text or certification books.
Thank you all so much.
Exploring the material covered in ICND1, ICND2, which is what prepares you for CCNA would be a good learning path to take.
Computer Networks by Tanenbaum is a very good introduction to lots of different types of networks, although I don't know how up to date it currently is. The latest edition appears to be 2002. I don't know if it covers things like MPLS in any detail. It should give you a decent wide, but shallow introduction to the subject.
Once you've read an introductory book, you might want to read something like TCP/IP Illustrated or Internetworking with TCP/IP.
Interconnections: Bridges, Routers, Switches, and Internetworking Protocols is a good introduction to switches and the protocols that make them work together. BGP gives a deep coverage of the BGP routing protocol.
Check out O'Reilly's "Network Warrior". It's a good guide to practical networking - the protocols and techniques that are actually used in modern networks: http://oreilly.com/catalog/9780596101510
W. Richard Stevens' books 'UNIX Network Programming' and 'TCP/IP Illustrated' are must reads, no matter which career you go with.
If you would like more detail on the underlying technologies and theory, 'Computer Networks', by Andrew Tanenbaum was the seminal text when I was studying; again, highly recommended.
Another resource is to play around with network traces. Like look at the trace of loading a simple web page, file sharing, SSL, etc.
I personally used a Sybex study guide for the Network+ exam with a pretty solid understanding of networking already. It covered many topics, but not all. If you're looking into being a UNIX admin understanding topics such as VLANs, subnetting, and various types of tunneling are fairly important. I would recommend a Network+ exam study guide at a minimum, or a CCNA if you want a real education in networking.
Honestly, there is plenty of information out there to learn, but in the end, you can't beat real-world experience. If your current job won't provide this, setup various networks at home and put them through the paces...
That said, I wouldn't discount 'book learning' either... I think you need both for 'true' understanding.