Socket
সকেট
Process আর kernel network stack-এর মধ্যের file-descriptor interface, যেটা IP-port-protocol-এর জোড়াকে read/write-এ নামিয়ে আনে।
Process-এর নাগালে network-এর দরজা — একটা fd, যেটাতে read/write/
close চলে। Connection চেনায় 5-tuple:
(protocol, src IP, src port, dst IP, dst port)।
TCP server-এর জীবন
int srv = socket(AF_INET, SOCK_STREAM, 0); // দরজা বানাও
bind(srv, addr, sizeof(addr)); // IP:port ভাড়া নাও
listen(srv, backlog); // শোনা শুরু
for (;;) {
int conn = accept(srv, NULL, NULL); // প্রতি client-এ নতুন fd
read(conn, buf, sizeof(buf));
close(conn);
}
Client-এ bind() লাগে না — connect() নিজেই ephemeral port
বেছে নেয়।
accept আসলে কী দেয় — listen socket শুধু handshake সামলায়; established connection প্রতিটার জন্য আলাদা fd। Backlog মানে handshake-done কিন্তু yet-to-accept queue-র সীমা।
Domain-এ AF_INET/AF_INET6/AF_UNIX (local IPC-ও socket),
type-এ SOCK_STREAM(TCP)/SOCK_DGRAM(UDP); raw socket
(SOCK_RAW) দিয়ে packet পর্যন্ত ধরা যায়।