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:
Jayesh A Lalwani wrote:TCP protocol is not above sockets. The socket API allows you to communicate using TCP. From a programmers POV, socket programming IS TCP
Just for completion only. The other protocol that sockets supports is UDP. See the DatagramSocket class for sending/reveiving UDP on a unicast address, and MulticastSocket for sending/receiving on a multicast group.