The SNMP supports operations on MIB objects whose syntax is
ObjectSyntax as defined in the SMI. Informally stated, SNMP
operations apply exclusively to scalar objects. However, it is
convenient for developers of management applications to impose
imaginary, tabular structures on the ordered collection of objects
that constitute the MIB. Each such conceptual table contains zero or
more rows, and each row may contain one or more scalar objects,
termed columnar objects. Historically, this conceptualization has
been formalized by using the OBJECT-TYPE macro to define both an
object which corresponds to a table and an object which corresponds
to a row in that table. (The ACCESS clause for such objects is
"not-accessible", of course.) However, it must be emphasized that, at
the protocol level, relationships among columnar objects in the same
row is a matter of convention, not of protocol.
Note that there are good reasons why the tabular structure is not a
matter of protocol. Consider the operation of the SNMP Get-Next-PDU
acting on the last columnar object of an instance of a conceptual
row; it returns the next column of the first conceptual row or the
first object instance occurring after the table. In contrast, if the
rows were a matter of protocol, then it would instead return an
error. By not returning an error, a single PDU exchange informs the
manager that not only has the end of the conceptual row/table been
reached, but also provides information on the next object instance,
thereby increasing the information density of the PDU exchange.