Мониторинг обменных курсов валют
18c0693f

Протоколы транспортного уровня TCP и UDP


Получателем сообщения является прикладная задача (процесс). Процессы изменяются динамически: они могут создаваться и уничтожаться; более того, при установке связи с некоторым процессом нельзя быть уверенным в том, что во время работы он не будет прерван или уничтожен (например, вследствие перезагрузки компьютера).

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

Любое обращение к процессу в удаленной ЭВМ осуществляется при помощи адреса, состоящего из двух частей: IP адреса, идентифицирующего ЭВМ, и номера порта, идентифицирующего процесс.

Все задачи можно условно разделить на две большие группы: известные всем (wellknown) и прочие. К известным относятся задачи (или услуги), получившие повсеместное распространение. Для них существуют заранее определенные порты, закрепленные в стандартах INTERNET. Это так называемые хорошо известные номера (wellknown numbers). Выделением номеров заранее определенных портов занимается организация IANA (Internet Assigned Numbers Authority).

При написании собственного приложения в рамках локальной задачи можно выбрать любой порт (за исключением зарезервированных) и, зная его номер, обмениваться информацией по сети. Естественно, что локальность задачи в данном случае подразумевает ограниченность ее распространения среди компьютеров в рамках INTERNET.

В INTERNET "заранее договариваются" о полном адресе локального приложения путем распространения информации об именах (IP адресах) компьютеров, поддерживающих данное приложение, и номерах портов (фактически об именах задач), зарезервированных для этого приложения.

Определение получателя  одна из главных задач транспортных протоколов в INTERNET. В семействе TCP/IP таких протоколов два.

Протокол UDP

UDP (RFC768) является дейтаграммным протоколом, не гарантирующим доставку и не сохраняющим порядок поступления дейтаграмм.


Сообщение протокола UDP называют абонентской дейтаграммой (user datagram). Оно состоит из заголовка и блока данных. Заголовок пользовательской дейтаграммы состоит из четырех шестнадцатибитовых полей (рис. 39).

0                   7

8                  15

16                 23

             24          31

Адрес порта процесса отправителя

Адрес порта  процесса получателя

Полная длина (в октетах) дейтаграммы (заголовка и блока данных пользователя)

Контрольная сумма

Рис. 39. Формат заголовка дейтаграммы протокола UDP

Поля "Адрес порта процесса отправителя" и "Адрес порта процесса получателя" определяют адреса портов процесса отправителя и процесса получателя. Поле "Адрес порта процесса отправителя" имеет конкретное значение только в том случае, если процесс отправитель должен получить ответное сообщение, в противном случае оно заполняется нулями.

Поле "Полная длина дейтаграммы" указывает полную длину (в октетах) заголовка и блока данных пользовательской дейтаграммы.

Поле "Контрольная сумма" содержит контрольную сумму. При ее расчете учитываются также сетевые адреса. В целом расчет контрольной суммы производится следующим образом:

1.       Блок данных сообщения дополняется нулями до целого числа 16 битовых слов.

2.       Поле "Контрольная сумма" заполняется нулями.

3.       Перед  сообщением  помещается  псевдозаголовок, структура которого показана на рис. 40.

4.       Расчет контрольной суммы производится по всей этой совокупности данных, после чего снимаются псевдозаголовок и дополнение нулями, значение контрольной суммы помещается в соответствующее поле заголовка, а дейтаграмма передается сетевому уровню (протокол IP).

0                   7

8                 15

16

       23

24

       31

Адрес IP отправителя

Адрес IP получателя

00000000

Код протокола (для1ЮР"17")

Длина сообщения

<


Рис. 40. Формат псевдозаголовка дейтаграммы протокола UDP

ЭВМ получатель для проверки контрольной суммы дейтаграммы производит аналогичные операции.

Расчет контрольной суммы  операция необязательная. В случае, если поле "Контрольная сумма" заполнено нулями, то оно воспринимается как отказ от расчета контрольной суммы. Для случая (редкого, но возможного), когда рассчитанная контрольная сумма равна нулю, все биты поля "Контрольная сумма" устанавливаются в состояние "1".

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

Протокол TCP

В отличие от UDP протокол TCP (RFC793 и RFC761) обеспечивает полноценную транспортную службу. Транспортная служба TCP: