복잡한 네트워크 통신을 이해하고 설계하기 위해, 전체 과정을 단계적으로 나눈 것이 계층 모델이다.
각 계층은 독립된 책임을 가지며, 상하 계층과 명확한 인터페이스로만 통신한다.
이런 분리 덕분에 프로토콜 개발, 디버깅, 구현이 효율적으로 가능하다.
아래 표는 각 계층이 담당하는 역할, 데이터를 다루는 단위, 사용하는 프로토콜, 관련된 장비를 정리한 것이다.
이 구조를 이해하고 있어야, 네트워크 장애나 통신 오류가 발생했을 때 어느 계층에서 원인을 추적할지 판단할 수 있다.
| 계층 | 주요역할 | 데이터 단위 | 대표 프로토콜 | 주요 장비 |
|---|---|---|---|---|
| 7. 응용 계층 | 사용자와 가장 가까운 계층. 사용자에 서비스 제공 | 데이터(메시지) | HTTP, FTP, SMTP, DNS | - (앱 내부) |
| 6. 표현 계층 | 데이터 인코딩, 압축, 형식 변환, 암호화 | 데이터(메시지) | JPEG, MPEG, TLS, SSL | - |
| 5. 세션 계층 | 세션 관리(연결 세션 생성, 관리, 종료) | 데이터(메시지) | NetBIOS, RPC, PPTP | - |
| 4. 전송 계층 | 양 끝 간 신뢰성 전송(송수신 간 신뢰성, 흐름/혼잡 제어) | 세그먼트 / 데이터그램 | TCP, UDP | - |
| 3. 네트워크 계층 | 경로 지정, 논리적 주소(IP) 기반 라우팅 | 패킷 | IP, ICMP, ARP, RIP | 라우터 |
| 2. 데이터링크 계층 | MAC 주소 기반 전송, 프레임 전달, 오류검출 | 프레임 | Ethernet, PPP, VLAN | 스위치 |
| 1. 물리 계층 | 실제 전기/광신호 전송 | 비트 | 없음 (케이블/신호 방식) | 허브, 리피터, 케이블 |
OSI 모델은 개념적으로 가장 정교하지만, 실제 프로토콜은 일부 계층을 통합하거나 생략한다.
OSI 모델은 이상적인 구조를 제공하지만, 세션/표현 계층은 따로 구현되지 않는 경우가 많다.
실제 네트워크 환경에서는 HTTP 같은 응용 계층이 데이터 인코딩이나 세션 유지까지 모두 처리하는 경우가 많다.
이 때문에 계층을 통합적으로 다루는 TCP/IP 4계층 모델이 더 자주 사용된다.
TCP/IP는 초기 인터넷인 ARPANET에서 실용성과 구현 중심으로 설계된 네트워크 통신 모델이다.
OSI 7계층이 이론적으로 잘 정리되어 있었지만, 실제로는 적용하기 어려운 복잡성 때문에 TCP/IP 모델이 널리 채택되었다.
현재 인터넷 프로토콜 표준은 대부분 TCP/IP를 기반으로 한다.
| TCP/IP 계층 | 포함하는 OSI 계층 | 주요 프로토콜 | 주요 장비 |
|---|---|---|---|
| 4. 응용 계층 | 7. 응용 계층 6. 표현 계층 5. 세션 계층 | HTTP, DNS, FTP | - |
| 3. 전송 계층 | 4. 전송 계층 | TCP, UDP | - |
| 2. 인터넷 계층 | 3. 네트워크 계층 | IP, ICMP, ARP | 라우터 |
| 1. 네트워크 인터페이스 계층 | 2. 데이터링크 계층 1. 물리 계층 | Ethernet, MAC | NIC, 스위치 |
현실에서 대부분의 네트워크는 TCP/IP 4계층 모델을 기준으로 동작한다.
OSI는 분석과 설계에, TCP/IP는 구현과 운용에 기준이 된다.
상위 계층의 데이터는 하위 계층으로 내려가면서 헤더가 덧붙는 형태로 전달된다.
이를 캡슐화(Encapsulation)라고 하며, 반대 과정은 역캡슐화(Decapsulation)라고 한다.
예시: HTTP 요청이 실제로 전송될 때
응용 계층: HTTP 헤더 + 본문
↓
전송 계층: TCP 헤더 추가
↓
인터넷 계층: IP 헤더 추가
↓
네트워크 계층: MAC 헤더 추가 → 실제 전송
각 계층은 자신의 역할만 수행하고, 아래 계층은 상위 데이터를 알지 못한 채 전달만 한다.
이로써 유연성과 확장성이 보장된다.
웹 브라우저에서 HTTP 요청을 보낼 때, 이 요청은 단순히 인터넷으로 "날아가는 문자열"이 아니다.
네트워크 계층 구조에 따라 단계적으로 포장되고(캡슐화), 목적지 서버에서 다시 벗겨지는(역캡슐화) 흐름을 거친다.
응용 계층 (HTTP)
사용자가 주소창에 입력한 URL은 HTTP 요청 메시지로 변환된다. 이 요청은 "GET /index.html HTTP/1.1" 같은 형식이다.
전송 계층 (TCP)
HTTP 요청은 TCP 세그먼트로 포장된다. TCP는 송수신 간 신뢰성 있는 전송을 보장하기 위해 시퀀스 번호, ACK, 윈도우 크기 등의 정보가 담긴 헤더를 붙인다.
인터넷 계층 (IP)
TCP 세그먼트는 IP 패킷으로 포장된다. 이때 송신자와 수신자의 IP 주소, TTL(Time to Live), 패킷 식별자 등이 헤더에 포함된다.
네트워크 인터페이스 계층 (Ethernet)
IP 패킷은 이더넷 프레임으로 감싸지며, 송신자와 수신자의 MAC 주소, 에러 검출용 CRC 등이 헤더와 트레일러에 포함된다.
물리 매체를 통해 전송
이더넷 프레임은 전기 신호로 변환되어 케이블, 스위치, 라우터 등을 거쳐 목적지 서버로 이동한다.
서버의 네트워크 카드(NIC)는 프레임을 수신하고, MAC 주소가 자신의 것인지 확인한 뒤, 이더넷 헤더를 제거한다.
IP 계층은 IP 주소와 TTL 등을 검사하고, IP 헤더를 제거한 뒤 상위 TCP 계층으로 전달한다.
TCP 계층은 포트 번호를 기준으로 적절한 응용 계층으로 데이터를 넘기며, 세그먼트 재조립, 순서 정렬, ACK 확인 등을 수행한다.
마지막으로 HTTP 요청이 완성된 형태로 응용 계층(Web 서버)로 전달되어, 요청한 리소스를 처리하게 된다.
TCP/IP 4계층은 실제 웹 요청, 서버 운영, 로깅, 디버깅 과정에서 가장 많이 등장한다.
예를 들어, HTTP 요청이 실패했을 때 개발자는 응용 계층 오류인지, TCP 전송 문제인지, IP 라우팅 오류인지 구분할 줄 알아야 한다.
캡슐화 구조를 이해하면 Wireshark 같은 툴로 패킷을 분석할 때 각 계층의 헤더를 읽고, 어디서 문제가 발생했는지를 파악하는 능력이 생긴다.
면접에서 관련 질문이 나올 경우, '7계층 중 몇 계층이 어디까지 구현되느냐'보다 'HTTP 요청이 사용자에서 서버까지 어떤 계층을 거쳐 전달되는지'를 흐름 중심으로 설명할 수 있어야 한다.
면접에서 "캡슐화란 무엇인가요?"라고 묻는 경우, 단순히 "헤더를 붙이는 과정"이라고만 답하면 부족하다.
예를 들어, HTTP 요청을 전송할 때 어떤 계층에서 어떤 헤더가 추가되고, 그것이 수신 측에서 어떻게 제거되어 상위 계층에 전달되는지까지 설명할 수 있어야 한다.
면접에서는 “HTTP 요청이 왜 실패했는가”를 분석할 수 있는 사고력을 본다.
예를 들어, 브라우저에선 요청이 나갔지만 응답이 없다면,
1) DNS 응답이 안 온 것인지(응용 계층 문제)
2) TCP 연결이 안 되는 것인지(전송 계층 문제)
3) 라우팅이 안 되는 것인지(인터넷 계층 문제)
4) 혹은 MAC 주소 전달에서 실패한 것인지(데이터링크 계층 문제)
를 계층 흐름에 따라 분리해서 추적할 수 있어야 한다.