ограничения строки snmp? - PullRequest
5 голосов
/ 16 декабря 2010

Пока я изучаю SNMP, у меня есть несколько вопросов о строковых операциях SNMP:

  • Какой максимальный размер строки?
  • Если у нас есть разрешение на чтение строки, как вы можете определить размер?
  • Строка может в основном принимать все типы символов (например, #$%^& и т. Д.). Как их можно ограничить?

Ответы [ 4 ]

4 голосов
/ 18 декабря 2010

В SNMP нет строковых понятий. OCTET STRING не является реальной строкой (по сравнению с языками программирования высокого уровня, такими как Java и C #), поскольку в этой структуре данных негде хранить информацию о кодировании. Ну, это действительно ужасно.

Максимальный размер строки ограничен только размером сетевого пакета SNMP, поэтому вы должны перейти к протоколу TCP / IP для ответа. Никакой SNMP RFC не определяет максимальную длину.

Лично я считаю OCTET STRING массивом байтов, поэтому в нем могут храниться любые символы. Если вы хотите ограничить их, вы должны сделать это в реализации агента / механизма SNMP. Когда найден «недопустимый» символ, вы можете вернуть ошибку SNMP. Подробности можно найти в RFC 3416 4.2.1. или RFC 1157, 4.1.5.

3 голосов
/ 13 сентября 2013

OCTET STRING может содержать любую последовательность октетов, поэтому нет гарантии, что они являются печатными символами.

Многие другие "типы" основаны на OCTET STRING, добавляя ограничения.Например, IpAddress - это просто строка OCTET, ограниченная четырьмя байтами.Это определено в определении Textual Convention в модуле MIB.RFC1155-SMI содержит определение для IpAddress.

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

В частности, не используйте OCTET STRING, если вы знаете, что строка должна быть напечатана.Вместо этого выберите SnmpAdminString (почти для всех целей) или DisplayString (если вы абсолютно уверены, что данные будут содержать только символы ASCII, а не расширенные символы, такие как акценты и нелатинские символы).Оба ограничены 255 октетами, что разумно для большинства целей управления сетью.Если вы хотите передавать большие объемы данных, чем это, возможно, вы пытаетесь сделать что-то, для чего SNMP не был разработан.

0 голосов
/ 13 июля 2016

Единственное ограничение - SNMP использует UDP в качестве транспортного протокола - я согласен. Однако MTU для UDP составляет 64 КБ. См. https://en.wikipedia.org/wiki/User_Datagram_Protocol. MTU = 1500 для стандартных пакетов Ethernet. Таким образом, в этом случае максимальный размер составляет 64 КБ.

0 голосов
/ 24 марта 2015

OCTET STRING не имеет ограничений по размеру. Единственным ограничением здесь является то, что SNMP использует UDP в качестве транспортного протокола. Итак, MTU = 1500. Это ваш максимальный размер.

...