2012-02-07 6 views
0

私はしばらくの間、SNMPパケットフォーマットの頭を抱えようとしていましたが、私はまだそれを持っているかどうかはわかりません。ここで私は私が正しいと思うが、私はわからないんだけど、いくつかの観察です:SNMPパケットフォーマット

  1. 各パケットは、タイプ、長さ、およびいくつかのデータからなる、さまざまなタイプのネストされたデータプリミティブのセットです。
  2. OIDの最初の2つの部分は常に1.3で、1バイトにエンコードされます。
  3. 数値が128より小さい場合、後続の部分はそれぞれ1バイトとしてエンコードされます。
  4. 127より大きいOID部分は、値が最下位7ビットによって決定され、最上位ビット最後のバイトを除くすべての場合は1になります。
  5. 一部のデータ型IDは公式(整数、文字列など)ですが、一部は専有でデバイス固有です。

私が実際に理解していないビットは、値が255バイトを超えると、特定の値の長さがどのようにコード化されるかです。 Wiresharkを使用して、私は256より下の長さの場合、長さフィールドが1バイトであることを発見しましたが、長さが256より大きい場合、フィールドは複数のバイトに分割されます。ただし、より大きなOIDの部品番号で使用されるエンコーディングは適用されないようです。

私はこれについてRFCの中に何かを見つけることができません(とにかく約30人あります)助けてください。

誰かが私のためにこれをクリアすることができますか、上で行った観察が正しいことを確認できますか?

答えて

1

SNMPは、サブセットASN.1を使用して定義されています。それを記述するbunch of standardsがあります。 X.690は、基本的なバイナリエンコーディングを扱います。

+0

これらの記事の情報は非常に曖昧で混乱しています。そのため、なぜ私は明確化を求める質問を投稿しました。 – Polynomial

+0

SNMPがASN.1、特にBERエンコーディングを使用する重要なポイントを見逃したようです。 Wikipediaの記事:http://en.wikipedia.org/wiki/Basic_Encoding_Rulesにリンクしています。これは次のリンク先です:http://luca.ntop.org/Teaching/Appunti/asn1.htmlさまざまなデータ型のエンコーディングの例とともに、エンコーディングの詳細な概要。 – arx

+0

ありがとうございます。私は今、そのほとんどを取り組んだと思う。 – Polynomial