Apress's "The Definitive Guide to Linux Network Programming" is a clear,
concise treatment of creating clients and servers under the Linux
operating system. The book assumes that the readers knows C and has
experience developing code on Linux, but provides everything else a
programmer needs for real-world network programming, including design,
implementation, debugging, and security. Readers will learn about the
many kinds of socket types, sessioned vs. sessionless protocols, how to
build a custom protocol, encryption, how to use SSL, and how to tunnel
data.