ASN.1에 대한 내용을 구글에서 검색한 결과 개념에 대한 내용이 쉽게 잘 설명된 사이트가 있어서 전체의 내용을 인용한다.
출처는 하단에 기재함. - 마이크로소프트 지원센터 XGEN 파트에서 발췌함
ASN.1
ASN.1(Abstract Syntax Notation One)은 구현에 관계없이 표준을 정의하는 언어이며 표준 작성자가 사용하는 언어입니다. CalTech의 John Smith는 한 구성 요소가 다른 구성 요소와 의사 소통하는 데 필요한 절차를 표준화하는 권고안을 만들기 위해 ASN.1 표기법으로 권고안을 작성하여 ITU 같은 표준 기구에 권고안을 제출합니다. ASN.1은 표준을 설명하는 공용 언어를 제공하여 전문가와 위원회 회원 간의 의사 소통을 원활하게 합니다. ASN.1은 ITU-T 권고안 X.209 및 X.690에 정의되어 있습니다.
예를 들어, ASN.1은 다음을 정의합니다.
- "형식" 정의
- "모듈" 정의 및 표시 방법
- INTEGER 정의
- BOOLEAN 정의
- "구조체 형식" 정의
- 특정 키워드(예: BEGIN, END, IMPORT, EXPORT, EXTERNAL 등)의 의미
- 적절히 인코딩할 수 있도록 형식을 "태그"하는 방법
ASN.1은 특정 표준, 인코딩 방법, 프로그래밍 언어 또는 하드웨어 플랫폼에 관계없이 적용되며, 단순히 표준을 정의하는 언어입니다. 즉, 표준이 ASN.1로 작성됩니다.
BER
BER("버르"로 발음)는 ASN.1의 기본 인코딩 규칙(Basic Encoding Rules)을 나타내는 일반적인 이름입니다. BER는 ITU-T 권고안 X.209 및 X.690에 정의되어 있습니다. BER는 통신 링크를 통해 전송할 수 있는 옥텟의 스트림으로 ASN.1 데이터를 인코딩하는 하나의 규칙 집합입니다. ASN.1 데이터를 인코딩하는 다른 방법으로는 DER(Distinguished Encoding Rules), CER(Canonical Encoding Rules) 및 PER(Packing Encoding Rules)가 있습니다. 각 인코딩 방법마다 해당 응용 프로그램이 있지만 BER는 가장 일반적으로 사용되고 가장 일반적으로 거론되는 인코딩 방법입니다.
BER는 다음을 정의합니다.
- ASN.1 값을 인코딩하는 방법
- 특정 방법을 사용할 때를 결정하는 규칙
- 데이터에 있는 특정 옥텟의 형식
ASN.1과 BER의 비교
ASN.1은 프로그래밍 언어(예: C)와 비슷한 반면, BER는 해당 언어의 컴파일러와 비슷합니다. 컴파일러는 플랫폼마다 다르지만 대부분의 고수준 프로그래밍 언어는 플랫폼에 독립적입니다. C는 프로그램 작성 규칙과 언어를 정의합니다. 프로그램은 C가 아니며 C로 작성된 것입니다. 프로그램은 특정 플랫폼(예: Intel x86)에서 컴파일될 때까지는 유용하지 않습니다. ASN.1과 BER의 관계도 이와 비슷합니다. ASN.1은 표준을 작성하는 언어입니다. 표준은 ASN.1이 아니며 ASN.1로 작성된 것입니다. 표준으로 컴파일되는 프로그램에서 생성된 데이터는 넓은 의미에서 "ASN.1 데이터"라고 할 수 있습니다. ASN.1 데이터는 대상에서 쉽게 해독할 수 있는 옥텟의 스트림으로 인코딩될 때까지 유용하지 않습니다. 즉, LAN을 통해 전송할 수 없습니다. 다음은 이러한 개념을 설명하기 위해 ITU-T 권고안 X.209, 부록 I에서 가져온 예제입니다. 이 예제는 직원 데이터 레코드에 대한 비공식적 설명입니다.
Name: John P Smith Date of Birth: 17 July 1959 (other data)
직원 레코드에 대한 ASN.1 설명(표준)은 다음과 같을 수 있습니다.
PersonnelRecord ::= [APPLICATION 0] IMPLICIT SET { Name, title [0] VisibleString, dateOfBirth [1] Date, (other types defined) } Name ::= [APPLICATION 1] IMPLICIT SEQUENCE { givenName VisibleString, initial VisibleString, familyName VisibleString }
이 ASN.1 설명은 PersonnelRecord가 표시되는 방법을 설명합니다. 그러나 더 중요한 것은 인코딩이 이루어지기 전에 ASN.1 데이터가 되도록 응용 프로그램 데이터의 형식을 지정하는 방법을 설명합니다.
다음에 응용 프로그램은 직원 데이터를 직원 레코드 구조(ASN.1 데이터 형식)에 매핑한 다음 ASN.1 데이터에 BER(Basic Encoding Rules)를 적용합니다. 이름이 ASCII로 변환된다는 것을 제외하고 다음과 같이 표시될 수 있습니다.
Personnel Record Length Contents 60 8185 Name Length Contents 61 10 VisibleString Length Contents 1A 04 "John" VisibleString Length Contents 1A 01 "P" VisibleString Length Contents 1A 05 "Smith" DateofBirth Length Contents A0 0A Date Length Contents 43 08 "19590717"
모든 것이 표현되고 완료되면 실제로 전송되는 것, 또는 보다 엄밀하게 표현하여 다음 하위 계층에서 패킷의 데이터 부분이 되는 것은 아래와 같습니다.
60 81 85 61 10 1A 04 .... .... 0A 43 08 19 59 07 17
Microsoft - XGEN: ASN.1 및 BER에 대한 간단한 소개- http://support.microsoft.com/kb/252648/ko
Microsoft - DER Encoding of ASN.1 Types - http://msdn.microsoft.com/en-us/library/windows/desktop/bb648640(v=vs.85).aspx
ASN.1 오타와대학교 강의 자료 - http://www.site.uottawa.ca/~shervin/courses/ceg4395/lectures/Lecture06.pdf
c04_JSE_NetCentric_Summary.pdf
통신 규격 ASN.1 프로그램 제작 안내서_Ver1.0.pdf
ASN.1에 대한 강의 자료와 참고자료를 업로드 해두었다.
'삽질 삽질 스마트 워크 구축' 카테고리의 다른 글
[바이두 클라우드] 클라우드에 올라간 토렌트 자료 받기 (1) | 2013.12.25 |
---|---|
[ASN.1] ASN.1 Play Ground (0) | 2013.12.23 |
[ASN.1] 그간 공부 내용 정리1 / ASN.1 개요 (0) | 2013.12.19 |
[iPhone Apps] 프로그래밍의 기초를 배울 수 있는 - Hour of Code (0) | 2013.12.15 |
모바일 광고의 이해와 시장 (1부, 광고 마케팅의 이해와 흐름) - 심규병 대표 (0) | 2013.12.14 |