Sam,
First off, socket programming is not a protocol and is necessary for network programming. In a nutshell, protocols such as HTTP, TCP, UDP, ect - would not have a means to "communicate" without socket programming. Basically, socket programming provides the logical interface that protocols use for sending and receiving data over a network. This link will take you to Oracle's socket tutorial:
http://docs.oracle.com/javase/tutorial/networking/sockets/
I hope the above link helps you gain a deeper understanding of sockets programming in
Java. Good luck!
Steve