Snmp — что это

Введение

Общая логика (CL) — это логическая структура, предназначенная для обмена и передачи информации. Структура позволяет использовать множество различных синтаксических форм (диалектов), которые с сохранением семантики можно перевести в общий синтаксис на основе XML.

У CL есть несколько новых функций, главными из которых являются синтаксис, допускающий конструкции «более высокого порядка», например использование квантора по классам или отношениям при условии сохранения теории модели первого порядка, и семантика, которая позволяет теориям описывать интенциональные сущности, например классы или свойства. Кроме того, в CL предусмотрены инструменты для обработки типов данных и именования, импорта и передачи содержимого через Интернет с помощью XML.

Внешние ссылки[править | править код]

→ «Семейство стандартов SNMP»в Викиучебнике

  • Internet Engineering Task Force
  • ITU Telecommunication Standardization Sector
  • International Organization for Standartization

Основные протоколы TCP/IP

Прикладной уровень: HTTP, DHCP, IRC, SNMP, DNS, NNTP, XMPP, SIP, BitTorrent, XDR, IPP…

Электронная почта: SMTP, POP3, IMAP4 • Передача файлов: FTP, TFTP, SFTP • Удалённый доступ: rlogin, Telnet, SSH

Транспортный уровень: TCP, UDP, SCTP, DCCP, RTP, RUDP…

Сетевой уровень: IPv4, IPv6, ARP, RARP, ICMP, IGMP

Канальный уровень: Ethernet, 802.11 WiFi, Token ring, FDDI, PPP, HDLC, SLIP, ATM, DTM, X.25, Frame Relay, SMDS, SDH, PDH, ISDN

Физический уровень: RS-232, , , EIA-485…

Общие особенности сетевой модели

У сетевой модели OSI всего 7 уровней, расположенных в иерархическом порядке. Верхний седьмой уровень – прикладной, а нижний первый – физический. Сетевая модель была разработана ещё в 1975 году для описания архитектуры и работы сетей, передающих данные. В процессе отправки информации всегда участвует 3 элемента:

  • отправитель;
  • получатель;
  • отправляемые и получаемые данные.

Так видит отправку файлов по беспроводным и проводным сетям обычный пользователь. Процедуру отправки и получения данных детально описывает OSI. На первом уровне информация представлена в виде бит. На седьмом она становится данными. Когда информация из бит переходит в данные происходит декапсуляция. Обратное преобразование с седьмого на первый уровень называется инкапсуляцией.

Информация на каждом уровне представляется своими протоколами. Любой файл при отправке по сети проходит процесс инкапсуляции и декапсуляции. Рассмотрим более подробно уровни представления модели OSI.

Базовые понятия

Протокол SNMP реализуется на прикладном уровне сетевого стека. Протокол был разработан для согласованного сбора информации из самых разных систем. SNMP использует стандартизированные методы запроса информации и пути.

Существует много различных версий протокола SNMP. Кроме того, протокол частично реализуется некоторыми сетевыми аппаратными устройствами. Наиболее распространённой является версия SNMPv1, но она имеет много уязвимостей; на самом деле, основными причинами её популярности являются её вездесущность и долгое время существования. Вместо неё рекомендуется использовать более безопасную версию SNMPv3.

Сеть на основе SNMP в основном состоит из SNMP-агентов. Агент – это программа, которая собирает информацию об аппаратном устройстве, систематизирует её в предварительно определенные записи, а также отвечает на запросы с помощью протокола SNMP.

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

Идея открытости

Идея свободного доступа к информации выдвинута отцом социологии, Робертом Кингом Мертоном, наблюдавшим Вторую мировую войну. Начиная 1946 годом, подразумевает передачу, хранение компьютерной информации. 1954 добавил возможность обработки. В декабре 2007 года желающие обсудить проблему собрались (Себастопол, Калифорния) и осмыслили программное обеспечение с открытым кодом, интернет, потенциал концепции массового доступа. Обама принял Меморандум о прозрачности и открытости действий правительства.

