[i] Тест стандартного примера TCP/IP
TCP/IP - это аббревиатура термина Transmission Control Protocol/Internet Protocol (Протокол управления передачей/Протокол Internet). В терминологии вычислительных сетей протокол - это заранее согласованный стандарт, который позволяет двум компьютерам обмениваться данными. Фактически TCP/IP не один протокол, а несколько. Именно поэтому часто можно слышать, как его называют набором, или комплектом протоколов, среди которых TCP и IP - два основных. Статья рассмотрит работу со стандартным примером из установочного пака для IDE Keil под микроконтроллеры компании Миландр в пластиковых корпусах. При этом рекомендуем ознакомиться также с базовой статьей "Начальные сведения об Ethernet", в которой приводятся особенности работы блока Ethernet в микроконтроллере К1986ВЕ1QI.
Работа с командной строкой
После небольшой корректировки примера убедимся работоспособности. Данный проект реализует эхо-сервер на основе TCP/IP протокола. То есть пакеты, отправленные на микроконтроллер (далее МК), будут получены обратно. Работать будем с командной строкой Windows и командой ping. Соединяется персональный компьютер (далее ПК) с платой с помощью патч-корда, который идет в комплекте с отладочной платой. С помощью сочетания клавиш Win+R открываем окно "выполнить", прописываем команду cmd. Посмотреть IP-адрес компьютера можно с помощью команды
ipconfig –all
Рисунок 1 - Определение IP адреса
На рисунке 1 можно увидеть IP. Здесь нужно понимать важную особенность. Она состоит в том, что в данный момент компьютер подключен к сети с выходом в Интернет. В настройках соединения по локальной сети стоит получение IP адреса автоматически. Это означает, что когда провод (patch-cord) будет извлечен из компьютера (и связи с Интернетом не будет), а плата будет подключена, этот IP изменится приблизительно через минуту. То есть компьютер будет посылать запросы маршрутизатору в сеть «Кто Я?» и, поскольку ответа он не получит, IP изменится с динамического на статический.
Воспользуемся ARP-таблицей. ARP — протокол сетевого уровня, предназначенный для преобразования IP-адресов (адресов сетевого уровня) в MAC-адреса (адреса канального уровня) в сетях TCP/IP. ARP-таблица отображает IP и MAC подключенных к серверу сетевых устройств. Чтобы отобразить таблицу воспользуемся командной:
arp -a
Рисунок 2 - Таблица ARP
Как можно видеть на рисунке 2, отобразились все IP, подключенные к серверу, и, как можно заметить, в рассматриваемой подсети 1ХХ.ХХ.Х.XX все IP динамические.
Ping
Подключим микроконтроллер(отладочную плату) к ПК с помощью патч-корда. Как было объяснено в предыдущем разделе, IP адрес ПК изменяется, после того как он будет отсоединен от сети Интернет. Для того чтобы проверить соединение c микроконтроллером при помощи утилиты ping необходимо, чтобы и контроллер и ПК находились обязательно в одной локальной сети.
Откроем проект в Keil и перейдем к заголовочному файлу tcpip.h, в котором задается IP адрес МК.
#define MYIP_1 192 // our internet protocol (IP) address
#define MYIP_2 168
#define MYIP_3 38
#define MYIP_4 2
Проверяем ещё раз IP-адрес командой ipconfig.
Рисунок 3 - Проверка IP-адреса
Видим, что IP ПК изменился. Также обратим внимание на маску подсети, значение которой говорит о том, что первые два числа узлов МК и ПК должны совпадать. Следовательно, изменим параметры MYIP на следующие:
#define MYIP_1 169 // our internet protocol (IP) address
#define MYIP_2 254
#define MYIP_3 40
#define MYIP_4 22
Первые два значения совпадают. Загрузим прошивку в микроконтроллер, выполним команду
ping 169.254.40.22
Рисунок 4 - Выполнение команды Ping
Наблюдаем успешную отработку микроконтроллером ICMP Echo-Request пакетов. Теперь можно вновь обратиться к ARP-таблице (команда ARP–a) и проверить, что отображается адрес микроконтроллера (рисунок 5).
Рисунок 5 - Проверка ARP-таблицы
Клиенты TCP: Hercules
Hercules - это программа для работы как с последовательными интерфейсами, так и с UDP/IP и TCP/IP - соединениями в режиме "клиент" и в режиме "сервер". Запустив программу, переходим во вкладку TCP Client, вводим IP. Пробуем установить соединение с помощью утилиты ping. Контроллер реагирует.
Рисунок 6 - Интерфейс утилиты Hercules
Теперь установим соединение по TCP/IP с МК. Такое соединение в данном протоколе устанавливается с помощью "тройного рукопожатия". Для соединения очень важно указать порт. Поскольку мы устанавливаем TELNET-соединение, номер порта определён в файле tcpip.h следующим параметром:
#define TCP_PORT_TELNET 23
Зададим соответствующее значение в программе и подключаемся, оставив IP неизменным (рисунок 7).
Рисунок 7 - Задание порта
После установления соединения в нижнем поле введем текст для посылки в контроллер и нажмем Send. В основном окне программы Received/Send data видим отправленное сообщение, выделенное фиолетовым цветом, а то, что отвечает микроконтроллер - чёрным (рисунок 8).
Рисунок 8 - Эхо ответ микроконтроллера
Клиенты TCP: PuTTY
Протестируем пример на другом свободно распространяемом клиенте для различных протоколов удалённого доступа - PuTTY. Укажем опять тот же IP адрес и соответствующий порт, выберем тип соединения - TELNET (рисунок 9).
Рисунок 9 - Интерфейс PuTTy
И проверяем. Все символы, введённые с клавиатуры, МК тут же возвращает обратно (рисунок 10).
Рисунок 10 - Ответ микроконтроллера
Сохранить статью в PDF