List of zero or more bytes. Used to represent strings, they have no maximum length. A real number. When a session is established, both sides negotiate about which ASN.1 objects they will be using. Primitive types can be combined into more complex types.
Types can be either primitive or complex types.
Unordered collection of various types. Any one type taken from a given list. The idea is to allow the sender to omit parts of a data structure and let the omitted fields take on default values. For data structure containing many components, this may lead to substantially less actual data transferred. ASN.1 uses tagging to solve this problem, allowing any data type or field to have a tag that identifies it.