Роберт Кинг Мертон

Осознание человечеством реального потенциала цивилизации сопровождается призывами совместно решать проблемы. Концепция открытости данных широко обсуждается документом (1995) Американского научного агентства. Текст затрагивает геофизику и экологию. Общеизвестен пример корпорации ДюПонт, использовавший некоторые спорные технологии производства Тефлона.

Версии протокола

С момента выхода протокол SNMP прошел через множество изменений. Первая реализация SNMP, сейчас известная как SNMPv1, появилась в 1988 году и состояла из RFC 1065, RFC 1066 и RFC 1067. Эта версия до сих пор широко поддерживается, однако она имеет множество проблем с безопасностью (например, аутентификация в виде обычного текста), поэтому её использование крайне нежелательно, особенно это касается незащищенных сетей.

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

Поэтому появились дополнительные релизы версии 2, каждый из которых сохранил основную часть усовершенствований версии 2, но изменил модель безопасности. Версия SNMPv2c возобновила модель безопасности на основе сообществ (которая была использована в v1); это была самая популярная версия протокола v2. Другая реализация, SNMPv2u, основана на пользовательской модели безопасности, также не стала популярной.

В 1998 вышла третья версия SNMP (текущая). Она предлагает пользовательскую систему безопасности, которая позволяет устанавливать требования к аутентификации с помощью одной из этих моделей:

  • NoAuthNoPriv: пользователи, подключающиеся на этом уровне, не имеют учётных данных для аутентификации; отправленные и полученные ими сообщения находятся в общем доступе.
  • AuthNoPriv: на этом уровне для подключения нужно пройти аутентификацию, но сообщения не будут зашифрованы.
  • AuthPriv: обязательная аутентификация, сообщения шифруются.

Кроме новых моделей аутентификации был реализован механизм контроля доступа, который управляет доступом пользователей к веткам. Версия 3 также может использовать протоколы безопасности SSH или TLS.

MIBSNMP

Соответствие модели OSI и других моделей сетевого взаимодействия [ править | править код ]

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

Семейство TCP/IP

Семейство TCP/IP имеет три транспортных протокола: TCP, полностью соответствующий OSI, обеспечивающий проверку получения данных; UDP, отвечающий транспортному уровню только наличием порта, обеспечивающий обмен датаграммами между приложениями, не гарантирующий получения данных; и SCTP, разработанный для устранения некоторых недостатков TCP, в который добавлены некоторые новшества. В семействе TCP/IP есть ещё около двухсот протоколов, самым известным из которых является служебный протокол ICMP, используемый для внутренних нужд обеспечения работы; остальные также не являются транспортными протоколами.

Семейство IPX/SPX

В семействе IPX/SPX порты появляются в протоколе сетевого уровня IPX, обеспечивая обмен датаграммами между приложениями (операционная система резервирует часть сокетов для себя). Протокол SPX, в свою очередь, дополняет IPX всеми остальными возможностями транспортного уровня в полном соответствии с OSI.

В качестве адреса хоста ICX использует идентификатор, образованный из четырёхбайтного номера сети (назначаемого маршрутизаторами) и MAC-адреса сетевого адаптера.

Общие ЧАВО и решения

В: Как настроить SNMP?

О: SNMP использует центральный компьютер с программным обеспечением SNMP для управления сетевыми коммутаторами. Сегодня большинство сетевых коммутаторов на рынке, будь то гигабитные коммутаторы или коммутаторы 40G, поддерживают SNMP. SNMP предоставляет унифицированный и простой способ управления этими коммутаторами. Взяв в качестве примера конфигурацию SNMPv2c, процесс включает:

A) Настроить IP-адреса на компьютерах и управляемых коммутаторах.

B) Включить SNMP.

C) Настроить права доступа, чтобы компьютеры могли управлять назначенными коммутаторами.

D) Проверить результат конфигурации.

