Your AI powered learning assistant

3. Основа Интернета и браузеров. Транспортный уровень модели TCP/IP.

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

Канальный уровень передачи данных: мультимедиа, фреймы и локальная адресация Уровень сетевого доступа (канала передачи данных) организует локальные подсети и определяет физическую передачу по кабелям или радио (витая пара, оптоволокно, Bluetooth, Wi‑Fi, сотовая связь). Протоколы, специфичные для среды передачи данных, обрабатывают такие нюансы, как радиопомехи, и представляют фреймы в виде контейнеров. Фреймы содержат адреса отправителя и получателя, проверку целостности данных, обработку ошибок и четкие границы в потоке битов. Адресация зависит от технологии: в Ethernet/Wi‑Fi используются MAC-адреса, а в сотовых сетях - номера.

IP объединяет подсети с помощью адресации и пакетов Сетевой уровень объединяет подсети в глобальную сеть с помощью маршрутизаторов и протокола IP. Протокол IP включает адресацию (IPv4 и IPv6) и IP‑пакет с адресами источника и назначения, а также такие заголовки, как время жизни и требования к фрагментации. Размер IP‑пакета ограничен ограничениями более низкого уровня, такими как полезная нагрузка кадра (MTU). Необработанные данные инкапсулируются в IP-пакет, а затем в кадр для пересылки.

Фрагментация, ограничения MTU и переадресация без установления соединения Если IP-пакет превышает MTU, установленный на пути, он разбивается на фрагменты и собирается заново после получения всех фрагментов. Фрагментация и повторная сборка потребляют ресурсы, поэтому, заранее выбрав минимальный MTU, можно избежать повторного разделения. Передача по IP‑адресу осуществляется без предварительно установленных соединений; каждый маршрутизатор перенаправляет пакеты на следующий этап в зависимости от таких условий, как нагрузка или пропускная способность. Пакеты могут проходить разными маршрутами, теряться в пути или поступать не по порядку.

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

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

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

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

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

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

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