In order to cover for my (glaring) lack of knowledge in the basics of networking, I'm looking for a book which would ideally cover:

-> 1 or 2 chapters on the transport layer: tcp, udp...

-> 1 or 2 chapters on the application layer: http, dns...

-> rest of the book would be devoted to pratical way of sending data across the wire using Java-related technologies. This would involve discussions about existing products (eg. hessian, protobuf, thrift, tibco...) , performances comparisons, case studies...etc..

Does such a book exist ?

Edit: Thanks for all the answers so far... however most of the books listed focus heavily on the lower levels of the networking stack (ie. tcp/ip, network administration...). This is one-half of the answer only. I'm still eager to hear suggestions about the other half: discussions around the "state of the art" options available to the Java developer to ferry data around, what products/frameworks are available and how do they compare.

+3  A: 

I would recommend the networking section of the java tutorial. For core java features the java tutorial is the place to go.

this resource is good for the very basics of networking, but does not dwelve into the pros and cons of existing products and technologies (last point in my question).
+4  A: 

O'Reilly's Java Network Programming, 3rd Edition is a good resource for learning network programming with Java.

Quite a bit dated (released in 2004), but the closest match to what I'm looking for.
+3  A: 

If you are looking for improving upon basics on networking it would be better if you look at books which cover basics of networking. Once you are comfortable with the basics of networking you can start with the networking section in Java tutorial and explore the appropriate Java libraries. Networking is an area of its own whose understanding is independent of any programming language.

That said, some of the networking books which I have found helpful are :

Internetworking with TCP/IP, Vol 1 by Douglas Comer

TCP/IP Illustrated Vol.1 by W.Richard Stevens

Computer Networks by Andrew.S.Tanenbaum

+1  A: 

As a primer on networking in general, I'd recommend TCP/IP Network Administration, Third Edition, by Craig Hunt. This book provides a chapter on the TCP/IP stack, another on Addressing and routing and the remainder of the book covers in reasonable depth most common network services and diagnostic tools.

For a heavyweight reference, get TCP/IP Illustrated, Vol 1: The Protocols, by Richard Stephens, if you become obsessed with networks buy or borrow volumes 2 and 3.

As far as Java specific networking introduction, I'd suggest Java Network Programming, Third Edition, by Elliotte Rusty Harold, this book does take some critiscim but I still believe it's a good introduction and is an approachable read.

Don Mackenzie
+1  A: 

It's a general book for Java beginners but the part about networking is very, VERY clear and easy to grasp.

Head First Java, 2nd Edition

Leo Jweda
+1  A: 

computer networking - a top-down approach by Kurose/Ross has quite a heavy java leaning, and there are loads of companion java projects on the companion website.


  1. Computer Networks and the Internet
  2. Application Layer (HTTP, FTP, SMTP)
  3. Transport Layer (TCP, UDP)
  4. The Network Layer (Routers, IP)
  5. The Link Layer and Local Area Networks
  6. Wireless and Mobile Networks
  7. Multimedia Networking
  8. Security in Computer Networks
  9. Network Management
+1  A: 

For a TCP/IP text (Not Java centric)

For a Java Networking book I would go with this. Most books are very dated and do not cover the newer stuff, this one covers NIO as well as uses generics in the examples.

Romain Hippeau