私はしばらくの間、SNMPパケットフォーマットの頭を抱えようとしていましたが、私はまだそれを持っているかどうかはわかりません。ここで私は私が正しいと思うが、私はわからないんだけど、いくつかの観察です:SNMPパケットフォーマット
- 各パケットは、タイプ、長さ、およびいくつかのデータからなる、さまざまなタイプのネストされたデータプリミティブのセットです。
- OIDの最初の2つの部分は常に
1.3
で、1バイトにエンコードされます。 - 数値が128より小さい場合、後続の部分はそれぞれ1バイトとしてエンコードされます。
- 127より大きいOID部分は、値が最下位7ビットによって決定され、最上位ビット最後のバイトを除くすべての場合は1になります。
- 一部のデータ型IDは公式(整数、文字列など)ですが、一部は専有でデバイス固有です。
私が実際に理解していないビットは、値が255バイトを超えると、特定の値の長さがどのようにコード化されるかです。 Wiresharkを使用して、私は256より下の長さの場合、長さフィールドが1バイトであることを発見しましたが、長さが256より大きい場合、フィールドは複数のバイトに分割されます。ただし、より大きなOIDの部品番号で使用されるエンコーディングは適用されないようです。
私はこれについてRFCの中に何かを見つけることができません(とにかく約30人あります)助けてください。
誰かが私のためにこれをクリアすることができますか、上で行った観察が正しいことを確認できますか?
これらの記事の情報は非常に曖昧で混乱しています。そのため、なぜ私は明確化を求める質問を投稿しました。 – Polynomial
SNMPがASN.1、特にBERエンコーディングを使用する重要なポイントを見逃したようです。 Wikipediaの記事:http://en.wikipedia.org/wiki/Basic_Encoding_Rulesにリンクしています。これは次のリンク先です:http://luca.ntop.org/Teaching/Appunti/asn1.htmlさまざまなデータ型のエンコーディングの例とともに、エンコーディングの詳細な概要。 – arx
ありがとうございます。私は今、そのほとんどを取り組んだと思う。 – Polynomial