Connection Establishment
- Server Listens on an address:port
- Client connects
- Kernel does the handshake creating a connection
- Backend process "Accepts" the connection
In details:
- Kernel creates a socket & two queues SYN and Accept
- Client sends a SYN
- Kernels adds to SYN queue, replies with SYN/ACK
- Client replies with ACK
- Kernel finish the connection
- Kernel removes SYN from SYN queue
- Kernel adds full connection to Accept queue
- Backend accepts a connection, removed from acceptqueue
- A file descriptor is created for the connection