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



 

Цель

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

 

4.2 Содержание работы

4.2.1. Создать схему простейшего TCP-клиента.

4.2.2. Создать схему простейшего TCP-сервера.

4.2.3. Использовать порт согласно своему варианту и закольцевать интерфейс.

4.2.4. Сделать вывод содержимого пакетов в отдельном текстовом редакторе.

 

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

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

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

Модули для создания TCP соединения в среде LabVIEW

Рисунок 40 – Прослушивание TCP порта

 

Входной сетевой адрес (net address) определяет сетевой адрес. Определение адреса полезно, если имеется более одного сетевого интерфейса и желательно прослушать только один из них с заданным адресом. Если сетевой адрес не определен, то LabVIEW прослушивает все сетевые адреса. Для получения IP адреса текущего компьютера необходимо использовать функцию Строку в IP (String to IP).

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

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

Выход ID соединения (connection ID) представляет идентификатор сетевого соединения, который однозначно определяет TCP соединение. Это значение используется в качестве ссылки при вызовах последующих ВП.

Выходной удаленный адрес (remote address) отображает адрес удаленной машины, связанной с TCP соединением. Этот адрес представляется в формате точечной записи IP адреса.

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

 

Рисунок 41 – Функция открытия TCP

 

Функция открывает сетевое TCP-соединение с заданным адресом (address) и портом (port) (рис. 41). Закрытие соединения производится с помощью функции Закрыть соединение TCP (TCP Close Connection).

Входной адрес (address) задает адрес, с которым должно быть установлено соединение. Этот адрес может быть IP-адресом, заданным в точечном формате, или DNS-именем машины. Если адрес не задан, то LabVIEW осуществляет соединение с локальным компьютером.

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

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

Входной локальный порт (local port) задает локальный порт соединения. Некоторые серверы разрешают соединения клиентам, которые используют номера портов из определенного диапазона, который зависит от сервера. Если значение на этом входе равно 0, то операционная система выбирает неиспользуемый порт.

 

Рисунок 42 – Функция чтения из TCP

 

Функция читает заданное число байтов из сетевого соединения по протоколу TCP (рис. 42), возвращая результат на выходе данных (data out).

Вход режим (mode) устанавливает следующие режимы операции чтения:

- стандартный (standard) (по умолчанию) – ожидается поступление всех запрошенных байтов или истечение времени, заданного на входе время ожидания, мс. Возвращаются все полученные 0 байты. Если число поступивших байтов оказалось меньше запрошенного, то возвращается частичное количество байтов и сообщается об ошибке по времени ожидания.

- буферизированный (buffered) – ожидается поступление всех запрошенных байтов или истечение 1 времени. Если число поступивших байтов оказалось меньше запрошенного, то байты не возвращаются и сообщается об ошибке по времени ожидания.

- CRLF – ожидается прием символа CR (возврат каретки) с последующим LF (перевод строки) с числом запрошенных байтов или истечение времени. Возвращаются все принятые байты и символы.

- CR и LF. Если CR и LF не найдены, то байты не возвращаются и сообщается об ошибке по времени ожидания.

- немедленный (immediate). Ожидается прием любого числа байтов. Заданное время ожидается, если только отсутствуют принятые байты. Возвращается число принятых байтов. Сообщается об ошибке по времени ожидания при отсутствии принятых байтов.

Входное число считываемых байтов (bytes to read) определяет число считываемых байтов.

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

Выход данных (data out) содержит данные, считанные из TCP соединения.

Рисунок 43 – Функция записи в TCP

 

    Функция записывает данные в сетевое TCP-соединение (рис. 43). Вход данных (data in) содержит данные, записываемые в соединение.

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

     Выход записанных байты (bytes written) отображает число байтов, записанных функцией в заданное соединение. Функция закрытия закрывает сетевое TCP соединение (рис. 44).

 

 

Рисунок 44 – Функция закрытия соединения TCP

 

   Функция преобразования преобразует строку в IP адрес или массив IP адресов (рис. 45).

Рисунок 45 – Функция преобразования строки в IP адрес

Если функция находится в режиме простого выхода, сетевой адрес (net address) содержит первый результат, возвращаемый распознавателем адреса по DNS-имени. Если эта функция находится в режиме множественного выхода (multiple output), то результат представляет массив всех IP адресов, возвращаемых распознавателем адреса по DNS-имени. Если узел не может преобразовать строку, результат принимает значение 0 в режиме простого выхода или пустой массив в режиме множественного выхода. Для переключения между режимами простого и множественного выхода необходимо выбрать из контекстного меню узла строку множественный выход (multiple output).

Вход имя (name) представляет преобразуемую строку. Если строка пустая, то сетевой адрес будет содержать IP-адрес текущей машины. Выход сетевой адрес (net address) отображает сетевой IP-адрес, соответствующий имени (name); он является числовым представлением записанного в точечной нотации IP-адреса. Функция преобразует сетевой адрес в строку.

Вход сетевой адрес (net address) представляет сетевой IP адрес в виде набора целых чисел без знака, имеющих формат точечной записи.

