2011년 3월 25일 금요일

패킷을 보다 자주 접하는 캡슐화(Encapsulation)는 무엇이지?

네트워크 패킷 분석을 하다가 또는 도구를 사용하다 보면, 그 과정에서 인캡슐레이션(Encapsulation) 이라는 용어를 자주 보게 된다. 그런데, 이 인캡슐레이션 이라는 것은 무엇인가? 말은 많이 들어본것 같은데, 딱히 개념이 잘 서지 않는다면 지금 이 글을 집중하시면 된다.

일단, Encapsulation 은 영어 단어이므로 사전적 의미부터 한번 살펴보자. '명사' 로 의학과 관련된 피포, 피막형성이라는 뜻을 가지고 있다. 아니, 이런 단어가 왜 IT 에서 많이 사용되는 것과 밀접한 연관이 있는 것일까.
컴퓨터 관점에서 보면 이 것은 흔히 '캡슐화' 라고 불린다. 통신 상에서 상위계층의 툥신규약 정보를 하위 통신 규약 프레임 사용자 정보영역에 내장시켜 전송하는 기술이라고 네이버 용어사전에 정의되어 있다.

자바에서도 캡슐화라는 것이 이용되는데 클래스나,멤버에 private, public 같은 키워드를 이용해서 접근 제어를 사용하는데 바로 이것을 객체지향개념의 캡슐화 라고 볼수 있다. 자바에서 이렇게 사용하는 이유는 클래스의 내부에 선언된 데이터를 보호하기 위함이다.

다시 TCP/IP 네트워크 관점으로 돌아와 간단하게 생각해 보면 encapsulation 은 이렇다. TCP/IP 의 하위 레이어의 프로토콜 정보에 상위 레이어 데이터,헤더 정보를 캡슐화 하는 것이다. 이 캡슐화 라는 것을 Wrap 한다고 보면 된다. 우리가 음식물을 보관하기 위해 랩을 해서 싸는 것과 같이 말이다.
이렇게 캡슐화된 정보는 네트워크 디바이스를 통해 전송되고, 도착지에서는 캡슐화와 반대로 이 랩을 풀어내는 Decapsulation 을 수행한다. 이런 작업을 통해서 이기종 장비간에도 상호 표준 프로토콜 규약을 지키면서 데이터 통신을 할 수 있는 것이다. 이 작업들이 OSI 7 Layer 를 이해하면 더욱 이해가 쉬어진다. 자세한 OSI 7 Layer 는 추후에 설명하기로 하고, 아래 그림을 살펴보자

[출처] home-network-help.com

컴퓨터 A 에서 -> 컴퓨터 B 로 데이터를 전송하기 위해서는 일단 상위계층인 Application 레이어 (프로그램) 에서 Transport 레이어 단으로 내려간다. 하위 레이어로 전송하기 위해서는 다시 TCP 헤더와 데이터 정보를 캡슐화하여 내려 보내고 IP 레이어 단에서는 다시 IP 헤더 정보를 추가하여 하위 레이어로 다시 내려보낸다. 즉, 내려가면서 각 필요한 헤더가 붙으면서 캡슐화가 이뤄지는 것이다. 반대로 컴퓨터 B 가 이 데이터를 받으면, 상위 레이어로 올라갈때마다 캡슐화된 헤더 정보등을 제거하면서 전달되는 것이다. 이렇게 하여 최종 적인 정보 전달이 완료되는 것이다. 

이런 캡슐화는 네트워크 관점에서 보면 많이 이용되고 있는데, IPv6 의 터널링 에서도 IPv4 망에서 IPv6 를 이용할 수 있도록 해당 데이터를 통신 과정에 맞게 캡슐화한다. 또는 ATM 프레임 망에서 TCP/IP 형태의 데이터를 통신할 수 있도록 TCP/IP 패킷을 ATM 프레임 구조에 맞게 캡슐화한다. 데이터 구조가 다르더라도 이런 캡슐화를 통해 이기종 네트워크 기기 간에 통신 구현이 가능한 것이다.

알고보면 어렵지 않은 것이 이 캡슐화며, 또 우리의 네트워크를 더 윤택하게 해주고 있는 것이기도 하다. 

From Rigel
:-)

댓글 1개: