Сети и протоколы
TCP handshake: тест с выбором ответа
Шесть вопросов поперёк всего юнита. Каждый отражает решение, которое ты принимаешь в реальном инциденте — не флаг для называния, а компромисс, который надо взвесить, пока горит задержка или память.
Убедись, что связываешь цену RTT в handshake, безопасность ISN, защиту от флуда, congestion control и канонические production-патологии — тот синтез, к которому вели отдельные уроки.
REST-клиент открывает новое TCP-соединение на каждый запрос к origin с RTT 140 мс, затем накладывает TLS 1.3. Почему каждый вызов медленный, хотя payload крошечный, и какой структурный фикс?
Почему RFC 6528 вычисляет Initial Sequence Number как счётчик по времени плюс keyed-хэш 4-кортежа, а не начинает с нуля?
Во время SYN-флуда твой публичный listener держится с tcp_syncookies=1, но легитимные клиенты на трансконтинентальном пути 200 мс жалуются, что пропускная способность застряла на ручейке. Почему?
Сервис 4K-видео по cellular (RTT 150 мс, ~1% случайных потерь) видит, как пропускная способность CUBIC падает до доли ёмкости канала. Переход на BBR восстанавливает почти line-rate. В чём причина?
Redis-клиент на том же хосте дата-центра показывает стабильный p99 ~40–200 мс на мелких конвейерных командах, без потерь и без давления CPU. Корневая причина?
Load balancer возвращает EADDRNOTAVAIL на исходящий connect() к одному бэкенду; ss показывает ~30k сокетов TIME-WAIT к этому origin. Коллега предлагает понизить MSL, чтобы TIME-WAIT быстрее сливался. Как читать ситуацию правильно?
Сквозная линия юнита — одна цепочка решений: handshake стоит round-trip, который ты амортизируешь переиспользованием соединений, рандомизация ISN его защищает, SYN cookie обороняют его под флудом (ценой отброшенных опций), congestion control решает, как быстро он заполнит трубу (CUBIC реагирует на потерю, BBR моделирует bandwidth и RTT), а канонические production-сбои — стопоры Nagle плюс delayed-ACK, утечки CLOSE-WAIT, исчерпание TIME-WAIT — у каждого один верный рычаг и несколько правдоподобных неверных. Знать, какой рычаг и почему остальные провалятся, — и есть синтез.