views:

522

answers:

5

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?

+8  A: 

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.

Cayle Spandon
+2  A: 

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).

D.Shawley
+4  A: 

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.

Adam Hawes
+1  A: 

If you are coming from Java and have just learned socket programming, I'd strongly recommend Elliotte Rusty Harold's Java Network Programming

Mystic
+1  A: 

Steven's Know it all book about Network Programming is too detailed to start with and contains library to encapsulate the real socket programming.

I would recommend to start with the Beej's Guide to Network Programing and then move to the TCP/IP Sockets in C. They give a a lot good basics about the network programming and provide a platform to finally go through the Stevens book.

Stevens others books like TCP/IP illustrated series covers all the conceptual part of networks.

rahijain