Для получения более подробной информации о конфигурации SNMP, посетите Конфигурация SNMP на коммутаторах серии FS 3900, пожалуйста.

В: Что делать, если NMS не удалось получить Trap?

О: В конфигурации по умолчанию не все Trap включены. В системном представлении пользователи могут:

  • Просмотреть список функций, которые включили Trap без показа всех snmp-agent trap

  • Открыть соответствующий Trap с snmp-agent

  • Открыть все Trap с snmp-agent trap

В: SNMPv1 vs SNMPv2c vs SNMPv3, каковы различия

О: В следующей таблице показано сравнение этих трех типов SNMP:

SNMPv1 SNMPv2c SNMPv3
Контроль доступа Основано на названиях сообществ и MIB Основано на названиях сообществ и MIB Контроль доступа на основе пользователя, группы пользователей и представления MIB
Аутентификация и конфиденциальность Основано на названиях сообществ Основано на названиях сообществ Режим аутентификации: MD5/SHA Режим шифрования: DES56/AES128/AES192/AES256/3DES
Trap Поддержает Поддержает Поддержает
Inform Не поддержает Поддержает Поддержает
GetBulk Не поддержает Поддержает Поддержает
Приложение Подходит для небольших сетей с низкими требованиями к безопасности Подходит для малых и средних предприятий и крупных сетей с низкими требованиями к безопасности Подходит для крупных и сверхгигантских предприятий со строгими требованиями безопасности

В: Существует ли гарантия безопасности для SNMP?

О: Сначана безопасность не была первоочередной задачей разработчиков. Первая версия SNMP была создана в те времена, когда механизма защиты не было как такового. Поэтому версия SNMPv1 практические не имеет защиты от взлома и уязвима для атаки. Но через некоторое время вышел протокол SNMPv2, в котором были значительно улучшены производительность и безопасность. Потом версия протокола SNMPv3 решила все проблемы. На данный момент все основные крупные производители платформ сетевого управления поддерживают протокол SNMPv3, включая HP OpenView, IBM Tivoli, CA Unicenter и т.д.

Что такое модель OSI

Модель OSI (Open System Interconnection) полностью описывает, как работают сетевые устройства. Это набор инструкций (протоколов), которые помогают компьютерам обмениваться данными внутри локальных сетей и всего интернета.

Сама по себе модель OSI — не стандарт интернета, как, например, TCP/IP; её можно сравнить скорее с фреймворками в мире языков программирования: в OSI «из коробки» доступны разные веб-стандарты — UDP, HTTP, FTP, Telnet и другие.

Модель OSI включает семь слоёв, или уровней, — причём каждый из них выполняет определённую функцию: например, передать данные или представить их в понятном для человека виде на компьютере. Кстати, у каждого слоя — свой набор протоколов.

Слои ничего не знают о том, как устроены другие слои. Это называется абстракцией.

Семислойная модель OSIИзображение: Skillbox Media

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

Нижний слой оперирует такими понятиями, как «тип кабеля» или «тип коннектора», а верхний — такими, как HTTP или API.

Соответствие модели OSI и других моделей сетевого взаимодействия

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

Семейство TCP/IP

Семейство TCP/IP имеет три транспортных протокола: TCP, полностью соответствующий OSI, обеспечивающий проверку получения данных; UDP, отвечающий транспортному уровню только наличием порта, обеспечивающий обмен датаграммами между приложениями, не гарантирующий получения данных; и SCTP, разработанный для устранения некоторых недостатков TCP, в который добавлены некоторые новшества. В семействе TCP/IP есть ещё около двухсот протоколов, самым известным из которых является служебный протокол ICMP, используемый для внутренних нужд обеспечения работы; остальные также не являются транспортными протоколами.

Семейство IPX/SPX

