About
A Network socket or net socket is a socket for the Internet protocol suite (TCP and UPD) that creates a network connection to or from which information is transmitted in the network between a server (local machine) and a client (remote machine).
It's also known more commonly as the endpoint as this is where the service will bind to be able to listen and answer their clients.
This connection is implemented by software (not hardware) by creating a network interface.
Today, most communication between computers is based on the Internet Protocol; therefore most network sockets are TCP sockets.
Socket communications are nowadays bidirectional (full duplex) (With Tcp sure, udp ???)
Id
A net socket on an operating system level is characterized by a unique combination of the following:
- Local socket address
- Remote socket address - Only for established TCP sockets as a TCP server may serve several clients concurrently on the same local address. (See TCP - Connection)
- Protocol: A transport protocol (e.g., TCP, UDP, raw IP, or others). TCP port 53 and UDP port 53 are consequently different, distinct sockets.
The output of netstat showing a socket Id with its state. They are all TCP socket
Address
A socket address is the combination of
- the internet protocol: TCP or UDP
- and an endpoint (host+port)
Type
The type of socket is defined by the protocol that implements it. (ie a TCP socket is a socket implemented by TCP)
There are several Internet socket types available:
- A TCP/IP socket is a TCP socket
- Datagram sockets, also known as connectionless sockets
- Stream sockets, also known as connection-oriented sockets, which use Transmission Control Protocol (TCP) or Stream Control Transmission Protocol (SCTP).
- Raw sockets (or Raw IP sockets), typically available in routers and other network equipment. Here the transport layer is bypassed, and the packet headers are made accessible to the application.
State
Socket lifecycle.
A state is an information that is given for a protocol that supports a connection. It means that this is often about a TCP socket because UDP is connection less
Listening
- Listening: Computer processes that provide application services are called as servers, and create sockets on start up that are in listening state. These sockets are waiting for initiatives from client programs. See TCP Listening state
Established
- Established:
- A UDP socket cannot be in an established state, since UDP is connectionless. Therefore, netstat does not show the state of a UDP socket.
The operating system forwards the payload of incoming IP packets to the corresponding application by extracting the socket address information from the IP and transport protocol headers and stripping the headers from the application data.
Management
List
The output of netstat showing a socket Id with its state
Count
- Number of open sockets with netstat
netstat | grep port
where:
- port is the listening port.
Utility
Netcat can be used to send data over socket.
Language
Java
SocketAddress bindAddress = SocketAddress.inetSocketAddress(4043, "localhost");
For IPC, you could also use ObjectOutputStream and ObjectInputStream connected to network sockets and exchange Java objects directly between the two programs. Or you could design your own protocol.