I'm learning about SNMP, and writing some applications using it. I have some basic questions about the protocol:

1. Do the agents store its state on the device itself?
2. If there is a trap set on an agent, can you do a poll on the same OID to get the same information?
3. Without using a mib file, is there a way to query a device for all of its information at once? If not, and you're writing your own customized manager, do you have to know the structure of what it reports up front?
4. If you're setting up an agent to report, is there usually a way to control the frequency of how often it sends a trap? Or does it usually send a trap as often as some condition is satisfied?