본문으로 바로가기

encapsulation, decapsulation의 간단한 이해

OSI 7 계층을 생각해봅시다.

- 보내는 입장에서는 애플리케이션 계층에서 데이터를 쏘고, 물리적 계층을 지나 다른 기기로 신호를 전송합니다.

- 받는 입장에서는 물리적 계층을 지나 애플리케이션 계층에서 정보를 받아봅니다.

 

보내는 부분은 데이터 => 전기 신호를 '인캡슐레이션'

받는 부분은 전기 신호 => 데이터를 '디캡슐레이션'

 

조금 더 자세히 알아봅시다.

 

[인캡슐레이션]

어플리케이션에서 데이터를 보내려고 합니다.

네트워크 상황을 고려하여 적절한 데이터를 쪼개고 4계층, 3계층, 2계층으로 내려가면서 각각 헤더를 붙입니다.

=> 네트워크 상황을 고려하여 데이터를 쪼개는 방법은 후술하겠습니다.

 

[디캡슐레이션]

물리적 계층을 통해 받은 전기 신호에서 시작합니다.

2계층에서 헤더를 해석하여 NIC의 MAC 주소와 일치하지 않으면 패킷을 버리고 아니면 올려보냅니다. 이 과정에서 2계층에서 붙은 헤더는 이미 점검하는데 사용했으므로 쓸모 없어졌으니 2계층 헤더를 제거합니다.

3계층에서는 IP 주소를 보고 자신에게 온 것이 맞는지 확인합니다.

 

TCP/IP 에서도 마찬가지로 같은 과정을 거칩니다. 아래와 같이 표현될 수 있습니다.

 

http://networkstatic.net/how-headers-encapsulate-in-the-osi-stack/

 

 

그렇다면 2, 3, 4 계층에서 붙는 헤더들은 무엇이 있는가?

encapsulation 과정에서 붙는 헤더는 너무 많아서 다 알기 힘듭니다.

프로토콜마다 붙는 헤더의 정보가 다르기도 합니다. 그러나 이러한 정보 중 반드시 다음 두 정보는 붙어야 합니다.

 

1. 현재 계층에서 정의하는 정보

2. 상위 프로토콜 지시자

 

이게 무슨 말이냐?

현재 계층에서 정의하는 정보는 다음과 같습니다.

 

4계층, 트랜스포트 계층 : seq, ack를 넣어서 패킷의 순서를 넣습니다.

3계층, 네트워크 계층 : 출발지, 도착지 ip 주소를 넣습니다.

2계층, 데이터 링크 계층 : 출발지, 도착지 MAC 주소를 넣습니다.

 

그렇다면 '상위 프로토콜 지시자'는 또 무엇인가?

3계층의 ip는 4계층에서 tcp, udp로 나뉘고, 더 상위로 올라가면 ftp, http, pop3 등 더 다양한 프로토콜로 나뉩니다.

따라서, 디캡슐레이션하는 과정에서 상위 프로토콜이 무엇인지 알아야 적절한 프로토콜로 올릴 수 있게 됩니다.

 

'상위 프로토콜 지시자'는 각 계층마다 부르는 용어가 다른데

4계층은 포트 번호, 3계층은 프로토콜 번호, 2계층은 이더 타입이라고 부릅니다.

 

 

네트워크 상황에 데이터를 적절하게 쪼개는 방식은 무엇인가?

네트워크에서 수용할 수 있는 크기를 산정하여 적절한 크기로 쪼개질 수 있도록 유도하는데 이 값을 MSS라 합니다

Maximum Segment Size의 약자입니다.

 

네트워크에 한 번에 보낼 수 있는 데이터의 크기를 MTU(Maximum Transmission Unit)이라고 부릅니다.

일반적인 이더넷에서 수용할 수 있는 크기는 1500 바이트입니다.

 

MTU는 2계층 데이터 값, MSS는 4계층에서 가질 수 있는 최대 데이터 값입니다.


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체