In computer networking, a socket is one of the essential elements of communication between two parts of the software, also referred to as a point-to-point connection.
Network Socket Basics: Networks rely heavily on sockets, as a standard of communication, for allowing parts of software applications to communicate in distributed client server settings, or locally on a single computer system.
To illustrate a client-server model, consider the example of web browsers connecting through sockets to a single web server, all at the same time. On the other hand, joining processes on the same system through a socket explains how they can be employed for inter-process communication.
The versatile nature of network sockets is related to their bidirectional capability, allowing both sides of the communication channel to be able to send or receive data, based on the network demands.
Available Network Socket APIs
In order to implement sockets for use in a network, many Application Programming Interfaces (APIs) can be found on the Internet, from the Berkeley Socket Library for UNIX, the oldest package available since 1982, to Windows Socket (Winsock) library, offered by Microsoft since 1993.
Socket programming interfaces provide different functions for basic input and output operations, including reading, writing and closing a socket. However, it must be noted that the implementation of these basic routines might differ considerably between different programming languages and libraries.
Socket Interface Categories
Socket interfaces can be either categorized under stream network sockets, datagram sockets or raw sockets.
In a stream socket connection model, commonly known as the connection-oriented programming model, the two entities communicating through the use of sockets do so by first establishing a socket connection, through which data passes, traveling from the source to the destination. The stream connection is designed to ensure that the order of packets is preserved as the data travels through the socket communication channel. Stream connections use TCP protocol.
The other network socket model, dealing with implicit connections, is termed as the datagram socket model, employing the UDP mode of communication, allowing datagrams to be sent as per availability of the communication channel. This type of connection does not guarantee that all data is reliably transmitted or communicated to the other end of the channel in the same order as it was sent. These issues must be explicitly handled by the application programming interface that lies above the network socket layer. The major advantage of datagram sockets is their ability to allow higher performance scores for applications in certain cases, along with more flexibility, in contrast to stream sockets.
While most network sockets are used along with UDP or TCP protocols, raw sockets are highly customizable, allowing for directly sending and receiving of Internet Protocol (IP) packets, without having to worry about formatting the transport layer with any particular protocol.
A Final Word about Network Sockets
IP socket libraries communicate over the Internet through an IP address for identification of computer systems and ports and to differentiate between multiple applications. However, the use of naming services for computers, which encapsulates IP addresses makes socket programming much more straightforward and convenient.