Packetizer Logo
 

Where is the format of H.323 messages described? (Q110)

The information in this article applies to:

You probably skipped right over it. Unlike other protocols with which you may be familiar, H.323 uses an abstract notation (ASN.1) to describe the contents of its messages other than the Q.931 part of call-signaling messages. Final draft documents that contain the abstract notation for the call control (H.245), call signaling (H.225.0), and RAS (H.225.0) messages can be found elsewhere on this site. Check out the H.245v7 and H.225.0v4 drafts (Annexes A and H, respectively).

To understand how ASN.1 works, you will need to obtain Recommendations, X.680 (ASN.1) and X.691 (ASN.1 PER)--free of charge--from the ITU-T web site. You can also find books about ASN.1 on the Packetizer bookshelf.

If you are having trouble understanding the whole ASN.1 thing, try this. Think of ASN.1 as a high-level, third-generation programming language like C or C++ and virtually all other message-format description methods as either first-generation, machine languages, e.g., RTP/RTCP's block diagrams, or second-generation, assembly languages, e.g., the ABNF used by SIP. With ASN.1, you typically run the format specification, sometimes called the syntax tree, through an ASN.1 compiler that automatically generates a set of functions for you that hides all the encoding-specific logic, whereas with other methods you must write the encode/decode logic by hand, similar to having to write programs in assembly or machine language. Can you imagine doing that these days? Also, as with high-level programming languages, ASN.1 frees you from the details of representation and allows you to focus on content and semantics.