핵심 인사이트 (3줄 요약)
- 본질: 캡슐화(Encapsulation)는 데이터가 상위 계층에서 하위 계층으로 내려갈 때, 각 계층이 자신의 임무 수행을 위해 필요한 '제어 정보(헤더)'를 포장지처럼 덧붙여서 다음 계층으로 넘겨주는 러시아 마트료시카 인형 같은 데이터 포장 기술이다.
- MTU (Maximum Transmission Unit): 캡슐화되어 내려온 3계층 IP 패킷이, 2계층(예: 이더넷)의 프레임이라는 박스 안에 들어갈 수 있는 '알맹이(Payload)의 최대 허용 크기'를 뜻하며, 이더넷의 MTU는 전 세계 표준으로 1500바이트다.
- 크기 초과 시: 상위 계층에서 내려온 캡슐(IP 패킷)이 하위 계층의 MTU 상자(1500바이트)보다 크면, 하위 계층은 상자를 닫을 수 없으므로 3계층에게 "야! 패킷 찢어와!(단편화)"라고 요구하게 된다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념:
- 캡슐화: OSI 7계층에서 데이터가 내려올 때마다 헤더(Header)가 덧붙여지는 과정. (반대로 수신자가 껍질을 벗기는 과정은 역캡슐화, Decapsulation이라 함).
- MTU: 특정 데이터 링크 계층(L2) 프로토콜이 한 번에 운반할 수 있는 3계층(L3) 데이터 패킷의 최대 크기.
-
필요성: 우체국에서 편지를 보낼 때 편지 내용물(데이터)만 덜렁 주면 배달을 못 한다. 편지봉투(TCP 헤더)에 넣고, 그걸 다시 택배 상자(IP 헤더)에 넣고, 마지막으로 화물 컨테이너(이더넷 프레임)에 실어야 배달 체계가 돌아간다. 이때, 마지막 화물 컨테이너가 실을 수 있는 최대 무게 제한(MTU)이 없으면, 너무 큰 짐 하나 때문에 컨베이어 벨트가 고장 나거나 다른 짐들이 배송 지연을 겪으므로 반드시 크기 제한을 두어야 한다.
-
💡 비유:
- 캡슐화: 러시아 전통 인형 **'마트료시카'**입니다. 가장 작은 인형(데이터)을 중간 인형(TCP)에 넣고, 그걸 다시 큰 인형(IP)에 넣는 식입니다.
- MTU: 마트료시카를 담아 나르는 **'택배 박스의 규격 제한(1500g)'**입니다. 마트료시카 전체 무게가 1500g을 넘어가면 택배 회사에서 접수를 거부합니다.
📢 섹션 요약 비유: 네트워크 캡슐화는 회장님(응용 계층)의 편지를 비서(TCP)가 서류 봉투에 넣고, 우체국(IP)이 택배 상자에 포장한 뒤, 화물차(이더넷)에 싣는 과정입니다. 이때 화물차가 실을 수 있는 "최대 상자 크기(MTU)"가 이더넷 화물차의 경우 1500 사이즈로 법제화되어 있습니다.
Ⅱ. 캡슐화 과정과 1500바이트의 제약 (Deep Dive)
1. 계층별 캡슐화와 오버헤드(Overhead)의 누적
사용자가 1460바이트짜리 텍스트 파일(Data)을 보낸다고 가정하자.
- 4계층 (Transport): TCP가 전송 속도와 순서를 적은 20바이트 TCP 헤더를 붙인다. (총 1480바이트가 됨. 이를 세그먼트라 부름).
- 3계층 (Network): IP가 목적지 컴퓨터 주소를 적은 20바이트 IPv4 헤더를 붙인다. (총 1500바이트가 됨. 이를 패킷이라 부름).
- 2계층 (Data Link): 이더넷이 목적지 MAC 주소를 적은 14바이트 헤더와 **4바이트 FCS(꼬리표)**를 앞뒤로 붙인다. (최종 1518바이트짜리 이더넷 프레임이 완성되어 랜선을 타고 전송됨).
2. 이더넷 MTU 1500바이트의 의미
위 과정에서 2계층인 이더넷 입장에서 볼 때, 14바이트 헤더와 4바이트 FCS 사이에 끼워 넣는 **알맹이(IP 패킷 전체)**의 크기가 바로 MTU다.
- 1980년대 이더넷 표준을 만들 때, "프레임이 너무 크면 한 놈이 회선을 독점해서 남들이 통신을 못 하니까, 알맹이(MTU) 크기를 1500바이트로 엄격히 제한하자"라고 약속했다.
- 만약 3계층에서 2000바이트짜리 IP 패킷이 내려오면, 이더넷 랜카드는 "내 뱃속(MTU 1500)에 안 들어가! 도로 가져가!"라며 뱉어낸다. 결국 IP 계층이 자기가 만든 패킷을 1500 크기에 맞게 여러 개로 칼질(단편화)해야만 한다.
┌─────────────────────────────────────────────────────────────┐
│ 캡슐화와 MTU (Maximum Transmission Unit) │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ App (L7) ] [ Data (1460 Bytes) ] │
│ │ │
│ [ TCP (L4) ] [ TCP 헤더(20) ][ Data (1460) ] │
│ │ │
│ ┌───────────────── 알맹이 (MTU 1500 제한) ─────┐│
│ [ IP (L3) ] │ [ IP 헤더(20) ][ TCP 헤더(20) ][ Data ] ││
│ └───────────────────────────────────────────┘│
│ │ │
│ [ MAC (L2) ] [ MAC 헤더(14) ][ 1500 Bytes 알맹이 ][ FCS(4) ] │
│ │
│ * 전체 이더넷 프레임 크기: 1518 Bytes │
│ * L2 입장에서 본 순수 알맹이(L3 패킷)의 한계 크기: MTU 1500 Bytes │
└─────────────────────────────────────────────────────────────┘
3. MSS (Maximum Segment Size)
개발자들은 네트워크를 튜닝할 때 MTU보다 MSS라는 단어를 더 자주 쓴다. MTU 1500에서 IP 헤더(20)와 TCP 헤더(20)를 빼면 1460바이트가 남는다. 이것이 순수한 내 프로그램 데이터(Data)가 단편화 없이 한 번에 전송될 수 있는 최대 크기이며, 이를 **MSS(1460)**라고 부른다.
📢 섹션 요약 비유: 내 몸집(순수 데이터)이 1460g일 때, 겨울옷(TCP 헤더 20g)과 패딩(IP 헤더 20g)을 껴입어 총 1500g이 되면, 이더넷이라는 **"무게 제한 1500g짜리 소형 엘리베이터(MTU)"**에 딱 맞춰 탈 수 있습니다. 만약 밥을 더 먹어 1501g이 되면 얄짤없이 짐을 찢어서 두 번에 나눠 타야 합니다.