Вход точечная запись (dot notation) определяет представление имени (name) в формате точечной записи. По умолчанию на входе установлено значение ЛОЖЬ.

Выход имя (name) представляет строковый эквивалент сетевого адреса. Виртуальный прибор создает слушателя и ожидает принимаемое сетевое соединение по протоколу TCP с заданным портом (port) (рис. 45).

Рисунок 45 – Функция создания слушателя TCP

 

Подключение 0 к входу порта позволяет операционной системе динамически выбирать доступный порт для установки TCP соединения.

Назначение входов и выходов функции идентично одноименным входам и выходам рассмотренной выше функции TCP Listen.

Виртуальный прибор ожидает слушателя по сетевому TCP соединению (рис. 46).

 

 


Рисунок 46 – Функция ожидания слушателя TCP

Вход ID слушателя (listener ID in) представляет ссылку сетевого соединения, которая однозначно определяет слушателя.

Вход разрешить удаленный адрес (resolve remote address) определяет необходимость вызова функции IP to String для удаленного адреса. По умолчанию состояние входа ИСТИНА.

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

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

 

Порядок выполнения работы

На рисунках 47 и 48 приведены блок-диаграммы ВП Простой клиент данных (Simple Data Client) и Простой сервер данных (Simple Data Server) из набора примеров NI Example Finder, использующих функции TCP. Первым должен запускаться ВП Простой сервер данных, который устанавливает порт с заданным номером на прослушивание соединения и ожидает обращения клиента в течение 5 секунд. При отсутствии такого обращения ВП завершает работу. При обнаружении обращения клиента ВП сервера непрерывно передает данные, а ВП клиента принимает их и отображает на графическом индикаторе.

Рисунок 47 - Схема ВП "Простой клиент данных"

 

 

 

Рисунок 48 - Схема ВП "Простой сервер данных"

Задание

4.5.1 Реализуйте простейшие TCP-клиент и TCP-сервер с минимальным набором элементов. После этого, дополните их индикаторами ошибок.

4.5.2  Реализуйте с помощью протокола TCP сервис «Echo»

4.5.3 Создайте клиент-серверное приложение, которое позволит производить мониторинг состояния некоторого параметра на нескольких хостах. В простейшем варианте клиент должен быть снабжен стрелочным индикатором и ручкой изменения отображаемой величины, а так же кнопкой установки соединения с сервером. Сервер должен иметь по одному индикатору на каждое соединение, под каждым индикатором должен располагаться IP-адрес клиента и его порт.

 

Варианты заданий

Вариант Порт Сетевой адрес*
1 8000  
2 8080  
3 5000  
4 5050  
5 4040  
6 65535  
7 1024  
8 55000  
9 50000  
10 23546  
11 18623  
12 12345  
13 32114  
14 22365  
15** 666  

* используемый сетевой адрес

** порт зарезервированного приложения

  

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

4.7.1 Дайте определение понятиям «Сервер» и «Клиент».

4.7.2 Опишите архитектуру модели «клиент-сервер» в общем виде и для базы данных.

4.7.3 Перечислите плюсы и минусы модели «клиент-сервер».

4.7.4 Расскажите подробно о механизмах квитирования «с простоями» и «с плавающим окном». Какой из них применяется в протоколе TCP?

4.7.5  Дайте собственное определение «виртуальным каналам» и обоснуйте их использование.

4.7.6 Что такое коммутируемый и постоянный виртуальные каналы?

4.7.7 Как происходит передача в сети с коммутацией пакетов и организацией коммутируемого виртуального канала?

4.7.8 Как происходит передача сообщения в дейтаграммном режиме?

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

 

4.8 Содержание отчета

4.8.1 Цель работы.

4.8.2 Описание экспериментов.

4.8.3 Выполненные задания.

4.8.4 Ответы на контрольные вопросы.

4.8.5 Выводы по работе.

Список используемой литературы

4.9.1 Блюм Питер. LabVIEW. Стиль программирования.- М: ДМК Пресс, 2008.- 400 с.

4.9.2 Федосов В. П., Нестеренко А. К. Цифровая обработка сигналов в LabVIEW. – М: ДМК Пресс, 2007. – 256 с.

4.9.3. Джеффри Тревис LabVIEW для всех.М.: ДМК пресс, ПриборКомплект, 2005. – 544 с.

4.9.4. Визильтер Ю. В., Желтов С. Ю., Князь В. А., Ходарев А. Н. Обработка и анализ цифровых изображений с примерами на LabVIEW и IMAQ Vision. М.: ДМК пресс, ПриборКомплект, 2008. – 464 с.

4.9.5. Суранов А. Я. LabVIEW 8.20 Справочник по функциям. М.: ДМК пресс, ПриборКомплект, 2007. – 536 с.

4.9.6. Кучерявский С.В., Суранов А.Я. Основы сетевых технологий. Создание сетевых приложений в среде LabVIEW. Изд-во Алтайского ун-та , 2005. – 49 с.


Дата добавления: 2018-05-12; просмотров: 691; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!