OSI 7 Layer & TCP/IP Model
OSI 7계층 vs TCP/IP 4계층 비교, 계층별 프로토콜, Encapsulation, 디버깅
🎯 왜 계층 모델인가?
네트워크 통신은 복잡함. 이걸 한 덩어리로 다루면 설계도, 문제 해결도, 설명도 어려워짐.
계층화의 장점:
- 각 계층은 자기 역할만 수행 (관심사 분리)
- 한 계층이 바뀌어도 다른 계층에 영향 없음 (모듈화)
- 문제 발생 시 어느 계층 문제인지 좁혀갈 수 있음 (디버깅)
📊 OSI 7 Layer vs TCP/IP 4 Layer
flowchart TB subgraph OSI["OSI 7 Layer"] direction TB O7["7. Application"] O6["6. Presentation"] O5["5. Session"] O4["4. Transport"] O3["3. Network"] O2["2. Data Link"] O1["1. Physical"] O7 --- O6 --- O5 --- O4 --- O3 --- O2 --- O1 end subgraph TCPIP["TCP/IP 4 Layer"] direction TB T4["Application"] T3["Transport"] T2["Internet"] T1["Network Access"] T4 --- T3 --- T2 --- T1 end O7 -.-> T4 O6 -.-> T4 O5 -.-> T4 O4 -.-> T3 O3 -.-> T2 O2 -.-> T1 O1 -.-> T1
OSI 모델: ISO에서 만든 이론적/참조 모델 (7계층) TCP/IP 모델: 실제 인터넷에서 사용하는 실용적 모델 (4계층)
실무에서는 TCP/IP 기준으로 동작하지만, 설명할 때는 OSI 7계층 용어를 많이 씀.
🔍 계층별 상세
Layer 7: Application (응용 계층)
역할: 사용자와 직접 상호작용하는 애플리케이션 프로토콜
| 프로토콜 | 포트 | 용도 |
|---|---|---|
| HTTP | 80 | 웹 통신 |
| HTTPS | 443 | 암호화된 웹 통신 |
| FTP | 21 | 파일 전송 |
| SSH | 22 | 원격 접속 (암호화) |
| DNS | 53 | 도메인 → IP 변환 |
| SMTP | 25 | 메일 발송 |
| POP3/IMAP | 110/143 | 메일 수신 |
데이터 단위: Message (메시지)
Layer 6: Presentation (표현 계층)
역할: 데이터 형식 변환, 암호화/복호화, 압축
- 인코딩: ASCII, UTF-8, JPEG, MPEG
- 암호화: SSL/TLS (실제로는 5~7계층 걸쳐있음)
- 압축: 데이터 크기 줄이기
💡 실무에서는 Application 계층에 흡수되어 별도로 다루는 경우 적음
Layer 5: Session (세션 계층)
역할: 통신 세션 설정, 유지, 종료 관리
- 세션 생성/유지/종료
- 동기화 (체크포인트)
- 대화 제어 (반이중/전이중)
💡 TCP/IP 모델에서는 Application에 포함. 실무에서 독립적으로 다루는 경우 드묾
Layer 4: Transport (전송 계층)
역할: 종단 간(End-to-End) 데이터 전송, 신뢰성/흐름 제어
| 프로토콜 | 특징 | 용도 |
|---|---|---|
| TCP | 연결 지향, 신뢰성, 순서 보장 | 웹, 파일 전송, 이메일 |
| UDP | 비연결, 빠름, 신뢰성 없음 | 스트리밍, DNS, 게임 |
TCP 3-Way Handshake:
sequenceDiagram participant C as Client participant S as Server C->>S: SYN (연결 요청) S->>C: SYN + ACK (요청 확인 + 응답) C->>S: ACK (응답 확인) Note over C,S: Connection Established
TCP 4-Way Handshake (종료):
sequenceDiagram participant C as Client participant S as Server C->>S: FIN (종료 요청) S->>C: ACK (요청 확인) S->>C: FIN (종료 요청) C->>S: ACK (요청 확인) Note over C,S: Connection Closed
데이터 단위: Segment (세그먼트)
주요 개념:
- Port: 프로세스 식별 (0~65535)
- Well-known Port: 0~1023 (HTTP 80, SSH 22 등)
- Ephemeral Port: 49152~65535 (클라이언트 임시 포트)
Layer 3: Network (네트워크 계층)
역할: 논리적 주소 지정, 라우팅 (경로 결정)
| 프로토콜 | 용도 |
|---|---|
| IP | 논리적 주소 지정, 패킷 전달 |
| ICMP | 네트워크 진단 (ping, traceroute) |
| ARP | IP → MAC 주소 변환 |
| 라우팅 프로토콜 | OSPF, BGP, RIP 등 |
데이터 단위: Packet (패킷)
주요 개념:
- IP 주소: 논리적 주소, 네트워크 변경 시 바뀜
- 서브넷: 네트워크 분할
- 라우팅: 목적지까지 최적 경로 결정
- 라우터: 3계층 장비, 다른 네트워크 간 연결
Layer 2: Data Link (데이터 링크 계층)
역할: 물리적 주소 지정, 프레임 단위 전송, 에러 검출
| 프로토콜/기술 | 용도 |
|---|---|
| Ethernet | 유선 LAN 표준 |
| Wi-Fi (802.11) | 무선 LAN |
| PPP | Point-to-Point 연결 |
데이터 단위: Frame (프레임)
주요 개념:
- MAC 주소: 물리적 주소, 하드웨어에 고정 (48bit, 예:
00:1A:2B:3C:4D:5E) - 스위치: 2계층 장비, 같은 네트워크 내 프레임 전달
- VLAN: 논리적 네트워크 분리
MAC vs IP:
| 구분 | MAC 주소 | IP 주소 |
|---|---|---|
| 계층 | 2계층 | 3계층 |
| 범위 | 로컬 네트워크 | 전체 네트워크 |
| 변경 | 고정 (하드웨어) | 유동 (네트워크 설정) |
| 형식 | 48bit (6 octet) | 32bit (IPv4) / 128bit (IPv6) |
Layer 1: Physical (물리 계층)
역할: 실제 전기 신호/광 신호로 비트 전송
- 전송 매체: 케이블 (UTP, 광섬유), 무선
- 신호: 전압, 주파수, 광 펄스
- 장비: 허브, 리피터, 케이블
데이터 단위: Bit (비트)
📦 캡슐화 (Encapsulation)
데이터가 상위 계층에서 하위 계층으로 내려가며 각 계층의 헤더가 추가됨.
flowchart TB subgraph App["Application Layer"] A["Data"] end subgraph Trans["Transport Layer"] T["TCP Header | Data"] T2["→ Segment"] end subgraph Net["Network Layer"] N["IP Header | TCP Header | Data"] N2["→ Packet"] end subgraph Data["Data Link Layer"] D["Frame Header | IP | TCP | Data | FCS"] D2["→ Frame"] end subgraph Phys["Physical Layer"] P["01010101010101010101..."] P2["→ Bits"] end App --> Trans --> Net --> Data --> Phys
수신 측에서는 역순으로 헤더를 벗겨내며 올라감 (역캡슐화, Decapsulation).
🔧 계층별 장비 및 문제 해결
| 계층 | 장비 | 문제 해결 도구 |
|---|---|---|
| 7 (Application) | 웹서버, 프록시 | curl, 브라우저 개발자도구 |
| 4 (Transport) | 방화벽, L4 LB | netstat, ss, tcpdump |
| 3 (Network) | 라우터, L3 스위치 | ping, traceroute, ip route |
| 2 (Data Link) | 스위치 | arp, ip neigh |
| 1 (Physical) | 허브, 케이블 | 케이블 테스터, LED 상태 |
“네트워크 안 돼요” 디버깅 순서:
flowchart TB P1["1. Physical: 케이블 연결됨? 링크 LED?"] P2["2. Data Link: MAC 테이블? ARP 동작?"] P3["3. Network: IP 설정? ping? 라우팅?"] P4["4. Transport: 포트 열림? 방화벽?"] P5["5. Application: 서비스 상태? 로그?"] P1 --> P2 --> P3 --> P4 --> P5
🆚 L4 vs L7 로드밸런서
| 구분 | L4 Load Balancer | L7 Load Balancer |
|---|---|---|
| 계층 | Transport (4계층) | Application (7계층) |
| 기준 | IP, Port | URL, Header, Cookie |
| 속도 | 빠름 | 상대적으로 느림 |
| 기능 | 단순 분산 | 경로 기반 라우팅, SSL 종료 |
| 예시 | NLB (AWS) | ALB (AWS), nginx |
🔗 관련 포스트
- (예정) IP 주소 및 서브넷
- (예정) TCP vs UDP 상세
- (예정) DNS 동작 원리