본문 바로가기

삽질 삽질 스마트 워크 구축

[ASN.1] 그간 공부 내용 정리1 / ASN.1 개요

요새 삼실에서 홀로 공부하고 있는 내용이 있어,

빠른 망각주기를 갖고 있는 나에게 있어 정리가 필요하여, 개인 블로그에 옮긴다.

 

ASN.1이 탄생한 배경

- 각기 다른 시스템마다 데이터를 표기하는 방법이 다를 수 있기 때문에 다른 시스템과의 통신과정에서의 생길 수 있는 데이터의 오류를 생기지 않도록 하기 위해 탄생된 프로토콜(규약)이다.

- 각 시스템마다 메모리에 저장하는 방식과 값이 다르다는 것을 먼저 알고 있어야 함

 

EX) 10진수 100을 100(Dec/10진수) 에서는 100으로 표현이 되지만, 16진수(Hex)에서는 0x64로 표기한다.

이 녀석을 빅 엔디언으로 표현하는 프로세서를 만날 경우 (Big Endian - 큰 비트부터 먼저 표기하는 방식)

16진수 0x64를 32비트를 처리하는 빅 엔디언(Big Endian) 프로세서에서는 (0x64 0x00 0x00 0x00)로 표기 되지만,

16진수 0x64를 32비트로 처리하는 리틀 엔디언(Little Endian) 프로세서에서는 (0x00 0x00 0x00 0x064)로 표기된다.

 

리틀 엔디언(Little Endian)은 주로 x86 시스템(Windows)쪽에서 처리하는 방식이고,

빅 엔디언(Big Endian)은 주로 Risc 시스템(상용 Unix)쪽에서 처리하는 방식이다. 

 

둘이 안만나면 얼마나 좋을까... 하지만 시스템간의 통신은 당연한 일이고,

데이터 처리를 다르게 하는 이 두 녀석간에도 통신은 필요하다.

그리고, 시간이 갈 수록 시스템의 종류가 다양화 되었기에, 데이터 표현방법을 동일하게 표현할 수 있는 방법을 찾아야했다.

 

그래서 만들어진 것이 ASN.1(Abstract Syntax Notation.1)이다.

 

만들어진 이유는

- 다른 기종간의 추상화된 메시지를 교환하기 위해 만들어짐

- 데이터 구성을 표현하는 문법을 제공하기 위해 만들어졌다.

 

 

ASN.1이 주로 쓰이는 곳은 인터넷 뱅킹등에서 쓰는 인증서이다.

 

일단 여까지  개념 정리! 및 개요