Files
resume/stack/networking/QUESTIONS.md

59 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Вопросы: сети
Опираются на кейс: [CASE.md](CASE.md). Источник — почти целиком [VK Cloud.md](../../interview/VK%20Cloud.md), см. сводку в [../../interview/real-interviews.md](../../interview/real-interviews.md).
### В чём разница авторитетного и рекурсивного DNS?
Рекурсивный резолвер (обычно у провайдера или публичный, например 8.8.8.8) берёт на себя всю работу: получает запрос от клиента и сам обходит цепочку от корневых серверов до нужной зоны, кешируя результат. Авторитетный сервер — тот, у кого реально хранится зона конкретного домена; он не занимается рекурсией для чужих запросов, а просто отдаёт финальный, «истинный» ответ по своей зоне. Я это проверял через `dig +trace vk.com` — видно всю цепочку: root → `.com` TLD → авторитетный сервер зоны `vk.com`.
### Как Traceroute получает IP промежуточных хостов?
Отправляет пакеты с постепенно растущим TTL, начиная с 1. Каждый маршрутизатор на пути уменьшает TTL на 1; когда TTL достигает 0, маршрутизатор отбрасывает пакет и шлёт обратно ICMP Time Exceeded со своим IP-адресом в качестве отправителя. Так каждый следующий хоп «раскрывается» по очереди — TTL=1 покажет первый роутер, TTL=2 — второй и так далее, до момента, когда пакет наконец дойдёт до цели.
### Что такое vlan и vxlan?
VLAN (Virtual LAN) — логическое разделение одной физической L2-сети на несколько изолированных широковещательных доменов через тегирование кадров (802.1Q, VLAN ID в заголовке), без физического разделения проводов/свитчей. VXLAN — способ инкапсулировать L2-трафик внутрь UDP-пакетов поверх L3-сети, что снимает ограничение VLAN на 4096 идентификаторов (24-битный VNI даёт ~16 млн сегментов) и позволяет растягивать один логический L2-сегмент через маршрутизируемую сеть, в том числе между дата-центрами — характерно для облачных/контейнерных платформ, где нужно много изолированных виртуальных сетей поверх общей физической инфраструктуры.
### Как считается load average в Linux?
Это скользящее экспоненциально взвешенное среднее числа процессов в состоянии "runnable" (готовы выполняться или уже выполняются) плюс процессов в непрерываемом ожидании ввода-вывода (D-state), усреднённое за интервалы 1/5/15 минут. Важный нюанс: число выше количества ядер CPU не автоматически значит «процессор перегружен» — часто это диск или сеть (много процессов ждут I/O в D-state), поэтому load average нужно интерпретировать вместе с `top`/`vmstat`/`iostat`, а не как самостоятельный показатель нагрузки CPU.
### Что такое curl -v? Чем отличается от wget?
`curl -v` — verbose-режим curl, показывает весь процесс запроса пошагово: разрешение DNS, установку TCP-соединения, TLS handshake (если HTTPS), отправленные и полученные заголовки. `wget` — тоже инструмент для HTTP(S)/FTP-запросов из терминала, но исторически ориентирован на скачивание файлов (умеет рекурсивно скачивать по ссылкам, докачивать прерванную закачку из коробки), тогда как `curl` изначально заточен под гибкую работу с самим протоколом (произвольные методы, заголовки, тело запроса) и чаще используется для отладки API и HTTP-взаимодействия, а не просто для сохранения файла на диск.
### Как работают HTTP/S и TLS/SSL, зачем нужны? Методы HTTP?
HTTP — прикладной протокол запрос-ответ поверх TCP: клиент отправляет метод + путь + заголовки (+ тело), сервер отвечает статус-кодом + заголовками (+ телом). HTTPS — тот же HTTP, но поверх TLS-соединения: сначала происходит TLS handshake (обмен сертификатами, согласование шифров, выработка сессионного ключа), и уже внутри зашифрованного канала идёт обычный HTTP-обмен — это защищает от перехвата и подмены данных по пути. Методы: GET (получить ресурс, без побочных эффектов), POST (создать/отправить данные), PUT (полностью заменить ресурс), PATCH (частично обновить), DELETE (удалить). Проверял вживую через `curl -v https://vk.com` — там виден отдельно TCP connect, отдельно TLS handshake, отдельно сам HTTP-запрос/ответ.
### Что такое TCP/UDP и как устанавливается соединение?
TCP — соединение-ориентированный протокол с гарантией доставки и порядка байт: соединение устанавливается через three-way handshake (SYN → SYN-ACK → ACK), дальше идёт передача с подтверждениями (ACK) и повторной отправкой потерянных сегментов. UDP — протокол без установления соединения и без гарантий: пакеты (датаграммы) отправляются «как есть», без подтверждения доставки и порядка — используется там, где важна скорость больше надёжности (стриминг, DNS-запросы, некоторые виды мониторинга).
### Что такое MTU?
Maximum Transmission Unit — максимальный размер пакета (в байтах), который может быть передан за один раз без фрагментации на конкретном сетевом интерфейсе/канале. Стандартный Ethernet MTU — 1500 байт. Если пакет больше MTU канала, он либо фрагментируется (IPv4), либо отбрасывается с ICMP «Fragmentation needed» при выставленном флаге DF (актуально, например, при туннелировании — VPN/VXLAN добавляют заголовки поверх, съедая часть MTU, и это частая причина странных обрывов соединений именно на больших пакетах).
### Что такое пакет, кадр, фрейм?
Кадр (frame) — единица данных на канальном уровне (L2), с MAC-адресами отправителя/получателя (Ethernet-кадр). Пакет (packet) — единица данных на сетевом уровне (L3), с IP-адресами, инкапсулируется внутрь кадра при передаче по конкретному каналу. Термин «фрейм» обычно синоним кадра (тот же L2). Ha практике: один и тот же IP-пакет при прохождении через разные сетевые сегменты каждый раз заново упаковывается в новый кадр L2 (например, Ethernet-кадр в локальной сети, PPP-кадр на другом участке), а сам пакет остаётся неизменным до конечного получателя.
### На каком протоколе работает ping и на каком уровне модели OSI?
Ping использует ICMP (Internet Control Message Protocol) — протокол сетевого уровня (L3 в модели OSI), формально «поверх» IP, но не транспортный протокол в привычном смысле (нет портов, как у TCP/UDP). Отправляет Echo Request и ждёт Echo Reply от целевого хоста.
### Какая есть динамическая маршрутизация, что это?
Динамическая маршрутизация — протоколы, по которым маршрутизаторы автоматически обмениваются информацией о доступных сетях и строят/обновляют таблицы маршрутизации без ручной настройки каждого маршрута. Основные: OSPF и IS-IS (link-state протоколы внутри автономной системы, строят полную карту топологии), BGP (протокол между автономными системами — то, на чём фактически держится маршрутизация в интернете), RIP (более старый, distance-vector, для небольших сетей).
### Ввожу vk.com и нажимаю Enter — опиши весь путь до открытия страницы
1. Браузер проверяет DNS-кеш; если пусто — идёт запрос к рекурсивному резолверу, который резолвит домен в IP через цепочку root → TLD → authoritative-сервер.
2. Браузер устанавливает TCP-соединение с полученным IP на порт 443 (three-way handshake: SYN → SYN-ACK → ACK).
3. Поверх TCP — TLS handshake: обмен сертификатами, проверка цепочки доверия, согласование шифров, выработка сессионного ключа.
4. Внутри зашифрованного канала браузер отправляет HTTP-запрос (GET /), сервер отвечает статус-кодом и телом (HTML).
5. Браузер парсит HTML, находит ссылки на дополнительные ресурсы (CSS, JS, картинки) и повторяет для них аналогичный цикл (возможно, переиспользуя уже установленное TCP/TLS-соединение через keep-alive/HTTP2 multiplexing).
6. Браузер рендерит DOM, применяет CSS, выполняет JS — страница становится видимой и интерактивной.
Каждый из этих этапов я лично видел раздельно через `curl -v` — команда явно печатает моменты TCP connect, TLS handshake и HTTP-обмена по отдельности.