SNMP報文格式分析

2021-09-25 09:12:51 字數 2430 閱讀 1216

snmp定義了在客戶和伺服器之間交換的snmp報文的語法和語義。它使用asn.1(抽象語言 abstract syntax notation one)來定義snmp報文格式和mib變數的名稱。因此與絕大多數udp協議不同,snmp報文不含固定字段,也不能用固定的結構來定義。

在iso/osi參考模型中,應用層要求標識各種簡單、復合的資料形式以及取自各種字符集的字串等比較複雜的使用者資料。這就需要定義乙個抽象語法記法,該記法規定型別的例項在傳送中的標識規則(通過8bit位組序列)。

通過定義若干個簡單型別和由簡單型別復合而成的結構型別,在表示層用一致的形式來標識應用層的複雜多樣的資料,便於異構系統間的通訊,這種記法就叫作抽象語法記法(asn.1)。asn.1是一種描述資料和資料特徵的正式語言,它和資料的儲存及編碼無關。

根據asn.1標準定義,資料型別分為:

①簡單資料型別:boolean、null、integer、real、octer、string、object identifier、ip address、time ticks等

②構造資料型別:sequence、sequence of set、set of choice等。

③構造資料型別提供一種或多種簡單資料型別進行復合的方法。

在具體系統中,需要用具體的編碼規則將asn.1語法標識的抽象資料轉換成具體的位元流。snmp使用的編碼方法是ber(basic encoding rule)。

ber的資料都由三個域構成:標識域(tag)+長度域(length)+值域(value)

1.標識域

標識域指明資料的型別,占用乙個位元組,常見型別:

型別位元組表示

bool

0x01

octstr

0x04

objid

0x06

seq0x30

ipaddr

0x40

gauge

0x42

opaque

0x44

int0x02

null

0x05

enum

0x0a

setof

0x31

counter

0x41

timeticks

0x43

2.長度域

長度域指明值域的長度,不定長,一般為1-3個位元組。其格式分為短格式和長格式:

3.值域

值域儲存的是資料的實際編碼。雖然asn.1定義了很多資料型別,但大多數型別可由整型、物件標識、空、串等基本資料型別和sequence構造型別標識。例如:有符號整數和無符號整數、time ticks、gauge、counter統一用整數表示。

(1)整型 integer

integer::=0x02 length * (表示重複)

整型資料值域用補碼表示,去掉多餘的0(正數)或1(負數)。值域最高位為符號位。

(2)物件標識object id

snmp伺服器維護的所有管理資訊庫(mib)物件採用object id

如:1.3.6.1.2.1.1.1表示mib庫中的裝置描述sysdesc變數,其編碼規則如下:

(1)objectid : : = 0x06 length *

(2)subidentifier : : = * lastbyte

(3)leadingbyte : : = 1 7 bitvalue

(4)lastbyte : : = 0 7 bitvalue

(5)首兩個id被合併為乙個位元組x40 + y

雖然規則很多,但由於大多數子物件標識在0~127,只需按規則(1)(5)即可;

當子物件標識大於127,則按規則(2)(3)(4)將其分解為多個位元組,最後乙個位元組的最高位為0,其餘位元組的高位為1。

如:1. 3. 6. 1. 810. 1 ,根據規則(5) ,首兩個子物件標識1. 3被合併為2b (1 *40 + 3 = 43) ;子物件標識810超過127 ,根據規則(2)、(3)、(4)將其拆分為兩個位元組86 2a (810 = 11 0010 1010 = = > 1000 0110 00101010) ;整個mib被編碼為:0x06 0x06 0x2b 0x06 0x010x86 0x2a 0x01。

(3)sequence組合型別

sequence::=0x30 length *

如 :30 05 02 01 10 05 00 表示乙個sequence結構,內含兩個成員,其中乙個為整型,另乙個為空型別(null)。

(4)其他型別

null::=0x05 0x00

string::=0x04 length *

snmp共有5種報文,分別為:get_request(0xa0)、get_next_request(0xa1)、get_response (0xa2)、set_request (0xa3)和trap(0xa4),結構如下:

snmp_message::=sequence

pdu::=sequence

SNMP協議 PDU報文格式分析(BER編碼)

簡單網路管理協議 snmp 是目前在計算機網路中用得最廣泛的網路管理協議,它使用asn.1 abstract syntax notation one 來定義snmp報文格式和mib management information base 變數的名稱。asn.1是一種描述資料和資料特徵的正式語言,它和...

mysql報文格式 Mysql 報文格式

mysql client和server端之間的的資料根據不同的協議規則的進行組織傳送。每包資料在傳送的時候都要新增上協議頭。mysql原始碼採用5.7.10版本 協議頭 每個協議頭共4個位元組 包資料長度 前三個位元組表示資料部分的長度 不包括協議頭 三位元組能表示的最大長度是16m 1 2 24 ...

mysql報文格式 Mysql 報文格式

mysql client和server端之間的的資料根據不同的協議規則的進行組織傳送。每包資料在傳送的時候都要新增上協議頭。mysql原始碼採用5.7.10版本 協議頭 每個協議頭共4個位元組 包資料長度 前三個位元組表示資料部分的長度 不包括協議頭 三位元組能表示的最大長度是16m 1 2 24 ...