[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ustroystvo-pk-i-seti-kak-paket-prokhodit-put-ot-klienta-do-servera-cherez-set":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":23,"progress":24,"seo":25},240,"kak-paket-prokhodit-put-ot-klienta-do-servera-cherez-set",7,"ustroystvo-pk-i-seti","Устройство ПК и сети","🖥️","Как пакет проходит путь от клиента до сервера через сеть?","**Путь пакета от клиента до сервера** — это последовательный процесс инкапсуляции данных на каждом уровне модели OSI, передачи через сетевые устройства с пере-инкапсуляцией на L2 и деинкапсуляции на стороне получателя.\n\n> **Аналогия из жизни:** отправка международной посылки. Вы пишете письмо (L7 — данные), кладёте в конверт с адресом (L4 — порт, L3 — IP), конверт в упаковку с адресом почтового отделения (L2 — MAC). На каждом перевалочном пункте меняется внешняя упаковка (L2), но внутренний конверт (L3\u002FL4) остаётся прежним.\n\nРассмотрим полный путь HTTP-запроса от браузера к серверу `www.example.com`:\n\n### 1. Разрешение DNS (L7)\n\n- Браузер проверяет кэш → ОС проверяет кэш и `hosts` → DNS-резолвер (рекурсивный запрос)\n- Получаем IP: `93.184.216.34`\n\n### 2. Формирование HTTP-запроса (L7 — прикладной уровень)\n\n```\nGET \u002Findex.html HTTP\u002F1.1\nHost: www.example.com\n```\n\n### 3. Установление TCP-соединения (L4 — транспортный уровень)\n\n- ОС выбирает эфемерный порт (например, `52431`)\n- Three-way handshake: SYN → SYN-ACK → ACK\n- Если HTTPS — дополнительно TLS handshake\n\n### 4. Сегментация (L4)\n\n- TCP разбивает данные на сегменты (обычно до MSS ~1460 байт)\n- Каждый сегмент получает TCP-заголовок: `src port: 52431`, `dst port: 443`, sequence number и т.д.\n\n### 5. Добавление IP-заголовка (L3 — сетевой уровень)\n\n- К каждому сегменту добавляется IP-заголовок: `src IP: 192.168.1.10`, `dst IP: 93.184.216.34`, TTL, protocol=TCP\n- ОС проверяет таблицу маршрутизации: `93.184.216.34` не в локальной сети → отправить на default gateway `192.168.1.1`\n\n### 6. Определение MAC-адреса шлюза (L2)\n\n- ОС знает IP шлюза: `192.168.1.1`. Нужен его MAC-адрес\n- Проверяет ARP-кэш. Если нет — ARP-запрос (broadcast) → ARP-ответ\n- Получает MAC: `AA:BB:CC:DD:EE:01`\n\n### 7. Формирование Ethernet-кадра (L2 — канальный уровень)\n\n- Добавляется Ethernet-заголовок: src MAC (сетевой карты клиента), dst MAC (маршрутизатора), EtherType (IPv4)\n- Добавляется FCS (контрольная сумма)\n\n### 8. Передача по физической среде (L1 — физический уровень)\n\n- Кадр преобразуется в электрические сигналы (витая пара), световые импульсы (оптоволокно) или радиоволны (Wi-Fi)\n\n### 9. На маршрутизаторе (default gateway)\n\n- Получает кадр, проверяет FCS, снимает L2-заголовок\n- Смотрит IP назначения в таблице маршрутизации → определяет следующий hop\n- **NAT**: заменяет src IP на публичный (`203.0.113.5:40001`), записывает в NAT-таблицу\n- Создаёт **новый L2-кадр** с MAC следующего маршрутизатора\n- Отправляет кадр дальше\n\n### 10. Через Интернет (транзитные маршрутизаторы)\n\n- Пакет проходит через несколько маршрутизаторов (hops), каждый повторяет шаг 9\n- На каждом хопе **L2-заголовок меняется** (MAC-адреса), но **L3 остаётся** (IP-адреса, кроме NAT)\n- TTL уменьшается на 1 на каждом хопе. Если TTL = 0 — пакет отбрасывается (защита от петель)\n\n### 11. На сервере\n\n- Пакет приходит, L2- и L3-заголовки снимаются (деинкапсуляция)\n- TCP-стек собирает сегменты в поток данных, отправляет ACK\n- TLS расшифровывает данные\n- HTTP-запрос передаётся веб-серверу (приложению)\n\n### 12. Ответ проходит обратный путь\n\nСервер формирует HTTP-ответ, который проходит все те же этапы в обратном направлении. NAT на маршрутизаторе клиента подставляет обратно приватный IP из NAT-таблицы.\n\n### Сводная схема инкапсуляции\n\n```\nL7: [HTTP-данные]\nL4: [TCP-заголовок][HTTP-данные]\nL3: [IP-заголовок][TCP-заголовок][HTTP-данные]\nL2: [Eth-заголовок][IP-заголовок][TCP-заголовок][HTTP-данные][FCS]\nL1:  01010111001010110... (биты → сигнал)\n```\n\n### Что меняется на каждом хопе\n\n| Уровень | Заголовки | Меняется на хопе? |\n|---|---|---|\n| L2 | MAC src\u002Fdst | Да, на каждом хопе |\n| L3 | IP src\u002Fdst | Нет (кроме NAT) |\n| L4 | Port src\u002Fdst | Нет (кроме PAT\u002FNAPT) |\n| L7 | HTTP-данные | Нет |\n\n### Вывод\n\nПуть пакета от клиента до сервера — это процесс многоуровневой инкапсуляции, маршрутизации и деинкапсуляции. На каждом уровне добавляется свой заголовок, и на каждом промежуточном устройстве обрабатываются только релевантные уровни. Ключевой момент: MAC-адреса меняются на каждом хопе, а IP-адреса остаются неизменными (за исключением NAT).\n\n> **На собеседовании:** это классический вопрос «Что происходит, когда вы вводите URL в браузере?». Важно описать полную цепочку: DNS → TCP handshake → TLS handshake → HTTP-запрос → маршрутизация → ответ. Покажите понимание того, что L2-заголовки меняются на каждом хопе, а L3 — нет (кроме NAT). Этот вопрос проверяет глубину понимания сетевой модели.","","middle",[15,16,17,18,19,20,21,22],"nat","osi","сети","маршрутизация","tcp-ip","пакет","инкапсуляция","arp",[],null,{"title":26,"description":27,"ogTitle":28,"ogDescription":29,"keywords":30,"schemaAnswer":37,"featuredSnippetReady":38},"Путь пакета от клиента до сервера — 12 шагов через сеть — Gymterview","Полный путь HTTP-запроса: DNS → TCP handshake → сегментация (L4) → IP-заголовок (L3) → ARP → Ethernet-кадр (L2) → физическая среда → маршрутизатор (NAT) → сервер.","Путь пакета от клиента до сервера — все уровни модели OSI","DNS-резолвинг → HTTP-запрос (L7) → TCP-сегмент (L4) → IP-пакет (L3) → ARP → Ethernet-кадр (L2) → физическая среда (L1) → маршрутизатор (NAT) → сервер.",[31,32,33,34,35,36],"путь пакета через сеть","инкапсуляция пакета","как пакет проходит","L2 L3 L4 L7","маршрутизация пакета","сетевой стек","Полный путь HTTP-запроса: 1) DNS-резолвинг домена в IP, 2) формирование HTTP-запроса (L7), 3) TCP three-way handshake + TLS (L4), 4) сегментация данных, 5) добавление IP-заголовка (L3), 6) ARP для определения MAC шлюза (L2), 7) формирование Ethernet-кадра, 8) передача по физической среде (L1), 9) маршрутизатор: NAT, новый L2-кадр, 10) через Интернет (несколько hops), 11) сервер собирает сегменты, 12) ответ идёт обратным путём.",true]