В семействе IPX/SPX порты появляются в протоколе сетевого уровня IPX, обеспечивая обмен датаграммами между приложениями (операционная система резервирует часть сокетов для себя). Протокол SPX, в свою очередь, дополняет IPX всеми остальными возможностями транспортного уровня в полном соответствии с OSI.

В качестве адреса хоста ICX использует идентификатор, образованный из четырёхбайтного номера сети (назначаемого маршрутизаторами) и MAC-адреса сетевого адаптера.

Технология инструментария управления Windows

Технология инструментария WMI — это инфраструктура управления, поддерживающая синтаксис модели CIM, формат MOF и общий интерфейс программирования. С помощью синтаксиса MOF определяется структура и содержимое схемы CIM в форме, которая может быть прочитана как человеком, так и компьютером. В инструментарии управления Windows предлагается мощный набор служб, включая получение данных на основе запросов и уведомление о событиях. Можно получить доступ к этим службам и данным управления посредством программируемого интерфейса COM. Интерфейс сценариев WMI также поддерживает создание сценариев.

Технология WMI предоставляет следующие возможности:

  • Отслеживание и управления любого объекта управления с помощью общего, стандартного набора интерфейсов независимо от базового механизма инструментария. WMI — это механизм доступа.
  • Постоянная модель операций, настроек и состояний в операционных системах Windows.
  • Программируемые интерфейсы приложений COM, которые поддерживают единую точку доступа для всех данных управления.
  • Взаимодействие с другими службами управления Windows. Этот подход может упростить процесс создания интегрированных, хорошо спроектированных решений управления.
  • Гибкая, расширенная архитектура. Разработчики могут расширить модель данных для работы с новыми устройствами и приложениями путем создания модулей кода, которые называются поставщиками WMI.
  • Расширения модели WDM для получения данных инструментария и событий с драйверов устройств и компонентов ядра.
  • Мощная архитектура событий. С ее помощью можно определять, суммировать, сравнивать и сопоставлять изменения данных управления с другими данными управления. Эти изменения могут быть переадресованы локальным или удаленным приложениям управления.
  • Полнофункциональный язык запросов, с помощью которого можно создавать подробные запросы модели данных.
  • Интерфейс API для разработки сценариев, который может использоваться разработчиками для создания приложений управления. Интерфейс API для создания сценариев поддерживает несколько языков, в том числе Microsoft Visual Basic; Visual Basic for Applications (VBA); Visual Basic, Scripting Edition (VBScript); программная среда разработки Microsoft JScript. Кроме VBScript и JScript, разработчики могут использовать любой язык для написания сценариев, который поддерживает технологии сценариев Microsoft ActiveX с интерфейсом API (например модуль сценариев Perl). Кроме того, можно использовать сервер сценариев Windows или Microsoft Internet Explorer для написания сценариев с помощью этого интерфейса. Сервер сценариев Windows, как и Internet Explorer, служат в качестве модуля управления для модулей создания сценариев ActiveX. Сервер сценариев Windows поддерживает сценарии, написанные на языках VBScript и JScript.

Как изобразить AST

Предложение «мама мыла раму» можно написать мелом на доске, можно печатным текстом в книге, можно ручкой в тетради. Это будет всё то же предложение.

Точно также и AST можно изобразить в виде рисунка (как здесь), можно записать на бумаге (или в тексте) линейно как префиксное выражение, а можно сохранить на жёсткий диск в виде последовательности байтов.

А можно в виде структуры на каком-нибудь языке программирования, например:

Концептуальной разницы это не создаёт. Без ограничения общности мы все такие варианты будем назвывать «абстрактными синтаксическими деревьями», хотя это может быть не буквальный рисунок дерева, а массив (структура данных внутри языка разработки парсера), линейный текст, либо последовательность зарядов электронов на SSD-диске.

Что такое AST?

