미유키의 심심풀이 글적기판~

Posted
Filed under 잡담/컴퓨터 이야기

강좌라고 해야 되나;;; 그냥 공부한것을 끄적인다고 해야 되는지...
분류가 딱하고 생각이 안나네요-_-;;

하여간 요 몇일동안 ASN.1 이란 것에 대해 공부중인데,
이놈이 네트워크끼리의 통신에 주로 쓰이는 놈이랍니다....
일단 이놈이 만들어진 이유는 서로 다른 시스템끼리의 통신을 위해서!
라고, 하는,,, 여러 프로토콜들이 이야기하는 그 이유 때문이랍니다^^;;;
(이기종 모시기모시기;;)
네트워크 전송용으로 만들어진것이다 보니 가능한 내용을 축약해 버리는 잔인한 방법을 쓰죠....

그나저나 네트워크 전송용은 속도는 생각하지 않는건지,,,,
보통 비트 단위로 쉬프트 하면서 데이터를 끄집어 내면;;; 컴퓨터에서는 속도가 그지가 되죠--;

뭐, 하여간 다시 돌아가서
내용을 축약하는게.... 압축을 하거나 그런게 아니라
(뭐 다른 방향에서 본다면 압축이라고 볼 수도 있을듯;;)
필요 없는 비트를 없애고 비트를 채워 넣는 방식으로
데이터를 만들어 줍니다.

여러가지 인코딩 방식이 있는것 같은데 일반적인 네트워크는 BER 방식이란 방식으로
되어 있나 봅니다..

그런데 제가 일하는 곳의 시스템은 PER이라는 좀더 특이한(?) 방식으로 되어 있는지라-_-;
공부하기가 빡세네요....

뭐 일단 몇몇 가지 예를 들면서 설명해 보자면....
기본적인 ASCII 코드 같은 경우는 7비트로 처리해 버립니다...
물론 한바이트에 7비트씩 데이터가 들어가 있다면 헥사 코드로 보면 딱 보이겠죠...
예를 들어 1부터 5까지를 ASCII로 보면
0x31,0x32,0x33,0x34,0x35 식으로 되어 있습니다..
그런데 이놈의 PER 인코딩을 하게 되면
각각의 8비트의 1비트를 줄인 7비트로 비트들을 매꾸게 됩니다...
0x31 = 바이너리로 00110001 이고
0x32 = 바이너리로 00110010 이고
0x33 = 바이너리로 00110011 일텐데..
이걸 합쳐 버리면 맨~ 앞에 0을 하나씩 날려 버립니다.


0x31 = 0110001 로
0x32 = 0110010 로
0x33 = 0110011 로 바뀝니다..
요걸 그 다음에 합치면

011000101100100110011 요런식이 되겠죠?
요걸 다시 헥사로 바꿔 보면
0x62,0xC9 요런 식으로 바뀝니다.

즉 그냥 봤을때 0x31,0x32 식으로 보이던놈이
0x62,0xC9 식으로 변해 버려서,, 그냥 보면 절대 안보입니다....
(스팩 보기 전에 헥사코드를 봤는데 원본과 결과본을 딱 봐서
어떻게 저게 나오는지 한참 고민 했습니다-_-;;)

나름 암호 같은거 푸는거 잘한다고 생각했는데 완전 당했다지요 ㅎㅎㅎ

하여간 전체적인 인코딩 방식이 저렇고 맨~ 앞에 붙는
Lenth도 저런 방식으로 되어 있습니다-_-;;;

범위가....
2개라면 1비트
3-4라면 2비트
5-8이라면 3비트
9-16이라면 4비트.....
이런식으로 사용 합니다.....

이런식의 룰로 데이터의 인코딩이 진행 되다 보니
어떤식의 Lenth던가,, 기본적인 데이터 스팩을 모르면
중간에 가로채면 알기 힘든 자동적인 암호화까지 되어 버립니다-_-;;;;

뭐,,;; 말을 이상하게 길게 늘려서 써 봤는데
하여간;;;; 통신 프로토콜쪽 처음 보는 분들은 약간의 도움이 되었으면 해서
전체적인 내용도 아니고, 아~~주 아주 최고로 기초적인 부분만 써 봤습니다....

나중에 좀더 공부해서 더 많은 걸 알게 되면 조금씩 내용을 늘려 볼까~ 도 한번 생각해
봅니다^^ 그럼~~

P.S 지금 시각 새벽 4시네요-_-;; 아직도 회사에서 열.심.히(?) 일하고 있어요^^;;;;

2009/07/17 03:59 2009/07/17 03:59

미유키의 심심풀이 글적기판~