Linux Network Programming Training Course

Last updated

Course Code



14 hours (usually 2 days including breaks)


  • C language
  • Linux user skills


This course is addressed to junior software developers. After the course completion, the trainees will be able to understand the architecture of well-known web servers such as Apache or Nginx, and implement their own network programs.

The course is 67% lectures, 33% hands-on exercises.

Course Outline

  1. Sockets
    • Creating datagram sockets
    • Receiving and sending data
    • Creating and accepting TCP connections
    • Closing sockets
    • Handling errors
  2. Handling more than one client in a simple way
    • Prefork model, as found in Apache
    • Forking a new process per client
    • Cleaning up after finished processes
    • Threads
    • Inetd, systemd units
  3. Waiting for data
    • Blocking sockets
    • Non-blocking sockets and select
    • Select as a way to wait for "any of these sockets"
  4. Organizing reads and writes
    • Dealing with short reads and writes
    • Reading up to a delimiter
    • Pipelined requests
    • Application-level buffers
  5. Event-driven architecture
    • Using select for multiplexing all client connections in one thread
    • State machines
    • Callback hell
    • Event libraries
    • "Green" threads
  6. Problem of 10000 connections
    • Problems with prefork model and select-based loop
    • poll as an alternative to select
    • Realtime signals and why you shouldn't use them
    • Epoll (linux) and kqueue (BSD)
    • Why and when epoll and kqueue are faster than poll/select
  7. Timeouts and timers
    • Timeout as a select argument
    • A simple case of all-equal timeouts
    • Priority queue as an abstract data stracture
    • Binary heap as a priority queue implementation
    • Timer wheel
    • timerfd
  8. Integration with the operating system
    • Traditional daemons
    • Systemd socket activation
    • Logging
    • Handling signals
  9. Performance and scalability optimizations
    • Choosing the right architecture
    • Setting socket options




Related Categories

Related Courses

Course Discounts

Course Discounts Newsletter

We respect the privacy of your email address. We will not pass on or sell your address to others.
You can always change your preferences or unsubscribe completely.

Some of our clients

This site in other countries/regions