The view presented by the Java programming language for anything networking related is too high level/abstract [which is a good thing from productivity POV].
Writing networking code in C is probably the best way of hacking around with the core networking protocols and to see how the things really work; something which has been on my TODO list for quite some time. :-)