Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 800248

.pdf
Скачиваний:
4
Добавлен:
01.05.2022
Размер:
1.13 Mб
Скачать

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

Пакеты, поступающие на транспортный уровень, организуются операционной системой в виде множества очередей к точкам входа различных прикладных процессов. В терминологии TCP/IP такие системные очереди называются портами. Таким образом, адресом назначения, который используется на транспортном уровне, является идентификатор (номер) порта прикладного сервиса. Номер порта, задаваемый транспортным уровнем, в совокупности с номером сети и номером компьютера, задаваемыми сетевым уровнем, однозначно определяют прикладной процесс в сети.

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

Локальное присвоение номера порта заключается в том, что разработчик некоторого приложения просто связывает с ним любой доступный, произвольно выбранный числовой идентификатор, обращая внимание на то, чтобы он не входил в число зарезервированных номеров портов. В дальнейшем все удаленные запросы к данному приложению от других приложений должны адресоваться с указанием назначенного ему номера порта. Обычно номера зарезервированных портов находятся в диапазоне до 1024, однако некоторые популярные сервисы используют и номера выше 1024.

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

9

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

Рис. 4. Демультиплексирование данных протоколом UDP

Пакет, формируемый протоколом UDP, называется пользовательской датаграммой (user datagram). Как и в случае с протоколом IP, UDP-пакет состоит из заголовка и поля данных, в котором размещается пакет прикладного уровня. Заголовок имеет простой формат и состоит из четырех двухбайтовых полей:

UDP source port — номер порта процессаотправителя,

UDP destination port — номер порта процесса-

получателя,

UDP message length — длина UDP-пакета в байтах,

UDP checksum — контрольная сумма UDP-пакета

Не все поля UDP-пакета обязательно должны быть

заполнены. Если посылаемая дейтаграмма не предполагает ответа, то на месте номера порта отправителя могут помещаться нули.

UDP может произвести широковещательную передачу данных по сети с помощью IP адреса 255.255.255.255. Однако

10

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

Модули для создания UDP соединения в среде Lab

VIEW

Функция открывает UDP соединение, используя заданный порт (port). закрытие соединения осуществляется функцией UDP Close для открытия соединения, позволяющего производить чтение, запись или чтение и запись, необходимо использовать ВП открыть групповое UDP соединение (udp multicast open) вместо данной функции (рис. 5).

Рис. 5. Открытие UDP

Вход порт задает локальный порт, с которым устанавливается udp соединение.

Выход connection id представляет ссылку сетевого соединения, которая однозначно определяет UDP соединение. Данный выход используется для передачи ссылки на соединение в последующие ВП.

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

Рис. 6. Открытие группового UDP

11

Вход порт (port) определяет локальный порт, с которым необходимо создать UDP соединение.

Вход групповой адрес (multicast addr) определяет IP

адрес группы, с которой необходимо установить соединение. Если адрес на данном входе не установлен, то соединение с группой не производится и возвращаемое соединение является соединением только для записи. Групповые адреса находятся в диапазоне с 224.0.0.0 по 239.255.255.255.

Вход время жизни (time-to-live (TTL)) определяет число маршрутов минус 1 для пересылки дейтаграммы. Значение TTL применяется для всех дейтаграмм, посылаемых с использованием данного соединения. Следующая таблица показывает действия, происходящие в групповой дейтаграмме при определении значения параметра TTL. При определении значения больше 1 дейтаграмма посылается и маршрутизаторы пересылают ее через TTL-1 слой. 0 Дейтаграмма остается на хосте.

Дейтаграмма посылается каждому клиенту в той же локальной подсети, в которой находится 1 тправитель. Хабы/повторители и мосты/переключатели пересылают дейтаграмму. Маршрутизаторы не пересылают дейтаграмму если время жизни равно 1.

Функция читает дейтаграмму из UDP соединения, сохраняя результат на выходе данных (data out). Функция возвращает данные при приеме какого-либо числа байтов и ожидает полное время ожидания (timeout ms) если прием байтов отсутствует (рис. 7).

Рис. 7. Чтение дейтаграммы из UDP

12

Вход максимальный размер (max size) определяет максимальное число считываемых байтов. По умолчанию оно равно 548. При работе в системе Windows установка на этом входе иного числа может вызвать ошибку.

Вход лимит времени ожидания, мс (timeout ms) задает интервал времени в миллисекундах, в течение которого функция ожидает поступления байтов. При их отсутствии по истечении заданного времени функция завершается и возвращает ошибку. По умолчанию значение входа равно

25,000 мс.

Выход ID соединения (connection ID out) имеет то же значение, что и ID соединения.

Выход данных (data out) содержит данные, считываемые из дейтаграммы UDP

Выход порт (port) отображает порт UDP соединения, отправивший дейтаграмму.

Выход адрес (address) отображает адрес компьютера, в котором была сформирована дейтаграмма.

Функция записывает данные в удаленное UDP соединение (рис. 8).

Рис. 8. Функция записывает данные в удаленное UDP соединение

Вход порт (port) определяет номер порта, в который передается дейтаграмма.

Вход адрес (address) определяет ГР-адрес компьютера, которому передается дейтаграмма.

Вход ID соединения (connection ID) представляет ссылку на сетевое соединение, однозначно определяющую UDP соединение.

13

Вход данных (data in) содержит данные, записываемые в другое UDP соединение.

Функция закрывает UDP соединение (рис. 9).

