- •Лекция 8 Протоколы транспортного уровня tcp и udp. Порты
- •Протокол udp
- •Назначение полей udp пакета:
- •Протокол tcp
- •Назначение полей tcp пакета:
- •Установление соединения, передача данных и завершение соединения.
- •Механизмы обеспечения достоверности передаваемых данных.
- •Структура ip-пакета
- •Механизм управления потоком данных
- •Протокол ip
- •Функции протокола ip
- •Фрагментация
- •Транспортный уровень передачи данных
- •Внешние функции транспортного протокола
- •Внутренние функции транспортного протокола
- •Обработка сбойных ситуаций в транспортном протоколе
Механизм управления потоком данных
Протокол TCPпозволяет получателю последовательности пакетов регулировать передаваемый отправителем поток данных с помощью механизмауправления потоком (flow control). Этот механизм основан на том, что при передаче флага подтверждения (ACK) вTCP-сегменте передается размер буфера данных, который может быть передан отправителем, не дожидаясь разрешения на отправку очередной порции данных от получателя. Иными словами – передается размер свободного места в стеке протокола, куда записываются только что принятые и ожидающие дальнейшей обработки данные. Из стека данные обрабатываются и передаются соответствующим процессам. Этот механизм позволяет избегать «пробок» при передаче данных между системами различной производительности. Данный механизм называетсяскользящим окном (sliding window).
«Окно» задается в количестве байт, отсчитываемых от номера байта, заданного в поле номера пакета «подтвержденного получения» (acknowledgmentnumber) данных. Нулевой размер окна означает для отправителя команду приостановить передачу до готовности принимать данные получателем. Необходимо заметить, что в этом случае отправитель посылает однобайтные пакеты и на основании информации пакетов подтверждения возобновляет или нет дальнейшую передачу данных.
Большой размер окна позволяет передавать данные быстрее, поскольку отправителю пакета не нужно ждать сигнала готовности приема от получателя. Однако в случае сбоя передачи, соответственно, возрастет объем данных, которые нужно отправить заново. При небольшом же размере окна сбойные сегменты данных можно локализовать с минимальными потерями.
Механизм контроля потока данных позволяет TCPвлиять на изменение размера «окна» передачи, что помогает значительно оптимизировать скорость достоверного обмена данных между процессами в гетерогенных сетяхInternet.
Протокол ip
Основу транспортных средств стека протоколов TCP/IPсоставляетпротокол межсетевого взаимодействия (Internet Protocol, IP), который обеспечивает передачу дейтаграмм от отправителя к получателям через объединенную систему компьютерных сетей. Назначением данного протокола являетсяпередача пакетов данных между сетями.
Протокол IP относится к протоколам без установления соединений. Перед ним не ставится задача надежной доставки сообщений от отправителя к получателю. Протокол IP обрабатывает каждый IP-пакет как независимую единицу, не имеющую связи ни с какими другими пакетами. Все вопросы обеспечения надежности доставки данных по сетям в стеке TCP/IP решает протокол TCP, работающий непосредственно над протоколом IP. Данный протокол организует повторную передачу пакетов в случае недоставки пакета данных по назначению.
Структура ip-пакета
IP-пакет состоит из заголовка и поля данных.
|
offset |
0 |
3 |
4 |
7 |
8 |
15 |
16 |
31 | ||||||
|
0 |
Version |
IHL |
TOS |
Total Length | ||||||||||
|
PR |
D |
T |
R |
| ||||||||||
|
4 |
Identification |
Flags |
Fragment Offset | |||||||||||
|
|
D |
M | ||||||||||||
|
8 |
TTL |
Protocol |
Header Checksum | |||||||||||
|
12 |
Source Address | |||||||||||||
|
16 |
Destination Address | |||||||||||||
|
20 |
Options |
Padding | ||||||||||||
Рис. Формат заголовка IP-пакета
Номер версии (Version)– занимает 4 бита и указывает версию протокола IP. В настоящий момент используется версия 4 (IPv4), и готовится переход на версию 6 (IPv6).
Длина заголовка (IHL – Internet Header Length)– занимает 4 бита и указывает значение длины заголовка, измеряемое в 32-битовых словах (4 байта). Значение данного поля не должно быть меньше 5, т.е.минимальнаядлина заголовка 20 байт. При увеличении объема служебной информации эта длина может быть увеличена за счет использования дополнительных байт поляОпции (Options).Наибольший заголовок занимает 60 байт.
Тип сервиса (TOS – Type Of Services)– занимает 1 байт и используется для идентификации используемого дейтаграммой сервиса, определяя вид ее обработки. Значения данного поля задает приоритетность пакета и вид критерия выбора маршрута. Поле используется преимущественно шлюзами, для выбора параметров передачи пакета по данной сети до сети следующего узла или шлюза маршрутизации. Первые 3 бита этого поля образуют подполеприоритета (Precedence)пакета. Приоритет может иметь значения от самого низкого – 0 (нормальный пакет) до самого высокого – 7 (пакет управляющей информации). Сначала обрабатываются пакеты с наивысшим приоритетом. Следующие 3 бита критерий выбора маршрута. Реально выбор осуществляется между тремя альтернативами: малой задержкой, высокой достоверностью и высокой пропускной способностью. Установленный бит D (Delay) говорит о необходимости выбора маршрута для минимизации задержки доставки данного пакета, бит T (Throughput) – для максимизации пропускной способности, а бит R (Reliability) – для максимизации надежности доставки. Зарезервированные биты имеют нулевое значение.
Общая длина (Total Length)– занимает 2 байта и означает общую длину пакета с учетом заголовка и поля данных. Максимальная длина пакета ограничена разрядностью поля, определяющего эту величину, и составляет 65535 байт. При передаче по сетям различного типа длина пакета выбирается с учетом максимальной длины пакета протокола нижнего уровня, несущего IP-пакеты. В стандарте предусматривается, что все хосты должны работать с длинами пакета до 576 байт, превышать которую не рекомендуется.
Идентификатор пакета (Identification)– занимает 2 байта и используется для распознавания пакетов, образовавшихся путем фрагментации исходного пакета. Все фрагменты должны иметь одинаковое значение этого поля. Модули обслуживания протокола группируют фрагменты с одинаковым адресом источника, адресом назначения, типом протокола и идентификатором.
Флаги (Flags)– занимают 3 бита и содержат признаки, связанные с фрагментацией. Установленный бит DF (Do not Fragment) запрещает маршрутизатору фрагментировать данный пакет, а установленный битMF(More Fragments) говорит о том, что данный пакет является промежуточным (не последним) фрагментом. Оставшийся бит зарезервирован.
Смещение фрагмента (Fragment Offset)– занимает 13 бит и задает смещение в 64-битных словах (8 байт) поля данных этого пакета от начала общего поля данных исходного пакета, подвергнутого фрагментации. Используется при сборке/разборке фрагментов пакетов при передачах их между сетями с различными величинамиMTU.
Время жизни (Time To Live)– занимает 1 байт и означает предельный срок, в течение которого пакет может перемещаться по сети. Время жизни данного пакета измеряется в секундах и задается источником передачи. На маршрутизаторах и в других узлах сети по истечении каждой секунды из текущего времени вычитается единица, даже в том случае, когда время задержки меньше секунды. Если параметр времени жизни станет нулевым до того, как пакет достигнет получателя, этот пакет будет уничтожен. Значение данного поля изменяется при обработке заголовка IP-пакета.
Протокол верхнего уровня (Protocol)– занимает 1 байт и указывает, какому протоколу верхнего уровня принадлежит информация, размещенная в поле данных пакета.
Контрольная сумма заголовка (Header Checksum)– занимает 2 байта и рассчитывается только по заголовку. Поскольку некоторые поля заголовка меняют свое значение (например, TTL), контрольная сумма проверяется и повторно вычисляется при каждой обработке IP-заголовка. Контрольная сумма (16 бит) вычисляется как дополнение к сумме всех 16-битовых слов заголовка. При вычислении контрольной суммы значение самого поля устанавливается в нуль. При обнаружении ошибки контрольной суммы пакет будет отброшен.
Адрес источника (Source Address)– занимает 32 бита и содержит IP-адрес отправителя пакета.
Адрес назначения (Destination Address)– занимает 32 бита и содержит IP-адрес получателя пакета.
Опции (Options)– является не обязательным и используется обычно только при отладке сети. Это поле состоит из нескольких подполей, каждое из которых может быть одного из восьми предопределенных типов. В этих подполях можно указывать точный маршрут прохождения пакетов через маршрутизаторы (структурыLSRR – Loose Source and Record RouteиSSRR – Strict Source and Record Route), регистрировать проходимые пакетом маршрутизаторы (структураRR – Record Route), помещать данные системы безопасности, а также временные метки прохождения шлюзов маршрутизации.
Выравнивание (Padding)– имеет переменную длину и используется для выравнивания заголовка пакета по 32-битной границе. Выравнивание осуществляется путем заполнения данного поля нулями.