AST — это Abstract Syntax Tree, т.е. представление структуры программы в виде дерева объявлений, инструкций и выражений.

  • AST не является бинарным деревом: например, у унарного оператора будет один дочерний узел
  • AST является гетерогенным деревом, состоящим из узлов разного типа
  • В каждом поддереве дочерними узлами становятся лексически вложенные сущности: например, для узла объявления функции дочерними узлами являются инструкции, составляющие тело функции, а также объявления параметров функции (если они выделены в отдельные узлы AST волей автора компилятора)

Удобный способ реализовать AST в коде — это иерархия классов и интерфейсов. Например, можно ввести три базовых интерфейса:

  • ExpressionAST — интерфейс, который реализуется всеми выражениями
  • StatementAST — интерфейс, который реализуется всеми инструкциями
  • DeclarationAST — аналогичный интерфейс для объявлений функций и типов
    • В компилируемых языках всю программу целиком можно считать списком DeclarationAST , в скриптовых — списком StatementAST
    • Альтернативно, можно ввести специальный узел ProgramAST или ModuleAST

Если в языке нет типов, то DeclarationAST можно для удобства превратить в FunctionAST и считать программу списком FunctionAST .

Все остальные классы из иерархии наследуются от базовых интерфейсов и реализуют объявленные ими методы. Какие методы находятся в базовых интерфейсах — решать автору компилятора/интерпретатора. В любом случае, методы должны выстраиваться в единую модель генерации кода или интерпретации.

Суть дерева — в возможности обойти его (слева направо в глубину или другим способом). При обходе можно выполнять осмысленные действия, при этом возникает проблема двойной диспетчеризации: мы должны выбирать действие в зависимости как от алгоритма, которым мы обрабатываем дерево, так и от типа узла дерева, который мы сейчас обходим. Рассмотрим пути решения проблемы:

  • Можно избежать проблемы: например, добавляем полиморфный метод Evaluate в интерфейс ExpressionAST и реализуем его по-разному в классах LiteralAST , VariableAST , BinaryOperatorAST , CallAST — на выходе получаем возможность вычислить выражение
  • Можно решить проблему с помощью шаблона проектирования Visitor (Посетитель)
  • Можно решить проблему с помощью сопоставления шаблона (pattern matching) по типу, если язык это поддерживает
    • Например, в Go можно использовать type switch
    • В C++ можно было бы использовать std::variant , но он не поддерживает рекурсию в собственном определении

Сетевой уровень

Этот уровень отвечает за маршрутизацию данных внутри сети между компьютерами. Здесь уже появляются такие термины, как «маршрутизаторы» и «IP-адреса».

Маршрутизатор, который используют интернет-провайдеры. Обычно маршрутизатор — это Wi-Fi-роутерФото: Wikimedia Commons

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

Данные на сетевом уровне представляются в виде пакетов. Такие пакеты похожи на фреймы из канального уровня, но используют другие адреса получателя и отправителя — IP-адреса.

Чтобы получить IP-адрес обоих устройств (отправителя и получателя), используется протокол ARP (Address Resolution Protocol). Он умеет конвертировать MAC- в IP-адрес и наоборот.

Инструкции

Инструкции — это действия в исходном коде. Инструкция всегда имеет побочный эффект (печать, присваивание переменной, смена потока управления и т.д.), поэтому в некоторых языках инструкций не существует — например, в LISP или Haskell.

Примеры инструкций, характерных для процедурных языков:

  • Объявление переменной с опциональной/обязательной инициализацией, например, let value = . ; или int x = 500;
  • Присвоение переменной, например, velocity = velocity + acceleration * dt;
  • Специальные инструкции, например, печать print x+1 или проверка контракта assert isinstance(x, int) в языке Python
  • Условные инструкции, такие как if , switch
  • Циклы, такие как while , do/while , repeat/until , for , foreach
  • Инструкции потока управления, например, возвраты из функций return x+5; или прерывания циклов break;
  • Блоки кода, такие как

LL(1)-грамматики

LL(k)-грамматики — грамматики, в которых мы можем определить правило для
раскрытия нетерминала по первым символам входной цепочки.

