DateX-ASN.1 개념 정리
1. ASN.1
Abstract Syntax Notation #1의 약자. 국제전기통신 연합(ITU : International Telecommunication Union)에서 정한 통신 데이터 형식 표준.
2. 관련 문서
* X.680~X.699 : ASN.1의 문법을 정의한 표준 문서.
X.680 – Basic Notation
X.681 – Information Objects
X.682 – General Constraint Notation
X.683 – Parameterization
X.690 – Basic (BER), Cannoical(CER), and Distinguished (DER) Encoding Rules
X.691 – Packed Encoding Rules (PER)
3. ASN.1 문법
- X680 문서에 기본 문법 참조.
ModuleDefinition ::=
ModuleIdentifier
DEFINITIONS
TagDefault
ExtensionDefault
"::="
BEGIN
ModuleBody
END
ModuleIdentifier ::=
modulereference
DefinitiveIdentifier
DefinitiveIdentifier ::=
"{" DefinitiveObjIdComponentList "}"
| empty
DefinitiveObjIdComponentList ::=
DefinitiveObjIdComponent
| DefinitiveObjIdComponent DefinitiveObjIdComponentList
...(중략)...
AssignmentList ::=
Assignment
| AssignmentList Assignment
Assignment ::=
TypeAssignment
| ValueAssignment
| XMLValueAssignment
| ValueSetTypeAssignment
| ObjectClassAssignment
| ObjectAssignment
| ObjectSetAssignment
| ParameterizedAssignment
각 모듈에서 사용할 수 있는 문법 중 다음 항목을 설명한다.
* Type Assignment : 변수의 타입을 설정.
InventoryList {1 2 0 0 6 1} DEFINITIONS ::= BEGIN
{
ItemId ::= SEQUENCE
{
partnumber IA5String,
quantity INTEGER,
wholesaleprice REAL,
saleprice REAL
}
StoreLocation ::= ENUMERATED
{
Baltimore (0),
Philadelphia (1),
Washington (2)
}
} END
* Value Assignment : 변수값을 설정
gadget ItemId ::=
{
partnumber "7685B2",
quantity 73,
wholesaleprice 13.50,
saleprice 24.95
}
2. BER(Basic Encoding Rule)
- DateX(Date Exchange)중 한가지 방법인 BER에 대해 설명.
- Tag Length Value의 앞자를 따서 TLV라고도 함.
- X.690 문서 참조.
- Structure of an encoding
Identifier Octets |
Length Octets |
Contents octets |
End-of contents Octets(생략가능) |
- 그리고 대략 다음과 같은 구조를 가짐
Seq ::= SEQUENCE {
first INTEGER,
second INTEGER }
seqVa1 Seq ::= { 10, 20 }
Tag |
Length |
Value |
|
|
SEQUENCE |
V의 길이(구조체 전체 크기) |
Tag |
Length |
Value |
|
|
INTEGER |
V의 길이 |
10 |
|
|
INTEGER |
V의 길이 |
20 |
'IT관련 지식들' 카테고리의 다른 글
리눅스 파일 전송 명령어(scp) (0) | 2016.09.01 |
---|---|
ubuntu mount 명령어. (0) | 2016.08.18 |
gdb 디버거 사용하기. (0) | 2016.07.26 |
makefile (0) | 2016.07.25 |
gcc 컴파일러. (0) | 2016.07.25 |