Encapsulation & Decapsulation

2022. 4. 14. 13:55Network

공부한것을 기록하는 목적으로 작성된 것이니

기본적인 내용이라 이미 아시는 분들은 패스하시거나 참고하시면 감사하겠습니다


 

○Encapsulation

 

우리는 네트워크 통신을 하면서 데이터를 전달을 한다. 이 데이터를 블록단위로 구분지어 패킷이라고 통칭을 함.

패킷은 간단하게 헤더|페이로드|풋터 형태로 되어있는데 이 헤더를 데이터 앞쪽에 붙여나가는 것을 캡슐화라고 생각할수있다. osi7나 tcp/ip모델에 대해서는 너무 유명해서 잘알고 계실거라고 생각한다. 데이터 패킷을 전송하는 동안에 osi7 각 계층을 거치면서 각 계층마다 정보를 추가한다. 위 그림처럼 데이터 패킷을 보내면 최상위 7계층부터 최하위1계층까지 상위레벨에서 하위레벨로 순차적으로 거치게된다. 그리고 모두가 아시다 싶이 데이터를 보낼때 7계층에서 갑자기 5계층으로 가는건 불가능하고 해당계층직전의 이전, 이후계층의 전달이 가능하다.

즉 데이터를 보낼때 데이터패킷의 Encapsulation 과정은 상위레벨 -> 하위레벨 순이다.

 

만약에 우리가 구글에서 특정뉴스를 보기 위해 데이터패킷을 전달하는 과정을 예를 들어보면은

먼저 자신이 원하는 뉴스데이터가 있을것이다.

-> |data| 

뉴스데이터를 불러오기 위해선 먼저 구글웹서버랑 통신을 해야되기때문에 data 앞에 tcp를 Encapsulation 시켜준다.

-> |tcp|data| (tcp=헤더, data=페이로드)

tcp와 data 패킷을 페이로드로 지정하여 데이터를 멀리보내기 위해 ipv4를 헤더로 추가시켜 Encapsulation 시켜준다.

-> |ipv4|tcp|data| (ipv4=헤더, tcp,data=페이로드)

그리고 마지막으로 가까운곳에 통신을 하기위해 ethernet을 헤더로 추가시켜 Encapsulation 시켜준다.

-> |ethernet|ipv4|tcp|data| (ethernet=헤더, ipv4,tcp,data=페이로드)

 

최종적으로는 |ethernet|ipv4|tcp|data| 패킷형태로 데이터를 보내게 되어 위 과정을 Encapsulation이라고 한다.

 

○Decapsulation

 

Encapsulation이 데이터를 보내기위해 프로토콜 정보를 추가해가면서 진행이 되었다면

반대로 Decapsulation  데이터를 수신하기위해 프로토콜 정보를 제거하면서 데이터를 확인하는 과정이다.

하위레벨부터 상위레벨순으로 각각의 계층에서 해당 헤더의 프로토콜을 확인한다.

위에서 예를 든것처럼 구글입장에서 우리가 보낸 데이터를 받을때

|ethernet|ipv4|tcp|data| (ethernet=헤더, ipv4,tcp,data=페이로드) 에서 먼저 2계층의 ethernet 프로토콜을 확인

->|ipv4|tcp|data| (ipv4=헤더, tcp,data=페이로드) 에서 3계층의 ipv4 프로토콜 확인

->|tcp|data| (tcp=헤더, data=페이로드) 에서 마찬가지로 4계층의 tcp 프로토콜 확인

-> 최종 data을 얻게 된다.

 

즉 데이터를 받을때 데이터 패킷의 Decapsulation의 과정은 상위레벨 -> 하위레벨 순이다.

'Network' 카테고리의 다른 글

Ethernet header  (0) 2022.04.18
ARP header  (0) 2022.04.16
ICMP Header  (0) 2022.04.11
DNS  (0) 2022.04.08
Udp header  (0) 2022.04.06