Рис. 9. Функция закрывает UDP соединение

Вход ID соединения (connection ID) содержит ссылку на сетевое соeдинение однозначно определяющую UDP соединение, которое необходимо закрыть.

Выход ID соединения (connection ID out) имеет то же значение, что и ID соединения. Этот выход не должен подключаться к другим функциям UDP.

Примеры ВП и описание их работы

На рис. 10 и 11 приведены блок-диаграммы ВП

Отправитель UDP (UDP Sender) и Получатель UDP (UDP Receiver) из набора примеров N1 Example Finder,

использующих функции UDP. Первым должен запускаться ВП

Получатель UDP.

Рис. 10. Блок-схема ВП «Отправитель UDP»

14

Рис. 11. Блок-схема ВП «Получатель UDP»

Задания для самостоятельного выполнения

1.Реализуйте схему простейших UDP-отправителя и UDP получателя, обменивающихся данными друг с другом в пределах одного хоста. Используйте порт номер 3333 и закольцованный интерфейс (loopback). Сделайте вывод содержимого пакетов в отдельном текстовом индикаторе.

2.Сервис «Echo». Данный сервис является простейшим Интернет сервисом, суть которого состоит в прослушивании порта с номером 7 и отправки информации, которая приходит на него адресату. Реализуйте посредством протокола UDP echo-сервер и echo-клиент. Интерфейс клиента оформите так, чтобы была возможность ввода IР-адреса echo-сервера, текстовое поле для отправляемого сообщения, текстовое поле для принимаемого сообщения от сервера и кнопка для отправки. Запустите их на разных машинах и протестируйте. Модернизируйте echo-сервер так, чтобы он выводил лог всех обращений

кнему в виде строчек: дата, время, ip-адрес: порт – сообщение.

3.Реализуйте посредством UDP простую программу для обмена текстовыми сообщениями между двумя узлами. Интерфейс должен включать в себя список выбора IP-адреса получателя, поле для ввода сообщения, кнопку для отправки,

15

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

4. Дополните предыдущий пункт «адресной книгой» – возможностью выбора абонента не по IP-адресу, а по имени из списка, а также интерфейсом добавления, редактирования и удаления записей из книги. Формат книги – на Ваше усмотрение.

Контрольные вопросы

1.Для чего нужна логическая адресация? Дайте определение IP-адресу и маске сети. Расскажите о специальных IP-адресах и диапазонах.

2.Назовите основные задачи, решаемые транспортным уровнем стека TCP/IP и методы их решения. Приведите примеры, когда лучше использовать протокол TCP, а когда более эффективным будет использование UDP.

3.В каком из заданий данной лабораторной работы лучше использовать протокол TCP и почему?

4.Для чего используется интерфейс loopback и каковы его основные характеристики (MTU, IP-адрес, etc).

16

Лабораторная работа № 8 Обмен данными по протоколу TCP

Цель работы: Организация обмена данными по протоколу TCP в среде LabVIEW.

Теоретические сведения

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

Как и UDP протокол TCP является протоколом транспортного уровня стека TCP/IP, однако в отличие от первого он обеспечивает надежную доставку сообщений. Для этого используется установка логических соединений и механизм квитирования.

Единицей данных протокола TCP является сегмент. Информация, поступающая к протоколу TCP в рамках логического соединения от протоколов более высокого уровня, рассматривается протоколом TCP как неструктурированный поток байт. Поступающие данные буферизуются средствами протокола. Для передачи на сетевой уровень из буфера «вырезается» некоторая непрерывная часть данных, называемая сегментом.

Не все сегменты, посланные через соединение, будут одного и того же размера, однако оба участника соединения должны договориться о максимальном размере сегмента, который они будут использовать. Этот размер выбирается таким образом, чтобы при упаковке сегмента в ГР-пакет он помещался туда целиком, то есть максимальный размер сегмента не должен превосходить максимального размера поля данных IP-пакета. В противном случае пришлось бы выполнять фрагментацию, то есть делить сегмент на несколько частей, для того, чтобы он вместился в IP-пакет.

В протоколе TCP также, как и в UDP, для доставки данных прикладным процессам используются порты. Номера портам присваиваются аналогичным образом: имеются стандартные, зарезервированные номера (например, номер 21

17

закреплен за сервисом FTP, 25 — за протоколом отправки электронной почты SMTP, 80 — за сервисом WWW и т.д.), а менее известные приложения пользуются произвольно выбранными локальными номерами, которые начинаются, обычно с 1024.

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

Соединение в протоколе TCP идентифицируется парой полных адресов обоих взаимодействующих процессов (оконечных точек). Адрес каждой из оконечных точек включает IP-адрес (номер сети и номер компьютера) и номер порта. Одна оконечная точка может участвовать в нескольких соединениях.

Установление соединения выполняется в следующей последовательности:

При установлении соединения одна из сторон является инициатором. Она посылает запрос к протоколу TCP на открытие порта для передачи (active open).

После открытия порта протокол TCP на стороне процесса-инициатора посылает запрос процессу, с которым требуется установить соединение.

Протокол TCP на приемной стороне открывает порт для приема данных (passive open) и возвращает квитанцию, подтверждающую прием запроса.

Для того чтобы передача могла вестись в обе стороны, протокол на приемной стороне также открывает порт для передачи (active port) и также передает запрос к противоположной стороне.

Сторона-инициатор открывает порт для приема и

18