Сети и протоколы
Конверт IP
В момент когда вы кликаете ссылку, ваш браузер пакует запрос в IP-пакет — конверт с вашим адресом и адресом сервера. Радикальная часть: ни один роутер между вами и сервером не знает полного маршрута. Каждый просто читает адрес назначения, смотрит в свою локальную карту и форвардит пакет на следующий хоп.
Что делает IP одним предложением
IP — адресованный конверт внутри которого путешествует каждый кусок интернет-трафика. Source-адрес, destination-адрес, payload и маленький заголовок — это IP.
Каждый протокол который вы используете — TCP, UDP, ICMP, каждый видео-кусок, каждая веб-страница — едет внутри IP-пакетов. Пакет — единица маршрутизации для всего Интернета.
Почтовая метафора
Представьте почтовую систему. Каждое письмо имеет from-адрес и to-адрес. Местные почтовые офисы не знают где Токио, но каждый знает «всё для Азии идёт через этот грузовик». Письма прыгают от локального офиса к региональному к национальному пока не достигнут локального офиса получателя. Ни один офис не держит карту всего мира — только следующий хоп.
IP работает так же. Роутеры держат частичные карты и принимают локальные решения. На каждом хопе роутер читает адрес назначения, проверяет routing table и форвардит пакет наилучшему следующему соседу. После 10–15 таких хопов пакет доходит.
Один сценарий end-to-end
Ваш браузер уже завершил физический канал (умеет класть биты в провод). Теперь строит IP-пакет для каждого сегмента. Каждый пакет путешествует независимо. Слои выше — TCP, TLS, HTTP — все передают байты IP, который добавляет конверт.
- Размер IPv4-адреса
- 32 бита (4 байта)
- Размер IPv6-адреса
- 128 бит (16 байт)
- Адресное пространство IPv4
- ~4,3 млрд
- Типичное количество хопов
- 10–15 роутеров
- Минимальный IPv4-заголовок
- 20 байт
- IPv6-заголовок (фиксированный)
- 40 байт
IPv4 vs IPv6
IPv4 использует 32-битные адреса в виде четырёх десятичных октетов (например 93.184.216.34). IPv6 — 128-битные адреса в виде восьми 16-битных hex-групп (например 2001:db8::1). Практические различия:
- Адресное пространство. IPv4 имеет ~4,3 млрд адресов — исчерпано. IPv6 имеет 340 унциллионов — практически неограниченно.
- Заголовок. IPv4 имеет переменный заголовок с checksum пересчитываемым на каждом хопе. IPv6 имеет фиксированный 40-байтный заголовок без checksum (делегировано L2 и L4) и без фрагментации роутерами.
- Внедрение. Большинство новых развёртываний работают на dual-stack. IPv6 достиг ~45–50% глобального интернет-трафика к 2026 году.
Почему это работает
Почему IP connectionless. IP — best-effort: нет подтверждений, нет пересылок, нет упорядочивания. Роутер заканчивающий место в буфере дропает пакеты молча. Решение было намеренным (RFC 791, 1981): держать network layer простым чтобы он масштабировался на миллиарды устройств, и толкать надёжность вверх к TCP. Именно поэтому все механизмы надёжности живут в TCP или QUIC, а не в самом IP.
Что несёт IP-пакет в своём заголовке?
Практическая разница между IPv4 и IPv6?
Расставьте что происходит с пакетом на одном хопе роутера:
- 1 Пакет приходит на входной интерфейс
- 2 Роутер декрементирует TTL на 1; если 0 — пакет дропается
- 3 Роутер ищет адрес назначения в routing table
- 4 Роутер выбирает следующий хоп (longest prefix match)
- 5 Роутер оборачивает пакет в новый link-layer кадр
- 6 Роутер отправляет кадр через выходной интерфейс
IP-пакет похож на _______ — имеет from-адрес, to-адрес и содержимое внутри.
- 01Одним предложением: почему удивительно что Интернет работает учитывая что ни один роутер не знает полного маршрута?
- 02Почему дизайнеры IP выбрали best-effort доставку вместо надёжной?
- 03Что происходит с пакетом у которого TTL достигает нуля?
IP — универсальный адресованный конверт: каждый кусок интернет-трафика — TCP-сегмент, UDP-датаграмма, ICMP-сообщение — путешествует внутри IP-пакета несущего source и destination адрес. Ни один роутер не знает полного пути; каждый принимает локальное longest-prefix-match решение и передаёт пакет следующему хопу. После 10–15 хопов пакет доходит. IPv6 расширяет эту модель 128-битными адресами (решая кризис адресного пространства) и более простым фиксированным заголовком. Намеренный выбор IP в пользу best-effort connectionless доставки — вот почему TCP, TLS и QUIC все живут выше.
встречается в47
- Federation и lookahead: батчинг за пределами DataLoadermiddle
- Senior GraphQL API: scheduling-контракт, изоляция арендаторов, наблюдаемостьsenior
- Инвалидация, dirty-биты и containmiddle
- Слои композитора: продвижение, перекрытие и память GPUmiddle
- Observability в проде: LoAF, INP и полная поверхность атакиsenior
- Hidden classes, деревья переходов и расположение в памятиmiddle
- V8 в production: Isolates, сжатие указателей и реальные аварииsenior
- Что такое воркеры и зачем они нужныjunior
- Механика web workers: dedicated, shared и OffscreenCanvasmiddle
- Structured clone и transferablesmiddle
- SharedArrayBuffer, Atomics и cross-origin isolationsenior
- Пулы воркеров, Comlink и наблюдаемость в продакшенеsenior
- Восемь слоёв трассировки: от service worker до второй навигацииmiddle
- Пять канонических поломок: где производство стабильно ломаетсяsenior
- Метод трёх треков: чтение трасс и построение системы мониторингаsenior
- Лок и single-flight: ограничение параллельных rebuildmiddle
- Stale-while-revalidate и CDN request coalescingmiddle
- Детектирование stampede и дизайн TTL для продакшенаmiddle
- Метастабильный сбой, fencing-токены и production-постмортемыsenior
- Что такое отношение: таблицы, строки, ключи и ограниченияjunior
- Ограничения, ключи и типы данных Postgresmiddle
- JSONB, массивы и когда side table побеждаетmiddle
- Целостность схемы: deferral, версионирование и сбои в продакшнеsenior
- Где происходит data fetching — и почему это решает LCPjunior
- React Server Components и Suspense streamingmiddle
- Senior internals: RSC payload, слои кэша и production паденияsenior
- Что такое OpenTelemetry: API, SDK, Collector, OTLPjunior
- Сигналы OTel, Semantic Conventions и проводной формат OTLPmiddle
- Collector OTel: receivers, processors, exporters и паттерны развёртыванияmiddle
- Vendor-нейтральность, eBPF-инструментирование, Operator и OTel в браузере и serverlesssenior
- Эксплуатация OTel Collector: надёжность, version skew, режимы отказа и управлениеsenior
- Что такое trace propagation и почему сломанная propagation хуже отсутствия трейсовjunior
- traceparent и tracestate: полный формат W3C-заголовкаmiddle
- Baggage и async-границы: перенос контекста через очереди и callback''''иmiddle
- Async context на разных языках, service mesh, миграция B3 и безопасностьsenior
- Production-сбои propagation, span links и платформенный дизайнsenior
- Debugging-воронка: SLO → RED → trace → profilejunior
- Архитектура OTel: один SDK, четыре сигнала, один wire-форматmiddle
- Петля инцидента: от пейджера до постмортема до предотвращенияmiddle
- Масштаб, безопасность и ROI наблюдаемых системsenior
- At-most-once, at-least-once, exactly-once: три контракта доставкиjunior
- Consumer-side dedup: самый дешёвый путь к exactly-once processingmiddle
- Exactly-once в production: impossibility-доказательство, гибридные паттерны и реальные инцидентыsenior
- Что такое OAuth и почему пароли — не ответjunior
- Authorization code flow с PKCEmiddle
- Sender-constrained токены: DPoP и mTLSsenior
- OAuth в production: audience атаки, observability и реальные провалыsenior