OSI 7계층 편에서 데이터가 계층을 내려가며 헤더를 덧붙이는 캡슐화와, 받는 쪽에서 하나씩 벗겨 내는 역캡슐화를 그림으로 보았습니다. 이 장에서는 실제 메시지 하나를 골라 바이트 하나하나까지 따라가 봅니다. 글자가 숫자(바이트)로 바뀌고, TCP는 정해진 크기로 자르고, UDP는 통째로 담고, IP·이더넷 헤더와 체크섬이 붙어 선 위의 비트가 되었다가, 받는 쪽에서 검사를 거치며 다시 원래 글자로 돌아오는 전 과정을 단계별로 살펴봅니다.
같은 통신망(LAN) 안의 관측실 컴퓨터(클라이언트)가 서버의 5000번 포트로 짧은 메시지를 보냅니다. 각 계층이 덧붙이는 헤더와 크기는 다음과 같습니다. TCP의 연결 설정(3-way handshake)은 OSI 7계층 편의 시뮬레이션에서 다루므로, 여기서는 연결이 이미 맺어진 뒤 데이터를 보내는 순간부터 봅니다.
| 계층 | 붙는 것 | 크기 | 이 시뮬레이션의 값 |
|---|---|---|---|
| L7 응용 | 메시지(UTF-8 바이트) | 메시지 길이 | 한글 1글자 = 3바이트, 영문·숫자 1글자 = 1바이트 |
| L4 TCP / L4 UDP | 포트·순서 번호·체크섬 | TCP 20바이트 / UDP 8바이트 | 포트 49152 → 5000 |
| L3 IP | IP 주소·길이·TTL·프로토콜 번호 | 20바이트 | 192.168.0.10 → 192.168.0.20 |
| L2 이더넷 | MAC 주소·타입 + 꼬리의 FCS | 머리 14 + 꼬리 4바이트 | 02:00:00:00:00:0a → 02:00:00:00:00:14 |
| L1 물리 | 프리앰블·프레임 간격 | 8 + 12바이트 분량 | 0과 1의 전압·빛 신호 |
👉 메시지와 프로토콜, MTU를 정한 뒤 ▶ 다음 단계를 눌러 보세요. 패킷 막대를 누르면 그 패킷의 바이트를 볼 수 있습니다!
바이트 보기
이더넷 IP TCP UDP 데이터 채움 FCS — 바이트에 마우스를 올리면 어느 필드인지 나옵니다. 주황 테두리는 이 단계에서 다루는 부분입니다.
헤더 필드
| 메시지 | 만들어진 패킷 | 선에 실린 전체 바이트 (프리앰블·간격 포함) | 전송 효율 (메시지 ÷ 전체) | 1 Gbps에서 걸리는 시간 |
|---|---|---|---|---|
헤더의 체크섬과 이더넷 FCS(CRC-32)는 실제 규격의 계산 방법으로 구한 값입니다. MAC·IP 주소, 포트, 순서 번호의 시작값(1000)은 설명용 예시이며, 실제 TCP의 순서 번호 시작값은 연결마다 무작위로 정합니다. 화면은 IPv4를 기준으로 합니다.
링크 하나가 한 번에 실을 수 있는 IP 패킷의 최대 크기를 MTU라고 합니다(보통 이더넷은 1,500바이트). TCP는 처음부터 MTU에 맞춰 MSS(= MTU − IP 헤더 20 − TCP 헤더 20) 크기로 데이터를 잘라 세그먼트마다 순서 번호를 붙입니다. 반면 UDP는 응용이 준 메시지를 자르지 않고 한 덩어리(데이터그램)로 내려보냅니다. 그것이 MTU보다 크면 IP가 대신 조각(fragment)으로 나누는데, 조각 하나만 사라져도 받는 쪽은 데이터그램 전체를 버립니다. 그래서 UDP를 쓰는 프로그램은 보통 스스로 MTU보다 작게 나눠 보냅니다.
| 비교 항목 | TCP | UDP |
|---|---|---|
| 누가 자르나 | TCP가 MSS 크기로 직접 자름 | UDP는 자르지 않음 → 크면 IP가 조각냄 |
| 조각의 표시 | 세그먼트마다 바이트 단위 순서 번호(seq) | IP 헤더의 식별자·조각 위치(8바이트 단위)·MF 플래그 |
| 다시 맞추는 곳 | 받는 쪽 TCP가 순서 번호로 재조립 | 받는 쪽 IP가 조각 위치로 재조립 |
| 하나가 사라지면 | 그 세그먼트만 다시 보냄 | 데이터그램 전체를 버림(다시 보내지 않음) |
| 받았다는 표시 | 확인 번호(ACK) = 다음에 받을 바이트 번호 | 없음 |
🧮 실제 값으로 계산해 보기 — 헤더는 얼마나 '세금'을 걷을까?
역캡슐화는 단순히 헤더를 떼는 일이 아니라, 계층마다 "이 데이터가 망가지지 않았는지, 나에게 온 것이 맞는지, 위로 누구에게 넘길지"를 확인하는 과정입니다.
| 계층 | 검사하는 것 | 틀리면 | 다음 계층을 고르는 단서 |
|---|---|---|---|
| L2 이더넷 | FCS(CRC-32)를 다시 계산해 비교, 목적지 MAC이 내 것인지 | 프레임을 조용히 버림 | 타입 0x0800 → IPv4 |
| L3 IP | 헤더 체크섬, 목적지 IP가 내 것인지, TTL | 패킷을 버림 | 프로토콜 번호 6 → TCP, 17 → UDP |
| L4 TCP | 체크섬(가상 헤더 포함), 순서 번호, 중복 여부 | 버리고 상대가 다시 보내게 함 | 목적지 포트 → 응용 프로그램 |
| L4 UDP | 체크섬(가상 헤더 포함), 길이 | 버림(다시 오지 않음) | 목적지 포트 → 응용 프로그램 |
TCP·UDP 체크섬은 자기 헤더와 데이터뿐 아니라 IP 주소와 프로토콜 번호로 만든 가상 헤더까지 함께 계산합니다. 엉뚱한 주소로 잘못 배달된 데이터를 전송 계층에서도 한 번 더 걸러내기 위해서입니다.
실시간 e-VLBI에서 망원경 데이터는 VDIF 프레임(머리 32바이트 + 데이터 수천 바이트)으로 잘리고, 앞에 8바이트 순번을 붙여(VTP) UDP에 담겨 보내집니다. UDP는 스스로 자르지 않으므로, 프레임 하나가 점보 프레임(MTU 9,000) 하나에 꼭 맞도록 VDIF 프레임 크기를 정합니다. 그래야 IP 조각화가 일어나지 않고, 패킷 하나를 잃어도 그 프레임만 비게 됩니다.
🧮 실제 값으로 계산해 보기 — VDIF 8,000바이트 데이터의 포장
🧑🏫 선생님·학부모님을 위한 설명 도움말
원리 자세히 보기
비유로 설명하기
자주 하는 오해
함께 해 볼 질문·활동
📚 참고 자료 및 출처
본 교육자료는 Anthropic(Claude) 및 OpenAI(ChatGPT)를 활용하여 제작하였으며, 제작자가 내용을 검토·편집하였습니다. 주요 참고자료와 출처는 각 페이지의 「참고 자료 및 출처」에 명시하였습니다. 출처가 별도로 표기되지 않은 페이지와 참고자료에 포함되지 않은 내용은 제작자가 직접 작성하거나 정리한 것입니다. 내용에 오류가 있거나 수정이 필요한 사항을 발견하시면 kvnsite@kasi.re.kr로 알려 주시기 바랍니다.