ゆるゆるエンジニアの技術メモ

神奈川在住のITエンジニアの忘備録です。主にプログラミング(Perl, Java など)やネットワーク技術について、学んだことを自分の中で整理するために書いています。書いたことが誰かのご参考になれば幸いです。

SNMPのoctet string型のデータの中に制御文字は入り得るのか?

SNMPには文字列を表現する型としてoctet string型がある。この型のデータの中に改行コード等の制御文字は入り得るのかについて調べてみた。

 

まず、RFCを見てみた。

RFC 2578 - Structure of Management Information Version 2 (SMIv2)

The OCTET STRING type represents arbitrary binary or textual data.
Although the SMI-specified size limitation for this type is 65535
octets, MIB designers should realize that there may be implementation
and interoperability limitations for sizes in excess of 255 octets. 

 上記の通り、octet string型のデータの中には、任意のバイナリorテキストデータが入ると言っていて、制御文字はダメとは言っていない。なので、RFC規約的には入り得るのだと思われる。

 

ただ、SNMPエージェントから送られてきたoctet string型のデータの中に制御文字が入っていることは見たことがないし、

13.15 SNMPトラップのvarbindが文字化けして表示される

のように、制御文字が入ることを制限している製品もあるので、慣習的に制御文字は入れないのではないだろうか。

 

制御文字が入ることを制限している製品に対して、例えば改行コードが入ったoctet string型のデータを送りたい場合は、送る側で改行コードを「\r\n」という文字列に変換してから送る等すれば良いと思う。