■ UNIX Network Programming Study Checklist
Week 1 – Foundations
• ■ Refresh C programming (pointers, structs, malloc/free, function pointers).
• ■ Revise Unix basics: fork, exec, wait, signals.
• ■ Practice file I/O: open, read, write, lseek.
• ■ Install & set up Linux/WSL with GCC.
• ■ Learn to use man 2 (manual pages).
Week 2 – Intro to Networking
• ■ Read Chapter 1–2 (Intro + TCP/IP basics).
• ■ Write a program to print your hostname.
• ■ Resolve a domain to an IP (gethostbyname / getaddrinfo).
• ■ Draw OSI vs TCP/IP model (by hand for memory).
Week 3 – Sockets Basics
• ■ Read Chapter 3–4 (socket API, address structures).
• ■ Write a TCP client that connects to a server and prints “Connected!”.
• ■ Write a TCP server that accepts one connection and replies “Hello Client”.
• ■ Write a UDP echo server + client.
Week 4 – Elementary TCP/UDP Apps
• ■ Study iterative vs concurrent server (using fork).
• ■ Modify TCP server to handle multiple clients.
• ■ Implement a basic chat server (1-to-1 chat).
Week 5 – Advanced I/O
• ■ Study select, poll.
• ■ Convert chat server to handle multiple clients with select.
• ■ Implement a simple broadcast server (all clients receive messages).
Week 6 – Robustness & Advanced Sockets
• ■ Study socket options (setsockopt, getsockopt).
• ■ Experiment with SO_REUSEADDR, SO_LINGER, SO_KEEPALIVE.
• ■ Add timeout handling in your TCP client.
Week 7 – IPC (Interprocess Communication)
• ■ Study Pipes, FIFOs, Message queues, Shared memory.
• ■ Parent-child communication using a pipe.
• ■ Two processes chatting using FIFO.
• ■ Shared memory program (writer + reader).
Week 8 – Daemons & Multithreading
• ■ Learn how to create a daemon process.
• ■ Use syslog for logging.
• ■ Write a multithreaded TCP server with pthreads.
• ■ Stretch goal: build a mini HTTP server that serves static files.
After 8 Weeks – Projects
• ■ File transfer server (send/receive files).
• ■ DNS client (resolve domains via raw sockets).
• ■ Minimal proxy server (forward requests).
• ■ Multi-room chat server with threads.