At first, here is the TCP/IP protocole bible: RFC793.
TCP/IP is a large collection of different communication protocols based upon the two original protocols: TCP and IP.
TCP is at the 4th level of the OSI model (transport layer) and IP at the 3rd level (network layer).
The TCP protocol is used for the data transmission from an application to the network and can handle
a byte flow (stream) between a source and an addressee in a total reliable way.
A TCP connection is represented by a quintuplet {protocol, IP local_address, local_port, IP remote_address, remote_port} and
is unique all over a given network.
A connextion is totally defined by 2 half-sockets: the source (client) half socket and the destination (server) half socket .
When listening to a port, the TCP server creates a half-socket (server socket). When receiving a connection
the server duplicates this half-socket and connects it with the distant half-socket (client socket) in order to
build the communication socket that will insure the information data flow. Therefore, at each moment, the
server has an available half-socket.