- •Лекция 8 Протоколы транспортного уровня tcp и udp. Порты
- •Протокол udp
- •Назначение полей udp пакета:
- •Протокол tcp
- •Назначение полей tcp пакета:
- •Установление соединения, передача данных и завершение соединения.
- •Механизмы обеспечения достоверности передаваемых данных.
- •Структура ip-пакета
- •Механизм управления потоком данных
- •Протокол ip
- •Функции протокола ip
- •Фрагментация
- •Транспортный уровень передачи данных
- •Внешние функции транспортного протокола
- •Внутренние функции транспортного протокола
- •Обработка сбойных ситуаций в транспортном протоколе
Установление соединения, передача данных и завершение соединения.
Соединение станет активным только после того, как отправитель и получатель обменяются несколькими управляющими пакетами для установки соединения. Данный процесс известен как трехэтапное установление связи (three-way handshake). Его цель – синхронизировать порядковые номера и номера подтверждений для каждой конечной точки в момент установления соединенияTCP.
Станция AпошлетTCPактивный вызовOPENдля запроса установки соединения с приложением удаленной сетевой станции. СтанцияAпостроит заголовокTCPс установленным битомSYN(бит синхронизации), затем определит начальное порядковое значение (оно не всегда равно 0 и может быть любым; здесь выбрано 100) и разместит его в поле порядкового номера. После заполнения в заголовкеTCPдругих полей пакет будет отправлен протоколуIPдля передачи станцииB.
Станция Bустановит в заголовкеTCPбитыSYNиACK, показанные на рисунке, поместит свое собственное начальное порядковое значение (200) в поле порядкового значения пакета, а в поле подтверждения будет указано значение 101 (порядковый номер станцииAплюс 1, что задает следующий ожидаемый порядковый номер).
Станция Aполучит ответный пакет и определит, что это подтверждение запроса соединения. Станция построит новый пакет, установит битACK, назначит порядковый номер равным 101, укажет номер подтверждения 201 и отошлет пакет станцииB. Как только это произойдет, соединение станет активным, и данные приложения начнут передаваться по нему. Пока по соединению проходят данные, каждая сторона соединения поддерживает свою собственную таблицу порядковых номеров для данных, отсылаемых и получаемых по соединению.
Завершение соединения выполняется установкой флага FIN. Т.к.TCPпредоставляет полнодуплексное соединение, каждая сторона соединения должна его закрыть.
Механизмы обеспечения достоверности передаваемых данных.
Протокол TCPдолжен уметь работать с поврежденными, потерянными, дублированными или поступившими с изменением порядка пакетами. Это достигается благодаря механизму присвоения порядкового номера каждому передаваемому пакету данных и механизму проверок получения пакетов подтверждения доставки.
Когда TCPпередает сегмент данных, копия этих данных помещается в очередь повтора передачи и запускается таймер ожидания подтверждения. Когда система получает подтверждение – сегментTCP, содержащий управляющий флагACKи указывающий на получение этого пакета данных, она удаляет его из очереди. Сегмент подтверждения получения содержит номер полученного сегмента, на основании которого и происходит контроль доставки данных адресату. Если подтверждение не поступило до истечения срока таймера, пакет отправляется еще раз. УведомлениеTCPо получении пакета данных еще не означает, что он был доставлен конечному пользователю. Он только означает, чтоTCPвыполнил возложенные на него функции по доставке пакета.
При передаче каждому байту данных присваивается порядковый номер, поэтому, в какой бы последовательности эти пакеты не достигали точки назначения, они всегда будут собраны в изначально заданной последовательности. Порядковый номер первого байта данных в передаваемом сегменте называется порядковым номером сегмента. Нумерация производится с «головы», т.е. от заголовка пакета. TCP-пакет также содержит «подтверждающий номер» (acknowledgementnumber), который представляет собой номер следующего ожидаемого пакета данных передачи в обратном направлении. Механизм с использованием «подтверждающего номера» позволяет исключать дублирование пакетов при повторной отправке не доставленных данных.
Могут быть отосланы несколько дейтаграмм при одном подтверждении всех полученных полностью верных сегментов. Это называется включающим (inclusive)иликумулятивным (cumulative) подтверждением.TCPреализует эту операцию на обеих сторонах соединения.
Кроме определения порядка следования информационных пакетов, «порядковый номер» играет большую роль в механизме синхронизации соединения и контроле потерянных пакетов при разрывах соединения. Однако необходимо помнить, что величина счетчика-нумератора все же ограничена. Пакеты могут нумероваться числами от 0 до 232-1. Т.о., все арифметические операции со счетчиком пакетов производятся по модулю 232.
В сети могут появиться пакеты с одинаковыми номерами: при установлении и быстром сбросе соединения или при сбросе соединения и его быстром восстановлении, т.е. когда номер испорченного пакета может сразу использоваться новым пакетом данных. Механизм предотвращения подобных ситуаций основан на генерировании начального числа последовательности пакетов, а поскольку счетчик циклический, то нет разницы с какого места начинать отсчет.
Так, при установлении нового соединения генерируется 32-битное число ISN(InitialSequenceNumber). Генератор использует 32 младших разряда машинного таймера, который меняется каждые 4 микросекунды (полный цикл – 4,55 часа). Это число и служит отсчетом нумератора пакетов. Кроме того, каждая дейтаграмма в сети имеет ограниченное время жизниMSL–MaximumSegmentLifetime, которое значительно меньше периода генератора. Т.о., в сети гарантируется невозможность возникновения конфликтов пакетов с одинаковыми номерами.
Поврежденные пакеты отсеиваются механизмом проверки величины контрольной суммы данных, которая размещается в каждом передаваемом пакете.
