"Информатика (углублённый уровень)", Калинин И.А., Самылкина Н.Н.
Транспортный уровень организует обмен данными между конкретными программами на разных компьютерах. Он использует порты, чтобы направить данные нужному приложению, а протоколы TCP и UDP — чтобы выбрать способ передачи. TCP обеспечивает надёжный порядок и повторную отправку потерянных данных, тогда как UDP работает проще и быстрее, но не гарантирует доставку. Уровень связывает приложения с сетевой передачей.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Транспортный уровень — уровень сетевого взаимодействия, который обеспечивает обмен данными между процессами на разных компьютерах. Процессом называют выполняющуюся программу или её сетевую часть. Этот уровень нужен, чтобы приложения могли обмениваться данными независимо от деталей работы сети.
Порт — числовой идентификатор приложения или сетевой службы. IP-адрес показывает, на какой компьютер доставить данные, а порт уточняет, какой программе их передать. Благодаря этому один компьютер одновременно обслуживает браузер, почту и другие приложения.
TCP — протокол с установлением соединения, подтверждением доставки, контролем порядка и повторной передачей потерянных данных. Он представляет обмен как надёжный поток байтов. TCP нужен там, где пропуск или перестановка данных недопустимы.
UDP — протокол передачи дейтаграмм без установления соединения и гарантии доставки или сохранения порядка. Дейтаграмма — отдельное сообщение, которое отправляется независимо от других. Такой подход уменьшает задержки и накладные расходы, но часть забот о надёжности остаётся приложению.
Транспортный уровень располагается между приложениями и сетью, потому что программа работает с сообщением, а сеть — с адресованной передачей между узлами. Уровень принимает данные от приложения и передаёт их сетевому уровню, который доставляет их компьютеру назначения. На другой стороне транспортный уровень извлекает данные и передаёт их нужному процессу.
Порты обеспечивают мультиплексирование — объединение потоков данных от нескольких приложений в общей сетевой передаче. Каждая порция получает сведения о порте отправителя и получателя, поэтому после доставки компьютеру её можно распределить правильно. Без портов IP-адрес привёл бы данные только к узлу, но не к конкретной программе.
TCP превращает поток данных в сегменты, поскольку сеть передаёт ограниченные по размеру блоки. При установлении соединения стороны согласуют параметры обмена, затем TCP нумерует данные и подтверждает их получение. Если сегмент потерян, номер последовательности помогает обнаружить пропуск, а отправитель передаёт недостающую часть снова.
TCP управляет потоком, чтобы быстрый отправитель не перегрузил медленного получателя. Для этого получатель сообщает, сколько данных способен принять, и отправитель ограничивает объём ещё не подтверждённых данных. Управление перегрузкой учитывает состояние самой сети: при признаках перегрузки скорость снижается, чтобы уменьшить потери и задержки.
UDP быстрее и проще TCP, потому что не выполняет установление соединения, подтверждения и повторные передачи. Однако дейтаграмма может потеряться, прийти позже другой или появиться повторно. Это допустимо в видеозвонке, игре или потоковом аудио, где свежие данные часто важнее идеального восстановления каждого старого фрагмента.
| Свойство | TCP | UDP |
|---|---|---|
| Установление соединения | Есть | Нет |
| Гарантия доставки | Есть, с подтверждениями и повторной передачей | Нет |
| Сохранение порядка данных | Да | Не гарантируется |
| Повторная передача потерянных данных | Есть | Нет на уровне протокола |
| Контроль потока и перегрузки | Есть | Нет на уровне протокола |
| Накладные расходы и скорость | Больше служебных данных, обмен может быть медленнее | Меньше накладных расходов, малая задержка |
| Типичные области применения | Веб-страницы, файлы, электронная почта | Видеозвонки, онлайн-игры, потоковое аудио |
Таблицу удобно читать от требований приложения к свойствам протокола. Если необходимы целостность и порядок, выбирают TCP; если важнее задержка и приложение может пережить отдельные потери, подходит UDP. Конкретная программа может добавлять собственные механизмы надёжности поверх UDP.
Условие: для загрузки веб-страницы, передачи файла, онлайн-игры и телефонного разговора нужно выбрать TCP или UDP. Требуется обосновать выбор по требованиям приложения.
Ответ: веб-страница и файл передаются по TCP, онлайн-игра и телефонный разговор — обычно по UDP. Это не безусловное правило: приложение может использовать дополнительные механизмы или другой транспорт. Главный критерий — надёжность и порядок данных либо минимальная задержка.
Условие: компьютер 192.168.1.10 обращается к веб-серверу 203.0.113.5 на порту 443. Нужно указать адреса и порты конечных точек.
Ответ: конечные точки имеют вид (192.168.1.10, временный порт) и (203.0.113.5, 443). Точный порт клиента в условии не указан, поэтому подставлять произвольное число нельзя. Порт 443 относится к службе на сервере.
Условие: сообщение размером 5000 байт передаётся по TCP, а максимальный размер полезной нагрузки одного сегмента равен 1460 байтам. Нужно определить число сегментов и объяснить назначение номеров последовательности.
Ответ: потребуется 4 сегмента: 1460, 1460, 1460 и 620 байт полезных данных. Нумерация позволяет восстановить порядок и запросить повторную передачу потерянной части. Заголовки TCP не входят в указанную полезную нагрузку.
Ошибка: считать, что IP-адрес однозначно указывает программу. Так думают, потому что IP действительно указывает компьютер. Проверка проста: спросите, как на одном узле одновременно работают веб-сервер и почтовая служба; ответом будет использование разных портов.
Ошибка: считать TCP и UDP взаимозаменяемыми. Протоколы различаются гарантиями: TCP создаёт упорядоченный надёжный поток, а UDP передаёт отдельные дейтаграммы. Чтобы проверить выбор, выясните, допустима ли потеря или перестановка сообщения.
Ошибка: утверждать, что UDP всегда быстрее TCP. Его преимущество связано с меньшими накладными расходами и отсутствием процедур надёжной доставки, но скорость зависит также от сети и приложения. Сравнивать нужно не только скорость, но и задержку, потери и требования задачи.
Ошибка: путать сегмент TCP с пакетом IP и кадром канального уровня. Это единицы данных разных уровней: сегмент вкладывается в пакет, а пакет — в кадр. Проверить себя можно вопросом, какой протокол добавляет соответствующий заголовок.
До изучения транспортного уровня нужно знать назначение уровней сетевой модели, IP-адресацию, понятия пакета и базовые принципы передачи данных. Тогда становится понятно, почему TCP-сегмент или UDP-дейтаграмма передаются средствами нижележащих уровней.
Тема пригодится при изучении HTTP и DNS, сетевого программирования, потокового видео и онлайн-игр. Знание портов и различий TCP и UDP помогает понимать работу сетевых служб и выбирать настройки соединения.
Почему транспортный уровень нужен, если уже существует IP-адрес?
IP-адрес указывает компьютер или другой сетевой узел, но не конкретную программу на нём. Транспортный уровень использует номер порта, чтобы доставить данные нужному процессу.
Можно ли использовать TCP без портов?
Нет, порт необходим для выбора программы или сетевой службы. IP-адрес вместе с портом образует конечную точку обмена, а соединение TCP связывает две такие точки.
Почему UDP применяют для видеозвонков и онлайн-игр?
Для таких приложений особенно важна малая задержка, а повторная отправка каждого потерянного фрагмента может сделать звук, видео или игру несвоевременными. Поэтому иногда лучше пропустить небольшой фрагмент, чем ждать его повторной передачи.
Что происходит с потерянным сегментом TCP?
Получатель не подтверждает получение нужных данных или сообщает о пропуске в последовательности. Отправитель через некоторое время повторяет передачу, после чего данные можно собрать в правильном порядке.
Чем сегмент TCP отличается от пакета IP?
Сегмент TCP содержит заголовок TCP и данные приложения и относится к транспортному уровню. Пакет IP переносит этот сегмент внутри заголовка IP и относится к сетевому уровню.
§ 17. Транспортный уровень