OSI 7 Layers
네트워크 문제가 발생했을 때 "인터넷이 안 돼요"라는 말만으로는 원인을 파악할 수 없다.
DNS가 안 되는 건지, 방화벽이 막는 건지, 물리 케이블이 빠진 건지.
문제의 위치를 특정하려면 네트워크가 어떤 단계로 동작하는지 이해해야 한다.
OSI(Open Systems Interconnection) 모델은 네트워크 통신을 7개의 계층으로 분리한 참조 모델이다.
1984년 ISO(International Organization for Standardization)가 제정했다.
실제 인터넷은 TCP/IP 4계층 모델로 동작하지만, OSI 7계층은 문제를 진단하고 설명하는 공통 언어로서 표준이다.

Layer 1 — Physical (물리 계층)
물리 계층은 0과 1의 비트(bit)를 실제 전기 신호, 광 신호, 무선 전파로 변환하여 전송하는 계층이다.
이 계층은 "데이터"가 뭔지 모른다. 단지 비트 스트림을 물리적 매체를 통해 보내고 받을 뿐이다.
구성 요소
전송 매체:
- UTP 케이블(Cat5e, Cat6, Cat6a): 구리선으로 전기 신호를 전달한다. 사무실 LAN에 가장 많이 쓰인다.
- 광섬유(Fiber Optic): 빛으로 데이터를 전달. 장거리, 고속 통신에 사용한다. 데이터센터 간 연결의 핵심이다.
- 무선(Wi-Fi, 5G): 전파로 데이터를 전달한다.
장비:
- 리피터(Repeater): 약해진 신호를 증폭한다.
- 허브(Hub): 들어온 신호를 연결된 모든 포트로 복사하여 내보낸다. 현재는 거의 사용하지 않는다.
데이터 단위
비트(Bit) — 0 또는 1. 물리 계층이 다루는 최소 단위이다.
Layer 2 — Data Link (데이터링크 계층)
데이터링크 계층은 같은 네트워크(LAN) 안에서 장치 간 통신을 담당한다. 물리 계층의 비트 스트림을 의미 있는 프레임(Frame) 단위로 구성하고, MAC 주소를 사용하여 특정 장치를 식별한다.
MAC 주소
MAC(Media Access Control) 주소는 네트워크 인터페이스 카드(NIC)에 부여된 고유한 48비트 하드웨어 주소이다.
예: 00:1A:2B:3C:4D:5E
앞 24비트(00:1A:2B) = OUI (제조사 식별자, IEEE가 할당)
뒤 24비트(3C:4D:5E) = 제조사가 부여한 고유 번호
MAC 주소는 로컬 네트워크 내에서만 유효하다. 라우터를 넘어가면 MAC 주소는 바뀐다(라우터가 자신의 MAC으로 교체한다).
ARP (Address Resolution Protocol)
IP 주소는 알지만 MAC 주소를 모를 때 ARP를 사용한다.
1. PC-A가 "192.168.1.10의 MAC 주소가 뭐야?" 라고 브로드캐스트(FF:FF:FF:FF:FF:FF)를 보낸다.
2. 해당 IP를 가진 PC-B가 "내 MAC은 00:1A:2B:3C:4D:5E야" 라고 유니캐스트로 응답한다.
3. PC-A는 이 매핑을 ARP 테이블에 캐시한다.
장비
스위치(Switch):
- MAC 주소 테이블(CAM 테이블)을 학습하여, 프레임을 해당 포트로만 전달한다.
- 허브와 달리 불필요한 트래픽을 줄인다.
브리지(Bridge):
- 두 개의 네트워크 세그먼트를 연결한다.
- 현재는 스위치에 기능이 통합되어 거의 쓰이지 않는다.
Layer 3 — Network (네트워크 계층)
네트워크 계층은 서로 다른 네트워크 간의 통신을 담당한다. L2가 "같은 방 안에서 누구에게 전달할까"를 결정한다면, L3는 "어느 방(네트워크)으로 보낼까"를 결정한다.
핵심 기능 두 가지: 논리적 주소 지정(IP 주소)과 라우팅(최적 경로 선택).
IP 주소
IPv4:
192.168.1.100 (32비트, 약 43억 개)
네트워크 부분 + 호스트 부분으로 나뉜다.
서브넷 마스크가 경계를 결정한다.
예: 192.168.1.100/24
- /24 = 서브넷 마스크 255.255.255.0
- 네트워크: 192.168.1.0
- 호스트 범위: 192.168.1.1 ~ 192.168.1.254
- 브로드캐스트: 192.168.1.255
- 사용 가능 호스트: 254개 (2^8 - 2)
IPv6:
2001:0db8:85a3:0000:0000:8a2e:0370:7334 (128비트)
축약: 2001:db8:85a3::8a2e:370:7334
사실상 무한한 주소 공간을 제공한다.
서브넷팅 (Subnetting)
큰 네트워크를 작은 단위로 나누는 것.
VPC CIDR: 10.0.0.0/16 (65,536개 IP)
이것을 서브넷으로 나눈다:
├── 10.0.1.0/24 → Public Subnet AZ-a (256개 IP)
├── 10.0.2.0/24 → Public Subnet AZ-b (256개 IP)
├── 10.0.10.0/24 → Private Subnet AZ-a (256개 IP)
├── 10.0.20.0/24 → Private Subnet AZ-b (256개 IP)
└── 나머지 → 향후 확장용
CIDR(Classless Inter-Domain Routing) 계산:
/24 = 256 IP (호스트 254개)
/25 = 128 IP (호스트 126개)
/26 = 64 IP (호스트 62개)
/27 = 32 IP (호스트 30개)
/28 = 16 IP (호스트 14개)
공식: 사용 가능 호스트 = 2^(32 - 서브넷 비트 수) - 2
AWS에서는 서브넷당 5개 IP를 추가로 예약한다(네트워크, 라우터, DNS, 예약, 브로드캐스트).
라우팅
패킷이 목적지까지 도달하는 최적 경로를 선택하는 과정이다.
라우터는 패킷의 목적지 IP를 라우팅 테이블과 대조하여 가장 구체적인(longest prefix match) 경로로 전달한다.

