Course not currently available
Linux Network Programming Training Course
Course
Online
Description
-
Type
Course
-
Methodology
Online
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.
About this course
C language
Linux user skills
Reviews
Subjects
- Options
- Linux
- Apache
- Network
- Web
- Green
- Programming
- TCP
- Network Training
- Operating System
Course programme
- Sockets
- Creating datagram sockets
- Receiving and sending data
- Creating and accepting TCP connections
- Closing sockets
- Handling errors
- 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
- Waiting for data
- Blocking sockets
- Non-blocking sockets and select
- Select as a way to wait for "any of these sockets"
- Organizing reads and writes
- Dealing with short reads and writes
- Reading up to a delimiter
- Pipelined requests
- Application-level buffers
- Event-driven architecture
- Using select for multiplexing all client connections in one thread
- State machines
- Callback hell
- Event libraries
- "Green" threads
- 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
- Timeouts and timers
- SIGALARM
- 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
- Integration with the operating system
- Traditional daemons
- Systemd socket activation
- Logging
- Handling signals
- Performance and scalability optimizations
- Choosing the right architecture
- Setting socket options
Additional information
Linux Network Programming Training Course