Транспортный уровень
100%

Основы сети · Урок 6

Транспортный уровень

Узнайте, как TCP и UDP используют порты и предоставляют разные свойства доставки между конечными точками приложений.

Транспортный уровень связывает конечные точки приложений через IP-сеть. TCP и UDP используют 16-битные номера портов, но предоставляют приложениям разные модели взаимодействия и гарантии.

Порты и сокеты

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

Как один TCP-порт сервера может одновременно обслуживать несколько клиентов?

Потоки байтов TCP

Пока соединение работоспособно, TCP предоставляет упорядоченный надёжный поток байтов. Для этого применяются номера последовательности, подтверждения, повторная передача, управление потоком и управление перегрузкой. TCP не сохраняет границы сообщений приложения: одна операция записи может поступить через несколько операций чтения, а несколько записей — вернуться одной операцией чтения. Приложения самостоятельно определяют структуру сообщений.

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

Что происходит с границами сообщений приложения в TCP?

Рукопожатие TCP

Обычное TCP-соединение начинается с трёхэтапного рукопожатия:

  1. Инициатор отправляет SYN со своей начальной информацией о последовательности.
  2. Прослушивающая сторона отвечает SYN-ACK со своей информацией о последовательности и подтверждением.
  3. Инициатор возвращает ACK.

Так в обеих конечных точках создаётся состояние транспортного соединения. Рукопожатие не аутентифицирует сервер приложения и не доказывает, что запрошенная операция приложения завершится успешно.

Каков обычный порядок трёхэтапного рукопожатия TCP?

Дейтаграммы UDP

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

Какое свойство UDP предоставляет приложениям?

Проверка транспортных конечных точек

Используйте ss, чтобы без внесения изменений проверить прослушиваемые и подключённые сокеты:

$ ss -lntup
$ ss -tn state established

Для просмотра сведений о процессах могут понадобиться повышенные привилегии. Прослушиваемый сокет подтверждает лишь локальную готовность на транспортной границе; межсетевой экран, маршрутизацию, семейство адресов, TLS и состояние приложения всё равно следует проверять подходящими средствами.

Что подтверждает прослушиваемый TCP-сокет?

Урок завершён

Вы завершили Транспортный уровень

Теперь вы умеете отличать потоковую модель TCP от дейтаграммной модели UDP.

  • Определяйте поток по протоколу, адресам и портам.

  • Рассматривайте TCP как надёжный упорядоченный поток байтов без границ сообщений.

  • Учитывайте, что доказывает и чего не доказывает рукопожатие TCP.

  • Считайте надёжность UDP и управление перегрузкой задачами разработчика приложения.

  • Проверяйте работоспособность приложения, не ограничиваясь локальным состоянием сокета.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Следующий Урок
Назад к Основы сети