NAT (Network Address Translation)
사설 IP를 공인 IP로 변환하는 기술이다.
내부 서버(10.0.1.50) → NAT Gateway → 인터넷(52.78.100.200으로 변환)
- SNAT(Source NAT): 출발지 IP 변환. 사설 → 공인. AWS NAT Gateway가 이 역할이다.
- DNAT(Destination NAT): 목적지 IP 변환. 공인 → 사설. 포트 포워딩이 대표적이다.
패킷 구조
┌──────────┬──────────┬─────┬──────────┬──────────┬─────────┐
│ Version │ IHL │ TTL │ Protocol │ Src IP │ Dst IP │
│ (4/6) │ 헤더길이 │ │ TCP=6 │ │ │
│ │ │ │ UDP=17 │ │ │
└──────────┴──────────┴─────┴──────────┴──────────┴─────────┘
- TTL(Time To Live): 라우터를 지날 때마다 1씩 감소. 0이 되면 패킷 폐기. 무한 루프 방지 장치이다.
- Protocol: 상위 계층 프로토콜 식별 (6=TCP, 17=UDP, 1=ICMP)
Layer 4 — Transport (전송 계층)
전송 계층은 종단 간(End-to-End) 데이터 전송의 신뢰성과 흐름을 제어한다. "어떻게 안전하게 보낼까"와 "어떤 애플리케이션에 전달할까"를 담당한다.
핵심 개념: 포트 번호로 애플리케이션을 식별하고, TCP 또는 UDP 프로토콜로 전송 방식을 결정한다.
포트 번호
하나의 IP에서 여러 서비스를 구분하는 논리적 식별자이다. 0~65535 범위를 가진다.
Well-Known Ports (0-1023): 시스템 서비스용
22 = SSH
53 = DNS
80 = HTTP
443 = HTTPS
3306 = MySQL
5432 = PostgreSQL
6379 = Redis
Registered Ports (1024-49151): 등록된 애플리케이션
3000 = 개발 서버 (관례)
8080 = 대체 HTTP (관례)
8443 = 대체 HTTPS (관례)
27017 = MongoDB
Dynamic/Ephemeral Ports (49152-65535): 클라이언트가 임시로 사용
브라우저가 웹서버에 접속할 때, 출발지 포트로 이 범위의 임의 번호를 사용한다.
소켓(Socket) = IP 주소 + 포트 번호 + 프로토콜. 네트워크 통신의 종단점이다.
192.168.1.100:443/TCP → 하나의 소켓
TCP (Transmission Control Protocol)
연결 지향(Connection-Oriented), 신뢰성 있는 전송 프로토콜이다.
3-Way Handshake (연결 수립):
Client Server
│ │
│──── SYN (seq=100) ─────→│ 1. "연결하고 싶다" (SYN 플래그)
│ │
│←── SYN-ACK (seq=300, │ 2. "좋다, 나도 준비됐다" (SYN+ACK)
│ ack=101) ───────────│
│ │
│──── ACK (ack=301) ─────→│ 3. "확인, 시작하자" (ACK)
│ │
│ 연결 수립 완료 (ESTABLISHED)
이 과정이 완료되어야 데이터를 주고받을 수 있다. 모든 HTTP, SSH, DB 연결이 이 핸드셰이크로 시작한다.
4-Way Handshake (연결 종료):
Client Server
│──── FIN ───────────────→│ 1. "보낼 데이터 다 보냈다"
│←──── ACK ───────────────│ 2. "알겠다"
│←──── FIN ───────────────│ 3. "나도 다 보냈다"
│──── ACK ───────────────→│ 4. "알겠다. 연결 종료"
TCP의 신뢰성 보장 메커니즘:
- 시퀀스 번호(Sequence Number): 모든 바이트에 번호를 매긴다. 수신 측은 이를 통해 데이터를 올바른 순서로 재조립한다.
- 확인 응답(ACK): 수신한 데이터에 대해 확인 메시지를 보낸다. ACK가 안 오면 재전송한다.
- 흐름 제어(Flow Control): 수신 측의 처리 능력에 맞춰 전송 속도를 조절한다. Window Size로 제어한다.
- 혼잡 제어(Congestion Control): 네트워크 혼잡 시 전송 속도를 줄인다. Slow Start, Congestion Avoidance 등의 알고리즘을 사용한다.
- 체크섬(Checksum): 데이터 무결성을 검증한다.
UDP (User Datagram Protocol)
비연결(Connectionless), 신뢰성 없는 전송 프로토콜이다.
Client Server
│ │
│──── 데이터 ─────────────→│ 핸드셰이크 없이 바로 전송
│──── 데이터 ─────────────→│ 도착 확인도 하지 않음
│──── 데이터 ─────────────→│ 순서 보장도 하지 않음
UDP를 쓰는 이유:
- 빠르다. 핸드셰이크 오버헤드가 없다.
- 실시간성이 중요한 서비스에 적합하다.
UDP 사용 사례:
- DNS 조회 (53번 포트): 작은 요청/응답이므로 TCP 오버헤드가 불필요하다.
- 실시간 스트리밍, VoIP: 약간의 패킷 손실보다 지연이 더 치명적이다.
- 게임 서버: 실시간 상태 업데이트에 UDP가 적합하다.
- DHCP: IP 할당 과정에서 사용한다.
TCP vs UDP 비교
특성 TCP UDP
──────────────────────────────────────────────────
연결 방식 연결 지향 (3-way) 비연결
신뢰성 보장 (ACK, 재전송) 미보장
순서 보장 보장 미보장
속도 상대적으로 느림 빠름
헤더 크기 20~60 바이트 8 바이트
사용 사례 웹, 이메일, 파일전송 DNS, 스트리밍, 게임
Layer 5 — Session (세션 계층)
세션 계층은 통신 세션의 수립, 유지, 종료를 관리한다. 두 장치 간의 대화(dialog)를 제어하고, 데이터 교환의 동기화 지점을 설정한다.
현대 네트워크에서 L5는 독립된 계층으로 명확히 구분되기 어렵다. 대부분의 세션 관리 기능은 L4(TCP)나 L7(HTTP) 안에 녹아 있다.
세션의 의미
웹 브라우저로 쇼핑몰에 로그인한 상황을 생각해 보자:
1. 세션 수립: 로그인 성공 → 서버가 세션 ID 발급
2. 세션 유지: 페이지를 이동해도 로그인 상태 유지
3. 세션 종료: 로그아웃 또는 타임아웃 → 세션 파기
세션 계층의 역할
- 대화 제어(Dialog Control):
- 전이중(Full-Duplex): 양방향 동시 통신 (전화 통화)
- 반이중(Half-Duplex): 한 번에 한쪽만 통신 (무전기)
- 동기화(Synchronization):
- 대용량 파일 전송 시 체크포인트를 설정한다.
- 전송 중 끊기면 처음부터가 아니라 마지막 체크포인트부터 재개한다.
- 세션 복구(Recovery):
- 연결이 끊겼을 때 세션을 복원한다.
관련 프로토콜/기술
- NetBIOS: Windows 네트워크 세션 관리에 사용했다.
Layer 6 — Presentation (표현 계층)
표현 계층은 데이터의 형식(포맷) 변환, 암호화/복호화, 압축/해제를 담당한다. 애플리케이션이 이해할 수 있는 형태로 데이터를 변환하는 "번역가" 역할이다.
L5와 마찬가지로 현대 네트워크에서는 독립 계층으로 존재하기보다 L7에 통합된 경우가 많다. 하지만 TLS/SSL이 이 계층의 대표적 기능이다.
세 가지 핵심 기능
1. 데이터 변환 (Translation):
- 문자 인코딩: UTF-8, ASCII, ISO-8859-1 간 변환
- 데이터 직렬화: JSON, XML, Protocol Buffers, YAML
- 이미지 포맷: JPEG, PNG, WebP
- 영상 코덱: H.264, H.265, VP9
예: 한국어가 포함된 JSON을 UTF-8로 인코딩하여 전송하고,
수신 측에서 디코딩한다.
2. 암호화/복호화 (Encryption/Decryption):
TLS(Transport Layer Security) — 이전 이름: SSL
TLS 핸드셰이크 과정 (TLS 1.3 기준):
Client Server
│ │
│── ClientHello ────────────────→│ 지원하는 암호 스위트, TLS 버전 전달
│ (+ 키 공유) │
│ │
│←── ServerHello ────────────────│ 선택한 암호 스위트, 서버 인증서 전달
│ (+ 키 공유, 인증서) │
│ │
│ [양측이 공유 비밀키 계산] │
│ │
│←→ 암호화된 데이터 통신 ←→───────────│ 대칭키로 암호화된 통신 시작
인증서 체인:
Root CA (DigiCert, Let's Encrypt 등)
└── Intermediate CA
└── 서버 인증서 (example.com)
브라우저/OS에 Root CA가 내장되어 있다.
서버 인증서 → Intermediate CA → Root CA 순으로 검증한다.
하나라도 검증 실패 시 "이 사이트는 안전하지 않습니다" 경고가 뜬다.
3. 압축/해제 (Compression/Decompression):
- gzip, brotli: HTTP 응답 압축
- 이미지 손실/무손실 압축
- 데이터 전송량을 줄여 속도를 높인다.
Layer 7 — Application (응용 계층)
응용 계층은 사용자와 가장 가까운 계층으로, 네트워크 서비스를 직접 제공한다. 웹 브라우저, 이메일 클라이언트, API 등 사용자가 실제로 사용하는 애플리케이션 프로토콜이 이 계층에서 동작한다.
주요 프로토콜
HTTP/HTTPS (포트 80/443):
웹 통신의 기본. 요청-응답 모델이다.
요청:
GET /api/users HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Accept: application/json
응답:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 234
{"users": [...]}
DNS (포트 53):
도메인 이름을 IP 주소로 변환하는 프로토콜이다.
www.example.com → ?
1. 브라우저 캐시 확인
2. OS 캐시 확인 (/etc/hosts 포함)
3. Local DNS 서버(리졸버)에 질의
4. Root DNS → .com TLD DNS → example.com 권한 DNS
5. IP 주소 반환: 93.184.216.34
레코드 타입:
A = 도메인 → IPv4
AAAA = 도메인 → IPv6
CNAME = 도메인 → 다른 도메인 (별칭)
MX = 메일 서버
NS = 네임서버
TXT = 텍스트 (SPF, DKIM, 도메인 검증 등)
SSH (포트 22):
# 원격 서버 접속
ssh -i key.pem ubuntu@10.0.1.50
# 포트 포워딩 (로컬 → 원격)
ssh -L 3306:rds-endpoint:3306 bastion-host
# 로컬 3306 포트로 접속하면 bastion을 통해 RDS에 연결된다.
# 포트 포워딩 (원격 → 로컬)
ssh -R 8080:localhost:3000 remote-server
기타 주요 프로토콜:
- SMTP(25)/IMAP(143)/POP3(110): 이메일
- FTP(21)/SFTP(22): 파일 전송
OSI 모델 vs TCP/IP 모델
실제 인터넷은 TCP/IP 4계층 모델로 동작한다.
OSI 7 계층 TCP/IP 4 계층 주요 프로토콜
───────────────────────────────────────────────────────────
L7 Application ┐
L6 Presentation ├───→ Application Layer HTTP, DNS, SSH,
L5 Session ┘ TLS, SMTP, FTP
L4 Transport ────→ Transport Layer TCP, UDP
L3 Network ────→ Internet Layer IP, ICMP, ARP
L2 Data Link ┐
L1 Physical ┘───→ Network Access Layer Ethernet, Wi-Fi
'Learning Log' 카테고리의 다른 글
| [멋사 클라우드 5기] Day 35 & 36 - Linux (2) (0) | 2026.03.25 |
|---|---|
| [멋사 클라우드 5기] Day 33 & 34 - Linux (1) (1) | 2026.03.25 |
| [멋사 클라우드 5기] Day 29 & 30 - 게시판 구현을 통해 확인한 Spring Data JPA (0) | 2026.03.12 |
| [멋사 클라우드 5기] Day 28 - JWT 그런데 Redis를 곁들인 (0) | 2026.03.10 |
| [멋사 클라우드 5기] Day 26, 27 - Spring Security & JWT (0) | 2026.03.09 |
