@startuml title accept() — принятие TCP-соединения participant "Client" as C participant "OS Kernel" as K participant "Server" as S == Подготовка сервера == S -> K: socket() S -> K: bind() S -> K: listen()\n(создаёт очередь входящих соединений) == Входящее соединение == C -> K: connect() K -> K: TCP 3-way handshake\n(SYN → SYN-ACK → ACK) K -> K: Помещает соединение\nв очередь (backlog) note right of K Соединение завершено на уровне ОС, сервер ещё не знает об этом end note == Принятие соединения == S -> K: accept()\n(блокируется, если очередь пуста) K --> S: возвращает новый fd\n(connected socket) note right of S Оригинальный listening socket продолжает принимать новые соединения end note == Обмен данными == S <-> C: read() / write()\nчерез новый fd S -> K: close(connected_fd) @enduml