Linux/UNIX Network Programming course outline
- Course Introduction
- Fundamental Concepts
- System calls and library functions
- Error handling
- System data types
- Notes on code examples
- File I/O
- File I/O overview
- open(), read(), write(), and close()
- Open File Descriptions and Descriptor Duplication
- Relationship between file descriptors and open files
- Duplicating file descriptors
- Signals
- Overview of signals
- Signal dispositions
- Useful signal-related functions
- Signal handlers
- Signal sets, the signal mask, and pending signals
- Designing signal handlers
- Process Lifecycle
- Creating a new process: fork()
- Process termination
- Monitoring child processes
- Orphans and zombies
- The
SIGCHLD
signal
- Executing programs: execve()
- Sockets: Concepts and UNIX Domain
- Socket types and domains
- Creating and binding a socket
- System calls: stream sockets
- UNIX domain stream sockets
- System calls: datagram sockets
- UNIX domain datagram sockets
- Further details of UNIX domain sockets
- UNIX Domain Sockets: Ancillary Data
- Ancillary data
- Ancillary message types
- Example: passing a file descriptor over a socket
- Further details
- Sockets: Internet Domain
- Internet domain sockets
- Data-representation issues
- Loopback and wildcard addresses
- Host addresses and port numbers
- Host and service conversion
- Internet domain sockets example
- Additional sockets system calls
- Alternative I/O Models
- Nonblocking I/O
- Signal-driven I/O
- I/O multiplexing: poll()
- Event-loop programming
- Alternative I/O Models: epoll
- Problems with poll() and select()
- The epoll API
- epoll events
- Edge-triggered notification
- epoll API quirks
- TCP/IP Overview (*)
- The TCP/IP protocol stack
- The link layer
- The network layer: IP
- The transport layer
- Port numbers
- User Datagram Protocol (UDP)
- Transmission Control Protocol (TCP)
- Useful Tools (*)
- Displaying devices and addresses
- netstat and ss
- tcpdump and wireshark
- Raw Sockets (*)
- Overview of creating and using raw sockets
- Raw sockets example
- Daemons (*)
- Creating a daemon
- Reinitializing a daemon
(*) Topics marked with an asterisk are optional,
and will be covered as time permits.
Return to the course overview