Foundationপ্রথম নীতি থেকে
LEVEL 7 · Computer Networking

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 পর্যন্ত ধরা যায়।