The TCP/IP Guide - Version 3.0 (Contents) ` 1258 _ © 2001-2005 Charles M. Kozierok. All Rights Reserved.
in SNMP messages are defined using ASN.1 as described in the Structure of Management
Information (SMI) standard. So it makes sense to define SNMP messages and all their
fields using the same syntax.
Since all SNMP fields are defined like MIB objects, they are like objects in that they have
certain characteristics. Specifically, each field has a name, and its contents are described
using one of the standard SMI data types. So, unlike normal message formats where each
field has just a name and a length, an SNMP message format field has a name and a
syntax, such as Integer, Octet String or IpAddress. The syntax of the field defines its length
and how it is formatted and used.
Just as regular message formats use integers to represent specific values (for example, the
numeric Opcode field in the DNS message header, which indicates the DNS message
type), this can be done in SNMP using an enumerated integer type. An example would be
the Error Status field, where a range of integer values represents different error conditions.
The decision to define SNMP messages using ASN.1 allows the message format
description to be consistent with how the objects in the format are described, which is nice.
Unfortunately, it means that the field formats are very hard to determine from the standards,
because they are not described in one place. Instead, the overall message format is
defined as a set of components; those components contain subcomponents that may be
defined elsewhere, and so on. In fact, the full message format isn't even defined in one
standard; parts are spread across several standards. So you can't look in one place and
see the whole message format.
Well, I should say that you can't if you use the standards, but you can if you look here. To
make things easier for you, I have converted these “distributed” syntax descriptions into the
same tabular field formats I use throughout the rest of this Guide. I will begin here by
describing the general format used for SNMP messages, and in the next three topics
explore the more specific formats used in each version of SNMP.
General Message Format
To understand SNMP messages, it is important that we first grasp the difference between
SNMP messages and SNMP protocol data units (PDUs). We've seen in looking at SNMP
protocol operations that the two terms are often used interchangeably. This is because
each message carries one PDU, and the PDU is the most important part of the message.
However, strictly speaking, an SNMP PDU and an SNMP message are not exactly the
same. The PDU is the actual piece of information that is being communicated between
SNMP entities. It is carried within the SNMP message along with a number of header
fields, which are used to carry identification and security information. Thus, conceptually,
the SNMP message format can be considered to have two overall sections:
☯ Message Header: Contains fields used to control how the message is processed,
including fields for implementing SNMP security.
☯ Message Body (PDU): Contains the main portion of the message. In this case, the
message body is the protocol data unit (PDU) being transmitted.