Encapsulation and Decapsulation

1 minute read

Encapsulation and Decapsulation

네트워크 계층에서 상위 계층에서 하위 계층으로 데이터를 보내면 최종적으로 피지컬 계층에서 전기 신호로 변환해 네트워크를 통해 데이터를 보냅니다. 이렇게 데이터를 보내기 위해 데이터 플로 계층들에서 하위 계층으로 내려보내며 패킷에 데이터를 넣을 수 있게 분할하는 과정을 인캡슐레이션, 데이터를 전송 받기 위해 네트워크를 통해 받은 전기 신호를 상위 계층으로 올려보내 해석하는 과정을 디캡슐레이션이라고 합니다.

인캡슐레이션 과정에서 4계층에서 2계층까지 각각 자기와 동일한 계층에서 패킷을 받는 입장에서 필요한 데이터들을 헤더로 추가합니다. 그리고 2계층에서 헤더를 마지막으로 추가하고 전기신호로변환해 수신자에게 보냅니다.

디캡슐레이션 과정에서 수신자는 받은 전기 신호를 데이터 형태로 만들어서 2계층으로 올려 보내고 2계층에서는 송신자가 작성한 헤더를 확인하고 만약 자기가 목적지가 아니면 패킷을 버립니다. 이 과정은 랜카드 장비가 핸들링합니다. 만약 자신이 목적지가 아니면 패킷에서 2계층의 헤더에 해당하는 부분을 제외하고 나머지를 3계층으로 올려줍니다. 3계층도 2계층에서 한 작업과 마찬가지로 데이터를 확인하고 자기에게 온 것이 맞으면 3계층 헤더 정보를 삭제한 후 4계층으로 보냅니다. 4계층도 같은 과정을 거쳐 애플리케이션 레이어에 데이터를 전달하면 됩니다.

이러한 과정에서 각 계층의 정보를 확인할 수 있는 헤더는 두가지를 반드시 포함합니다.

  1. 현재 계층에서 정의하는 정보
  2. 상위 프로토콜 지시자

이렇게 두개를 꼭 포함합니다.

현재 계층에서 정의하는 정보는 OSI 7 계층에서 각 계층에서 추구하는 목적에 맞는 정보들을 의미합니다.1~4 계층에 해당하는 데이터 플로 계층에서는 데이터를 잘 보내기 위해 데이터를 잘 분할, 재조립 할 수 있게 헤더 정보를 추가합니다.

4계층에서 TCP프로토콜이 적용되었다면 TCP 프로토콜에 맞는 시퀸스, ack 번호를 헤더로 추가해줍니다. 3계층 헤더에서면 3계층에서 해당하는 출발지, 목적지 IP를 헤더에 적습니다. 2계층 해당에서는 출발지, 목적지의 MAC 주소를 헤더에 적어 넣습니다.

두번째로 헤더에 들어가는 상위 프로토콜 지시자는 프로토콜이 상위 계층으로 갈 수록 여러가지로 분화하기 때문에 상위 계층의 프로토콜이 무엇인지 파악해서 해당 프로토콜에 맞게 데이터를 해석할 수 있게 해줘야합니다. 그래서 3계층이면 4계층에서 패킷이 어떤 프로토콜로 해석되어야 하는지, 2계층이면 3계층에서 어떤 프로토콜로 해석되는지 나타내줍니다. 이런 정보를 헤더에 넣어서 데이터 디캡슐레이션을 수월하게 해줍니다.

여기서 알아야 할 점은 4계층의 포트 번호를 헤더에 포함하고 있는데 이는 애플리케이션 계층에서 프로토콜의 종류를 나타내는 정보입니다.

이러한 인캡슐레이션/디캡슐레이션 구조는 다음과 같습니다.

스크린샷 2021-07-12 오후 1 25 58

현대 네트워크는 패킷을 기반으로 이루어져있습니다. 패킷 네트워크는 데이터를 패킷단위로 쪼개어 보내는데 이러한 기법을 통해 한 통신이 회선 전체를 점유하지 않고 동시에 여러 단말기들이 통신할 수 있게 해줍니다. 이렇게 패킷으로 전송된 데이터는 받는 컴퓨터에서 다시 큰 데이터 형태로 결합해 사용합니다.



출처: IT엔지니어를 위한 네트워크 입문

Leave a comment