🌐 네트워크 OSI 7계층 한눈에 보기
| 계층 | 이름 (Layer) | 실무 관련 예시 | 역할 설명 |
| 7 | Application | Nginx Config, HTTP/HTTPS | 사용자가 사용하는 서비스(웹, 앱)의 데이터를 처리해. URL 경로 분기나 세션 설정이 여기야. |
| 6 | Presentation | SSL/TLS 암호화 (HTTPS) | 데이터를 컴퓨터가 이해하는 방식으로 변환하거나 암호화해. Nginx에서 인증서 적용하는 단계지. |
| 5 | Session | 세션 유지 시간 (Timeout) | 통신하는 양 끝단의 연결을 맺고 끊고, 얼마나 유지할지 관리해. |
| 4 | Transport | L4 LB, Port(80/443), TCP | 포트 번호를 보고 데이터를 적절한 서비스(VM)로 배달해. 네가 포탈에서 VIP 엮는 작업이 이거야! |
| 3 | Network | 방화벽(IP), Router, L3 | IP 주소를 보고 최적의 경로를 찾아줘. 방화벽에서 출발지/도착지 IP로 허용 여부 결정하는 단계지. |
| 2 | Data Link | MAC 주소, 스위치(L2) | 인접한 장비끼리 데이터를 안전하게 전달해. (보통 포탈 너머 클라우드 인프라가 알아서 해줌) |
| 1 | Physical | 랜선, 광케이블, 허브 | 0과 1의 전기적 신호가 흐르는 물리적인 선로 자체를 의미해. |
🌐 서비스별 네트워크 OSI 7계층 한눈에 보기
| 계층 | HTTP/HTTPS (웹) | SFTP / FTP (파일 전송) | SSH (원격 접속) |
| 7 (Application) | HTTP/HTTPS (웹 페이지 요청) | SFTP/FTP (파일 업로드/다운로드) | SSH (명령어 전달) |
| 6 (Presentation) | ASCII, JPEG, TLS/SSL | 데이터 표현 방식, SSH Encryption | 데이터 암호화 및 압축 |
| 5 (Session) | 웹 세션 관리, Cookie | 파일 전송 세션 유지/제어 | 터미널 연결 세션 관리 |
| 4 (Transport) | TCP (Port 80/443) | TCP (Port 21/22) | TCP (Port 22) |
| 3 (Network) | IP 주소 (목적지 서버 찾기) | IP 주소 (파일 서버 찾기) | IP 주소 (대상 호스트 찾기) |
| 2 (Data Link) | MAC 주소 (인접 장비 통신) | MAC 주소 (인접 장비 통신) | MAC 주소 (인접 장비 통신) |
| 1 (Physical) | 랜선, 광케이블 | 랜선, 광케이블 | 랜선, 광케이블 |
🌐 회사에서 주로 하는 L3~L7 계층
| 작업 내용 | 주요 타겟 및 식별값 | OSI 7계층 | 비고 |
| 방화벽 | 출발지/도착지 IP, Port | 3계층(Network) / 4계층(Transport) |
IP 기반은 L3, Port 기반 제어는 L4에 해당
|
| Network LB (VIP 구성) | VIP(Virtual IP), VM 이중화 | 4계층 (Transport) |
보통 포탈에서 제공하는 기본 LB는 Port/Protocol 기반의 L4 Load Balancer
|
| Nginx Proxy 설정 & 업그레이드 | 도메인, URL 경로, HTTP 헤더 | 7계층 (Application) | 세션 시간 설정, URL 경로 기반 라우팅, 보안 헤더 추가 등 비즈니스 로직 처리 |
- 방화벽 (L3/L4): IP 주소를 보고 길을 막거나 여는 건 네트워크 계층(L3)이고, 특정 서비스 포트(TCP/UDP)까지 제어하는 건 전송 계층(L4)이야. 보통 묶어서 'L3/L4 방화벽'이라고 많이 불러.
- Network LB (L4): VIP를 만들고 서버들을 엮는 건, 데이터가 어떤 포트로 들어오느냐에 따라 분산해 주는 역할을 해.
- Nginx reverse proxy server (L7): Nginx는 example.com/api처럼 URL 경로를 보고 분기하거나, SSL 인증서를 적용하는 등 애플리케이션 계층(L7)의 복잡한 로직을 처리하는 아주 똑똑한 녀석이야.
🌐 L4 로드밸런싱의 분산 원리
L4(Transport Layer)는 IP 주소와 포트 번호를 보고 트래픽을 어디로 보낼지 결정해. 네가 설정한 작업은 아래와 같은 의미를 가져.
- 포트 기반 분산: 외부에서 VIP의 80번 포트로 접속 요청이 들어오면, 로드밸런서가 네가 묶어놓은 VM들의 80번 포트로 트래픽을 전달해 주는 거야.
- 부하 분산 알고리즘: 이때 로드밸런서는 내부적으로 설정된 규칙(예: Round Robin - 순차적 전달, Least Connection - 접속 적은 곳 우선 전달)에 따라 1번 VM으로 보낼지 2번 VM으로 보낼지 결정하게 돼.
- Health Check: 네가 포트를 지정해두면 로드밸런서는 "이 서버 80번 포트 살아있나?" 하고 주기적으로 찔러봐. 만약 1번 서버의 80번 포트가 죽으면 자동으로 2번으로만 트래픽을 보내는 스마트한 역할도 수행하지!
💡L4 Load Balancer(단순전달) + Nginx Reverse Proxy(상세제어)
🛠️ Nginx Config에서 세션/타임아웃 관련 부분
- keepalive_timeout: 클라이언트와 연결을 얼마나 유지할지 결정 (세션 유지의 기초)
- proxy_read_timeout / proxy_send_timeout: 백엔드 서버(VM)와 통신할 때 얼마나 기다려줄지 설정
- Sticky Session (Upstream): 특정 사용자가 계속 같은 서버로 가게 하려면 ip_hash 같은 설정을 쓰기도 해.
🛠️ Proxy Server를 두는 이유가 무엇일까?
중간에 다리 하나를 더 놓으면 느려질 것 같은데 왜 쓸까? 이유는 크게 3가지야.
- 보안 (수문장 역할)
- 진짜 서버(VM)의 IP를 꽁꽁 숨길 수 있어. 외부 사람은 프록시(VIP) 주소만 알 뿐, 실제 내부 서버가 어디에 있는지 몰라. 공격자가 들어오려고 해도 프록시에서 먼저 걸러지지.
- 부하 분산 (교통 정리)
- 네가 하는 LB 작업처럼, 트래픽이 몰릴 때 "너는 1번 서버로 가고, 너는 2번으로 가!"라고 교통 정리를 해줘서 서버가 터지는 걸 막아줘.
- 캐싱 (기억력)
- 자주 요청되는 데이터는 프록시가 미리 가지고 있다가, 진짜 서버한테 안 물어보고 자기가 바로 답해줘. 속도가 훨씬 빨라지지!
💡 nginx 소프트웨어가 5,6,7 계층을 한번에 다 할까?
예전에는 암호화만 전담하는 하드웨어(SSL 가속기)가 따로 있기도 했어. 하지만 요즘은 서버 성능이 워낙 좋아져서 Nginx 같은 소프트웨어가 이 복잡한 계산을 다 감당할 수 있게 된 거지.
- 효율성: 한 곳에서 암호화도 풀고(L6), 주소도 확인하고(L7), 세션도 관리하면(L5) 데이터 처리가 훨씬 빠르고 관리가 편해.
- 유연성: 하드웨어 장비는 설정을 바꾸기 힘들지만, Nginx는 네가 nginx.conf 파일만 수정하고 reload 하면 바로 반영되니까 운영하기가 압도적으로 좋지.
| 계층 | Nginx가 하는 일 (기능) | 실무적인 예시 |
| 5계층 (Session) | 연결 관리 (Connection) | 사용자와의 연결을 얼마나 유지할지(Keep-alive), 타임아웃은 언제 낼지 관리해. |
| 6계층 (Presentation) | 암호화 해제 (SSL Decryption) | HTTPS 인증서를 읽어서 암호화된 데이터를 우리가 읽을 수 있는 HTTP로 변환해. |
| 7계층 (Application) | 콘텐츠 해석 및 라우팅 | "어? 요청 주소가 /api네? 그럼 A서버로 보내야지"라고 데이터 내용을 보고 판단해. |