技術メモ

神奈川在住のITエンジニアの備忘録。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

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」という文字列に変換してから送る等すれば良いと思う。