Pull to refresh
17
Сергей@zersh

Системный администратор

5
Subscribers
Send message

Сказки цифрового города: часть первая — Пакетик TCP

Level of difficultyEasy
Reading time2 min
Reach and readers4.9K

В одном цифровом городе, где каждое устройство, каждый сервер и каждый байт данных живут и взаимодействуют как персонажи в большом технологическом театре, были два главных героя: Пакетик и Серверина.

Пакетик был молодым и энергичным посланием, которое отправлялось из одного конца города в другой, чтобы доставить важную информацию. Серверина, с другой стороны, была мудрой и надежной серверной станцией, которая обрабатывала все данные, приходящие к ней.

Однажды Пакетик должен был доставить очень важное сообщение от своего пользователя, молодого программиста, к Серверине. Сообщение содержало код, который мог значительно улучшить производительность Серверины.

Пакетик начал свое путешествие с установления соединения. Он постучал в дверь Серверины, отправив специальный сигнал, называемый SYN (синхронизация). Серверина ответила ему сигналом SYN-ACK, подтверждая, что она готова к диалогу и добавила свой собственный сигнал подтверждения (ACK).

Затем Пакетик с радостью отправил свое сообщение, уверенный, что Серверина готова его принять. По мере того как он передавал данные, он ожидал подтверждения от Серверины, что она получила каждый кусочек информации. Это было важно, так как дороги в цифровом городе могли быть переполнены, и данные могли потеряться. Но этого оказалось недостаточно. Как только Пакетик начал отправлять данные, Злыдень, который любил вносить хаос в передачу данных, начал мешать передаче, перехватывая и скрывая некоторые из сообщений Пакетика.

Пакетик, заметив, что его подтверждения не приходят вовремя, начал использовать использовал таймауты, о которых ему рассказал волшебник Конфигур (sysctl), настроенные в соответствии с параметрами sysctl.conf (net.ipv4.tcp_retries2 для
количества попыток передачи данных перед считыванием пакета потерянным и net.ipv4.tcp_syn_retries для количества повторных SYN-пакетов). Каждый раз, когда таймаут истекал без получения подтверждения от Серверины, Пакетик повторно отправлял данные, убеждаясь, что каждый бит информации будет доставлен.

Читать далее

Когда TCP-сокеты отказываются умирать

Reading time10 min
Reach and readers61K

Когда TCP-сокеты отказываются умирать

В поисках причин, почему установленные соединения не разрываются в некоторых случаях, я набрёл на отличную статью в блоге Cloudflare. Которая в итоге помогла найти не только решение моей проблемы, но и помогла лучше понять как работают таймауты TCP соединений в Linux.

Читать далее

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Системный администратор, DevOps-инженер
Linux
Nginx
Bash
Perl