C: accept function flow

This commit is contained in:
t0xa 2026-03-24 12:39:02 +03:00
parent b48234194c
commit 635fea6ab3

38
clang/network/accept.puml Normal file
View file

@ -0,0 +1,38 @@
@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