The sockets feature is available with most current UNIX system releases.
Sockets allow communication between two different processes on the same or different machines.
To a programmer a socket looks and behaves much like a low level file descriptor. For most operations using sockets, the roles of client and server must be assigned. A server is a process which does some function on request from a client. As will be seen in this discussion, the roles are not symmetric and cannot be reversed without some effort. The client starts out by fetching a packet from the network layer, using it to construct a frame and sending it on its way.