С.В. АНТОНОВИЧ Научный руководитель – В.М. НЕМЧИНОВ, к.т.н., профессор Национальный исследовательский ядерный университет «МИФИ» ПРЕДСТАВЛЕНИЕ СТЕКА ПРОТОКОЛОВ TCP/IP В ВИДЕ КОНЕЧНОГО АВТОМАТА УПРОЩАЕТ ЕГО РЕАЛИЗАЦИЮ ДЛЯ МИКРОКОНТРОЛЛЕРОВ Рассмотрена проблема реализации ресурсоемкой задачи сетевого взаимодействия на ограниченных в ресурсах системах. Намечены возможные пути решения задачи с применением автоматного программирования. Подключение встраиваемой системы на микроконтроллере к вычислительным сетям имеет ряд преимуществ: - не требуется специального ПО на клиентских системах, так как современные системы имеют встроенную поддержку сетей; - скорости передачи данных могут достигать 1000 Мбит/с; - устройство может быть разнесено с клиентским ПК на большое расстояние и может быть доступно с любого ПК, подключенного к сети. Основным недостатком сетевых интерфейсов является сложность их реализации. Если физический уровень интерфейса может быть реализован в специализированном контроллере, то реализация стека сетевых протоколов TCP/IP ложится на плечи программиста: в соответствии с сетевой моделью OSI [1] для реализации минимального встроенного в микроконтроллер веб-сервера необходима разработка ПО сетевых протоколов ARP, IP, TCP, HTTP. Наиболее сложным из перечисленных протоколов является TCP, так как предполагает установку соединения между узлами сети и обязательный контроль доставки данных. Существуют готовые решения различной сложности. Автор предлагает решение, по сравнению с существующими обладающее максимальной простотой и удобством отладки: представление работы протокола TCP в виде конечного автомата с явным выделением состояний. Удобство такого подхода, в частности, состоит в полной формализации работы протокола, что упрощает разработку, отладку, тестирование и многократно улучшает понимание программистом логики работы кода. Подробное описание автоматного подхода может быть найдено в [2, 3]. Здесь более подробно остановимся на описании графа состояний конечного автомата TCP для простейшего случая, когда встраиваемая система выполняет роль сервера (полный граф состояний может быть найден, например, в [4]). Соответствующий граф показан на рис. 1. Рис 1. Граф состояний конечного автомата TCP в роли сервера. Условные обозначения, принятые на графе: SYN – сегмент с установленным флагом синхронизации TCP, ACK – с флагом подтверждения, FIN – с флагом закрытия соединения. Стартовым состоянием является состояние «Closed». После начала работы атомата сразу же производится переход в состояние «Listen», в котором сервер готов принимать соединения. При принятии сегмента с флагом SYN с запросом на установления соединения сервер отсылает в ответ сегмент с флагами SYN, ACK, после чего переходит в состояние «SYN received», в котором ожидает подтверждения установки соединения (т.е. сегмента с флагом ACK от клиента). После соответствующего подтверждения TCP-соединение считается установленным, а конечный автомат находится в состоянии «Opened», в котором возможна передача данных. Закрывается соединение аналогичным образом, при этом конечный автомат проходит через состояния «Wait for close» и «Last ACK». Применение рассмотренного алгоритма на реальных прототипах позволило значительно упростить обслуживание программного кода. Список литературы 1. Олифер В.Г., Олифер Н.А. Компьютерные сети. Принципы, технологии, протоколы. СПб: Питер, 2010. – 943 с. 2. Поликарпова Н.И., Шалыто А.А. Автоматное программирование. СПб.: Питер, 2009. – 168 с. 3. Антонович С.В., Немчинов В.М. Унификация программного обеспечения интеллектуальных датчиков во встраиваемых микропроцессорных средствах измерений. // Датчики и системы. – 2012 – № 11. 4. Wright G, Stevens R. TCP/IP Illustrated, Volume 2: The Implementation. Addison-Wesley Publishing Company, Inc.