I recently started attending two classes in school that focus on networking, one regarding distributed systems and another regarding computer networks in general. After completing the first labs for the two classes, I now have a pretty good understand of network protocol and socket concepts with both C and Java.
Now I'm trying to move beyond the basic concepts and become better at communication class and object design, network design patterns, intermediate socket/stream management conventions, important libraries, and general *nix network programming intermediate techniques in either C or OO languages.
Can you suggest any resources that you've had success with?
Unix network programming by Richard Stevens is a must-have book which discusses many advanced network programming techniques. I've been doing network programming for years, and even now hardly a day goes by without me looking up something in this great reference.
BeeJ's Guide to Network Programming was where I learned the basic API calls for POSIX systems. There's even a section on how to translate that into Windows code.
I really just stumbled into 'good' network coding practice by trial and error early on. I found what worked and what was efficient and ran with it.
The classic Steven's texts are always a good start (e.g., UNIX Network Programming, Advanced Programming in the UNIX Environment). Other than that, focus on distributed programming techniques and message passing systems. The fact that you are passing messages over a socket isn't as important as understanding how to design an asynchronous distributed architecture.
I would also pick up a copy of the TCP/IP Illustrated as well since understanding things like how IP routing works, how TCP and UDP both work (as well as how they differ) are the most important practical things to know about networks. After that, dig into DNS and HTTP. I haven't found any really good texts about those two... maybe someone will suggest some. If all else fails, read the RFC's (RFC1034/RFC1035 for DNS and RFC2616 for HTTP).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With