Почему продвинутые промышленны... Заметка
Сообщество RSS DEV

Почему продвинутые промышленные протоколы игнорируют "сырые" сокеты

Автор изначально отказался от высокоуровневых библиотек, чтобы понять протоколы на фундаментальном уровне, основанном на сокетах. Такой практический подход дал прямое представление о том, как протоколы взаимодействуют в сети. Хотя это было успешно с более простыми протоколами, такими как Modbus, применение той же методологии к сложным, таким как EtherNet/IP и DNP3, оказалось сложным. Продвинутые промышленные протоколы имеют сложно вложенные структуры, требующие точности на уровне байтов при ручном создании. Ошибки в этих вручную созданных двоичных потоках приводят к сбоям системы и тихим тайм-аутам без четкой обратной связи об ошибках. Отладка этих проблем часто требует изучения журналов контейнеров, чтобы точно определить место сбоя. Автор подчеркивает, что разочарование часто начинается с неверных предположений о том, как высокоуровневые библиотеки обрабатывают форматы протоколов. Когда абстракции библиотек препятствуют необходимой манипуляции пакетами, единственным выходом является ручное создание полезной нагрузки. Однако для сложных протоколов этот ручной подход становится чрезвычайно трудным из-за сложного управления сеансами и заголовков маршрутизации. Полагаться исключительно на автоматизированные инструменты в области безопасности операционных технологий — значительный риск. Эти инструменты построены на предположениях, которые редко соответствуют действительности в разнообразных реальных промышленных средах. При столкновении с нестандартными конфигурациями устройства могут замолчать, а инструменты могут дать неверные результаты. В конечном итоге автор приходит к выводу, что ручное взаимодействие с протоколами на уровне сети, несмотря на его сложность, неоценимо для глубоких исследований безопасности. Такое прямое взаимодействие позволяет немедленно распознавать сетевые аномалии и точно понимать сбои связи.