Дано: цепочка терминальных символов и нетерминальный символ. Требуется определить,
по какому правилу нужно раскрыть нетерминальный символ, чтобы получить префикс
этой цепочки. Для LL(k)-грамматик это можно сделать, зная первые k символов.

Чаще всего рассматриваются LL(1)-грамматики, где раскрытие определяется по первому
символу.

Пример: не-LL(k)-грамматика:

Если имеем строку и нетерминал , то мы не знаем, по какому
правилу нужно раскрывать . Поскольку в начале строки может быть сколько
угодно сомножителей, в общем случае, чтобы выбрать правило раскрытия для
(т.е. или ), нужно прочитать неизвестное количество входных
знаков. А для LL(k)-грамматики k должно быть конечно и фиксировано.

Пример: LL(1)-грамматика для тех же арифметических выражений:

здесь  — пустая строка. В данной грамматике мы всегда можем определить
применимое правило. Например, для правило только одно, его используем.
Для : если строка начинается на , то выбираем вторую ветку ,
иначе выбираем первую . Для : знак выбирает первую ветку, знак
 — вторую.

Пример не-LL(1)-грамматики:

Для строки и нетерминала мы не можем определить раскрытие по первому
символу, т.к. допустимо и то, и другое правило. Язык включает в себя две строки:
и . По первому символу невозможно определить правило для .

Однако, это грамматика LL(2). По первым двум символам определить раскрытие можно.

Также грамматика не LL(1) если разные правила начинаются с одинаковых символов:

Грамматика не LL(1), если в правилах имеем т.н. левую рекурсию:

Преимущество LL(1)-грамматик — для них сравнительно легко написать синтаксический
анализатор методом рекурсивного спуска.

Команды протокола SNMP

Отчасти протокол SNMP популярен благодаря простым командам. Он выполняет всего несколько операций, но они достаточно гибки.

Следующие блоки данных протокола описывают точные типы сообщений, которые поддерживает протокол:

  • Get: это сообщение менеджер отправляет агенту, чтобы запросить значение определённого OID. В ответ этот запрос получает сообщение Response, содержащее все необходимые данные.
  • GetNext: это сообщение позволяет менеджеру запрашивать следующий последовательный объект в MIB. Так можно пересечь структуру MIB, не используя в запросах OID.
  • Set: это сообщение менеджер отправляет агенту для того, чтобы изменить значение переменной. С помощью Set можно управлять информацией о конфигурации или иным образом изменять состояние удаленных хостов. Это единственная операция записи, которую поддерживает протокол.
  • GetBulk: этот запрос работает как несколько запросов GetNext. Менеджер получит ответ максимальный объём данных (учитывая ограничения запроса).
  • Response: агент отправляет это сообщение менеджеру, чтобы передать ему запрашиваемые данные. Если запрашиваемые данные нельзя передать, response будет содержать ошибку с дополнительной информацией. Сообщение response отправляется на любой из вышеперечисленных запросов, а также на сообщение Inform.
  • Trap: это сообщение обычно отправляется агентом менеджеру, чтобы предоставить информацию о событиях, которые происходят на управляемых устройствах.
  • Inform: такое сообщение менеджер отправляет агенту в ответ на trap. Если агент не получит такого сообщения, он будет повторно отправлять сообщения trap.

Выражения

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

  • Доступ к переменной (variable access): например, x
  • Литерал (literal): например, 5.18 или «some meaningful string»
  • Унарный оператор (unary operator): например, -x
  • Бинарный оператор (binary operator): например, x + 5.18 или x == 5.18
    • Разные бинарные операторы обычно имеют разный приоритет и могут группироваться скобками, но в функциональных языках (LISP, Haskell) операторы бывают неотличимы от функций
    • Типовой набор операторов: арифметические, логические, сравнения; такой набор уже позволяет создавать полноценные программы
  • Вызов функции (function call): например, sqrt(pow(a, 2.0) + pow(b, 2.0))
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: