
At a Glance
504 Pages
24.13 x 19.68 x 3.18
Paperback
$262.75
or 4 interest-free payments of $65.69 with
 orÂShips in 15 to 25 business days
ASN.1 Complete teaches you everything you need to know about ASN.1-whether you're specifying a new protocol or implementing an existing one in a software or hardware development project. Inside, the author begins with an overview of ASN.1's most commonly encountered features, detailing and illustrating standard techniques for using them. He then goes on to apply the same practice-oriented approach to all of the notation's other features, providing you with an easy-to-navigate, truly comprehensive tutorial.
The book also includes thorough documentation of both the Basic and the Packed Encoding Rules-indispensable coverage for anyone doing hand-encoding, and a valuable resource for anyone wanting a deeper understanding of how ASN.1 and ASN.1 tools work. The concluding section takes up the history of ASN.1, in terms of both the evolution of the notation itself and the role it has played in hundreds of protocols and thousands of applications developed since its inception.
Features
* Covers all the features-common and not so common-available to you when writing a protocol specification using ASN.1.* Teaches you to read, understand, and implement a specification written using ASN.1.* Explains how ASN.1 tools work and how to use them.* Contains hundreds of detailed examples, all verified using OSS's ASN.1 Tools package.* Considers ASN.1 in relation to other protocol specification standards.
| Foreword | p. xxi |
| Introduction | p. xxiii |
| The Global Communications Infrastructure | p. xxiii |
| What Exactly Is ASN.1? | p. xxiv |
| The Development Process with ASN.1 | p. xxvi |
| Structure of the Text | p. xxvii |
| ASN.1 Overview | p. 1 |
| Specification of Protocols | p. 3 |
| What Is a Protocol? | p. 3 |
| Protocol Specification: Some Basic Concepts | p. 6 |
| Layering and Protocol "Holes" | p. 6 |
| Early Developments of Layering | p. 8 |
| The Disadvantages of Layering: Keep It Simple! | p. 9 |
| Extensibility | p. 9 |
| Abstract and Transfer Syntax | p. 12 |
| Command Line or Statement-Based Approaches | p. 13 |
| Use of an Interface Definition Language | p. 14 |
| More on Abstract and Transfer Syntaxes | p. 15 |
| Abstract Values and Types | p. 15 |
| Encoding Abstract Values | p. 16 |
| Evaluative Discussion | p. 18 |
| There Are Many Ways of Skinning a Cat: Does It Matter? | p. 18 |
| Early Work with Multiple Transfer Syntaxes | |
| Benefits | p. 19 |
| Protocol Specification and Implementation: A Series of Case Studies | p. 24 |
| Octet Sequences and Fields within Octets | p. 24 |
| The TLV Approach | p. 24 |
| The Edifact Graphical Syntax | p. 26 |
| Use of BNF to Specify a Character-Based Syntax | p. 27 |
| Specification and Implementation Using ASN.1: Early 1980s | p. 29 |
| Specification and Implementation Using ASN.1: 1990s | p. 31 |
| Introduction to ASN.1 | p. 34 |
| Introduction | p. 34 |
| The Example | p. 35 |
| The Top-Level Type | p. 36 |
| Bold Is What Matters! | p. 36 |
| Names in Italics Are Used to Tie Things Together | p. 37 |
| Names in Normal Font Are the Names of Fields/Elements/Items | p. 37 |
| Back to the Example! | p. 38 |
| The BranchIdentification Type | p. 41 |
| Those Tags | p. 43 |
| Getting Rid of the Different Fonts | p. 45 |
| Tying Up Some Loose Ends | p. 46 |
| Summary of Type and Value Assignments | p. 46 |
| The Form of Names | p. 47 |
| Layout and Comment | p. 47 |
| So What Else Do You Need to Know? | p. 49 |
| Structuring an ASN.1 Specification | p. 50 |
| An Example | p. 51 |
| Publication Style for ASN.1 Specifications | p. 52 |
| Use of Line Numbers | p. 53 |
| Duplicating the ASN.1 Text | p. 54 |
| Providing Machine-Readable Copy | p. 55 |
| Returning to the Module Header! | p. 56 |
| Syntactic Discussion | p. 56 |
| The Tagging Environment | p. 58 |
| The Extensibility Environment | p. 61 |
| Exports/Imports Statements | p. 64 |
| Refining Our Structure | p. 67 |
| Complete Specifications | p. 71 |
| Conclusion | p. 72 |
| The Basic Data Types and Construction Mechanisms: Closure | p. 73 |
| Illustration by Example | p. 74 |
| Discussion of the Built-In Types | p. 75 |
| The Boolean Type | p. 75 |
| The Integer Type | p. 75 |
| The Enumerated Type | p. 78 |
| The Real Type | p. 79 |
| The Bit String Type | p. 81 |
| The Octet String Type | p. 86 |
| The Null Type | p. 86 |
| Some Character String Types | p. 87 |
| The Object Identifier Type | p. 88 |
| The ObjectDescriptor Type | p. 89 |
| The Two ASN.1 Date/Time Types | p. 90 |
| Additional Notational Constructs | p. 93 |
| The Selection-Type Notation | p. 93 |
| The Components of Notation | p. 94 |
| Sequence or Set? | p. 96 |
| Sequence, Set, and Choice (Etc.) Value-Notation | p. 97 |
| What Else is in X.680/ISO 8824-1? | p. 98 |
| Reference to More Complex Areas | p. 100 |
| Object Identifiers | p. 101 |
| Character String Types | p. 101 |
| Subtyping | p. 104 |
| Tagging | p. 106 |
| Extensibility, Exceptions, and Version Brackets | p. 107 |
| Hole Types | p. 108 |
| Macros | p. 109 |
| Information Object Classes and Objects and Object Sets | p. 110 |
| Other Types of Constraint | p. 111 |
| Parameterization | p. 112 |
| The ASN.1 Semantic Model | p. 112 |
| Conclusion | p. 113 |
| Using an ASN.1 Compiler | p. 114 |
| The Route to an Implementation | p. 115 |
| What is an ASN.1 Compiler? | p. 115 |
| The Overall Features of an ASN.1-Compiler-Tool | p. 118 |
| Use of a Simple Library of Encode/Decode Routines | p. 118 |
| Encoding | p. 119 |
| Decoding | p. 121 |
| Using an ASN.1-Compiler-Tool | p. 121 |
| Basic Considerations | p. 121 |
| What Do Tool Designers Have To Decide? | p. 122 |
| The Mapping to a Programming-Language Data Structure | p. 123 |
| Memory and CPU Tradeoffs at Run-Time | p. 124 |
| Control of a Tool | p. 125 |
| Use of the "OSS ASN.1 Tools" Product | p. 126 |
| What Makes One ASN.1-Compiler-Tool Better than Another? | p. 128 |
| Conclusion | p. 130 |
| Management and Design Issues for ASN.1 Specification and Implementation | p. 131 |
| Global Issues for Management Decisions | p. 132 |
| Specification | p. 132 |
| Implementation: Setting the Budget | p. 133 |
| Implementation Platform and Tools | p. 135 |
| Issues for Specifiers | p. 136 |
| Guiding Principles | p. 136 |
| Decisions on Style | p. 137 |
| Your Top-Level Type | p. 138 |
| Integer Sizes and Bounds | p. 138 |
| Extensibility Issues | p. 140 |
| Exception Handling | p. 141 |
| Parameterization Issues | p. 146 |
| Unconstrained Open Types | p. 147 |
| Tagging Issues | p. 147 |
| Keeping It Simple | p. 148 |
| Issues for Implementors | p. 149 |
| Guiding Principles | p. 149 |
| Know Your Tool | p. 150 |
| Sizes of Integers | p. 150 |
| Ambiguities and Implementation-Dependencies in Specifications | p. 151 |
| Corrigenda | p. 152 |
| Extensibility and Exception Handling | p. 152 |
| Care with Hand Encodings | p. 152 |
| Mailing Lists | p. 153 |
| Good Engineering: Version 2 **WIll** Come! | p. 153 |
| Conclusion | p. 154 |
| Further Details | p. 155 |
| The Object Identifier Type | p. 157 |
| Introduction | p. 157 |
| The Object Identifier Tree | p. 158 |
| Information Objects | p. 160 |
| Value Notation | p. 162 |
| Uses of the Object Identifier Type | p. 163 |
| The Character String Types | p. 165 |
| Introduction | p. 165 |
| NumericString | p. 166 |
| PrintableString | p. 167 |
| VisibleString (ISO646String) | p. 167 |
| IA5String | p. 168 |
| TeletexString (T61String) | p. 168 |
| VideotexString | p. 169 |
| GraphicString | p. 169 |
| GeneralString | p. 169 |
| UniversalString | p. 169 |
| BMPString | p. 170 |
| UTF8String | p. 170 |
| Recommended Character String Types | p. 171 |
| Value Notation for Character String Types | p. 172 |
| The ASN.1-CHARACTER-MODULE | p. 175 |
| Conclusion | p. 175 |
| Subtyping | p. 177 |
| Introduction | p. 177 |
| Basic Concepts and Set Arithmetic | p. 178 |
| Single Value Subtyping | p. 181 |
| Value Range Subtyping | p. 181 |
| Permitted Alphabet Constraints | p. 182 |
| Size Constraints | p. 184 |
| Contained Subtype Constraints | p. 186 |
| Inner Subtyping | p. 187 |
| Introduction | p. 187 |
| Subsetting Wineco-Protocol | p. 189 |
| Inner Subtyping of an Array | p. 192 |
| Conclusion | p. 192 |
| Tagging | p. 194 |
| Review of Earlier Discussions | p. 194 |
| The Tag Name-Space | p. 196 |
| An Abstract Model of Tagging | p. 200 |
| The Rules for When Tags Are Required to Be Distinct | p. 202 |
| Automatic Tagging | p. 204 |
| Conclusion | p. 204 |
| Extensibility, Exceptions, and Version Brackets | p. 205 |
| The Extensibility Concept | p. 206 |
| The Extension Marker | p. 207 |
| The Exception Specification | p. 207 |
| Where Can the Ellipsis Be Placed? | p. 208 |
| Version Brackets | p. 209 |
| The {...} Notation | p. 210 |
| Interaction Between Extensibility and Tagging | p. 210 |
| Conclusion | p. 212 |
| Information Object Classes, Constraints, and Parameterization | p. 214 |
| The Need for "Holes" and Notational Support for Them | p. 215 |
| OSI Layering | p. 215 |
| Hole Support in ASN.1 | p. 216 |
| The ROSE Invocation Model | p. 217 |
| Introduction | p. 217 |
| Responding to the INVOKE Message | p. 219 |
| The Use of Tables to Complete the User Specification | p. 220 |
| Specifying the Tables | p. 221 |
| From Specific to General | p. 223 |
| From Tables to Information Object Classes | p. 224 |
| The Rose Operation and Error Object Class Definitions | p. 227 |
| Defining the Information Objects | p. 228 |
| Defining an Information Object Set | p. 230 |
| Using the Information to Complete the ROSE Protocol | p. 233 |
| The Need for Parameterization | p. 237 |
| What Has Not Been Said Yet? | p. 240 |
| More on Classes, Constraints, and Parameterization | p. 242 |
| Information Object Class Fields | p. 242 |
| Type Fields | p. 243 |
| Fixed Type Value Fields | p. 245 |
| Variable Type Value Fields | p. 246 |
| Fixed Type Value Set Fields | p. 247 |
| Variable Type Value Set Fields | p. 248 |
| Object Fields | p. 248 |
| Object Set Fields | p. 249 |
| Extended Field Names | p. 249 |
| Variable Syntax for Information Object Definition | p. 250 |
| Constraints Revisited--the User-Defined Constraint | p. 256 |
| The Full Story on Parameterization | p. 258 |
| What Can Be Parameterized and Be a Parameter? | p. 258 |
| Parameters of the Abstract Syntax | p. 262 |
| Making Your Requirements Explicit | p. 263 |
| The (Empty) Extensible Information Object Set | p. 268 |
| Other Provision for "Holes" | p. 270 |
| ANY | p. 270 |
| Any Defined By | p. 271 |
| External | p. 272 |
| Embedded Pdv | p. 273 |
| Character String | p. 273 |
| Octet String and Bit String | p. 275 |
| Remarks to Conclude Section II | p. 275 |
| Encodings | p. 277 |
| Introduction to Encoding Rules | p. 279 |
| What Are Encoding Rules, and Why the Chapter Subtitle? | p. 279 |
| What Are the Advantages of the Encoding Rules Approach? | p. 281 |
| Defining Encodings--the TLV Approach | p. 283 |
| Extensibility or "Future Proofing" | p. 285 |
| First Attempts at Per--Start with Ber and Remove Redundant Octets | p. 286 |
| Some of the Principles of Per | p. 288 |
| Breaking Out of the Ber Straightjacket | p. 288 |
| How to Cope with Other Problems that a "T" Solves? | p. 289 |
| Do We Still Need T and L for Sequence and Set Headers? | p. 291 |
| Aligned and Unaligned Per | p. 292 |
| Extensibility--You Have to Have It! | p. 293 |
| What More Do You Need to Know About Per? | p. 294 |
| Experience with Per | p. 295 |
| Distinguished and Canonical Encoding Rules | p. 297 |
| Conclusion | p. 298 |
| The Basic Encoding Rules | p. 300 |
| Introduction | p. 300 |
| General Issues | p. 301 |
| Notation for Bit Numbers and Diagrams | p. 301 |
| The Identifier Octets | p. 302 |
| The Length Octets | p. 304 |
| Encodings of the V Part of the Main Types | p. 308 |
| Encoding a Null Value | p. 308 |
| Encoding a Boolean Value | p. 309 |
| Encoding an Integer Value | p. 309 |
| Encoding an Enumerated Value | p. 310 |
| Encoding a Real Value | p. 310 |
| Encoding an Octet String Value | p. 315 |
| Encoding a Bit String Value | p. 316 |
| Encoding Values of Tagged Types | p. 317 |
| Encoding Values of Choice Types | p. 318 |
| Encoding Sequence of Values | p. 319 |
| Encoding SET OF Values | p. 319 |
| Encoding SEQUENCE and SET Values | p. 320 |
| Handling of OPTIONAL and DEFAULT Elements in Sequence and Set | p. 321 |
| Encoding OBJECT IDENTIFIER Values | p. 322 |
| Encoding Character String Values | p. 325 |
| Encoding Values of the Time Types | p. 327 |
| Encodings for More Complex Constructions | p. 328 |
| Open Types | p. 328 |
| The Embedded PDV Type and the External Type | p. 328 |
| The INSTANCE OF Type | p. 329 |
| The CHARACTER STRING Type | p. 329 |
| Conclusion | p. 329 |
| The Packed Encoding Rules | p. 330 |
| Introduction | p. 331 |
| Structure of a PER Encoding | p. 332 |
| General Form | p. 332 |
| Partial Octet Alignment and PER Variants | p. 333 |
| Canonical Encodings | p. 333 |
| The Outer-Level Complete Encoding | p. 334 |
| Encoding Values of Extensible Types | p. 335 |
| PER-Visible Constraints | p. 338 |
| The Concept | p. 338 |
| The Effect of Variable Parameters | p. 339 |
| Character Strings with Variable Length Encodings | p. 339 |
| Now Let Us Get Complicated! | p. 340 |
| Encoding INTEGERs--Preparatory Discussion | p. 342 |
| Effective Size and Alphabet Constraints | p. 344 |
| Statement of the Problem | p. 344 |
| Effective Size Constraint | p. 345 |
| Effective Alphabet Constraint | p. 345 |
| Canonical Order of Tags | p. 346 |
| Encoding an Unbounded Count | p. 347 |
| The Three Forms of Length Encoding | p. 347 |
| Encoding "Normally Small" Values | p. 349 |
| Comments on Encodings of Unbounded Counts | p. 350 |
| Encoding the OPTIONAL Bit-Map and the CHOICE Index | p. 351 |
| The OPTIONAL Bit-Map | p. 351 |
| The CHOICE Index | p. 352 |
| Encoding NULL and BOOLEAN Values | p. 353 |
| Encoding INTEGER Values | p. 353 |
| Unconstrained Integer Types | p. 353 |
| Semiconstrained Integer Types | p. 354 |
| Constrained Integer Types | p. 354 |
| And if the Constraint on the Integer Is Extensible? | p. 357 |
| Encoding ENUMERATED Values | p. 358 |
| Encoding Length Determinants of Strings, etc. | p. 359 |
| Encoding Character String Values | p. 361 |
| Bits per Character | p. 361 |
| Padding Bits | p. 364 |
| Extensible Character String Types | p. 364 |
| Encoding SEQUENCE and SET Values | p. 365 |
| Encoding DEFAULT Values | p. 366 |
| Encoding Extension Additions | p. 366 |
| Encoding CHOICE Values | p. 369 |
| Encoding SEQUENCE OF and SET OF Values | p. 370 |
| Encoding REAL and OBJECT IDENTIFIER Values | p. 370 |
| Encoding an Open Type | p. 371 |
| Encoding of the Remaining Types | p. 372 |
| Conclusion | p. 373 |
| Other ASN.1-Related Encoding Rules | p. 375 |
| Why Do People Suggest New Encoding Rules? | p. 376 |
| LWER--Light-Weight Encoding Rules | p. 377 |
| The LWER Approach | p. 377 |
| The Way to Proceed Was Agreed | p. 378 |
| Problems, Problems, Problems | p. 378 |
| The Demise of LWER | p. 380 |
| MBER--Minimum Bit Encoding Rules | p. 381 |
| OER--Octet Encoding Rules | p. 381 |
| Extended Mark-up Language (XML) Encoding Rules (XER) | p. 383 |
| Building Automation Committee Network (BACnet) Encoding Rules (BACnetER) | p. 383 |
| Encoding Control Specifications | p. 384 |
| History and Applications | p. 385 |
| The Development of ASN.1 | p. 387 |
| People | p. 388 |
| Going Round in Circles? | p. 389 |
| Who Produces Standards? | p. 391 |
| The Numbers Game | p. 393 |
| The Early Years--X.409 and All That | p. 394 |
| Drafts Are Exchanged and the Name ASN.1 Is Assigned | p. 394 |
| Splitting BER from the Notation | p. 395 |
| When Are Changes Technical Changes? | p. 396 |
| The Near-Demise of ASN.1--OPERATION and ERROR | p. 397 |
| Organization and Reorganization! | p. 399 |
| The Tool Vendors | p. 400 |
| Object Identifiers | p. 401 |
| Long or Short, Human or Computer Friendly, That Is the Question | p. 401 |
| Where Should the Object Identifier Tree be Defined? | p. 403 |
| The Battle for Top-Level Arcs and the Introduction of RELATIVE-OIDs | p. 404 |
| The REAL Type | p. 405 |
| Character String Types: Let's Try to Keep it Short! | p. 406 |
| From the Beginning to ASCII | p. 406 |
| The Emergence of the International Register of Character Sets | p. 407 |
| The Development Of ISO 8859 | p. 409 |
| The Emergence of ISO 10646 and Unicode | p. 409 |
| And the Impact of All this on ASN.1? | p. 413 |
| ANY, Macros, and Information Objects--Hard to Keep That Short (Even the Heading Has Gone to Two Lines)! | p. 416 |
| The ASN.1 (1990) Controversy | p. 419 |
| The Emergence of PER | p. 420 |
| The First Attempt--PER-2 | p. 420 |
| The Second Attempt--PER-1 | p. 424 |
| And Eventually We Get Real-Per | p. 424 |
| DER and CER | p. 425 |
| Semantic Models and All That--ASN.1 in the Late 1990s | p. 427 |
| What Got Away? | p. 428 |
| Applications of ASN.1 | p. 430 |
| Introduction | p. 430 |
| The Origins in X.400 | p. 432 |
| The Move into Open Systems Interconnection (OSI) and ISO | p. 433 |
| Use within the Protocol Testing Community | p. 434 |
| Use within the Integrated Services Digital Network (ISDN) | p. 435 |
| Use in ITU-T and Multimedia Standards | p. 435 |
| Use in European and American Standardization Groups | p. 436 |
| Use for Managing Computer-Controlled Systems | p. 438 |
| Use in PKCS and PKIX and SET and Other Security-Related Protocols | p. 439 |
| Use in Other Internet Specifications | p. 441 |
| Use in Major Corporate Enterprises and Agencies | p. 441 |
| Conclusion | p. 442 |
| Appendices | p. 443 |
| The Wineco Protocol Scenario | p. 445 |
| The Full Protocol for Wineco | p. 447 |
| Compiler Output for C Support for the Wineco Protocol | p. 451 |
| Compiler Output for Java Support for the Wineco Protocol | p. 453 |
| ASN.1 Resources via the Web | p. 465 |
| Index | p. 467 |
| Table of Contents provided by Syndetics. All Rights Reserved. |
ISBN: 9780122334351
ISBN-10: 0122334353
Published: 1st October 1999
Format: Paperback
Language: English
Number of Pages: 504
Audience: General Adult
Publisher: BUTTERWORTH-HEINEMANN
Country of Publication: US
Dimensions (cm): 24.13 x 19.68 x 3.18
Weight (kg): 0.9
Shipping
| Standard Shipping | Express Shipping | |
|---|---|---|
| Metro postcodes: | $9.99 | $14.95 |
| Regional postcodes: | $9.99 | $14.95 |
| Rural postcodes: | $9.99 | $14.95 |
Orders over $79.00 qualify for free shipping.
How to return your order
At Booktopia, we offer hassle-free returns in accordance with our returns policy. If you wish to return an item, please get in touch with Booktopia Customer Care.
Additional postage charges may be applicable.
Defective items
If there is a problem with any of the items received for your order then the Booktopia Customer Care team is ready to assist you.
For more info please visit our Help Centre.
You Can Find This Book In

Apache Iceberg: The Definitive Guide
Data Lakehouse Functionality, Performance, and Scalability on the Data Lake
Paperback
RRP $133.00
$64.75
OFF























