이 글에서 얻는 것
- OSI 7계층을 단순히 외우는 것이 아니라, “문제가 발생했을 때 어느 계층을 봐야 하는지” 알게 됩니다.
- L4 vs L7 로드밸런서의 차이를 통해 아키텍처 설계의 기본을 익힙니다.
- TCP Handshake가 왜 필요한지, 연결 비용이 왜 비싼지 실무적으로 이해합니다.
0. 왜 계층을 나눴을까?
복잡한 네트워크 통신 과정을 역할별로 쪼개서 관리하기 위함입니다.
- 랜선이 끊어지면(1계층 문제), 유튜브 앱(7계층)을 고칠 필요 없이 랜선만 바꾸면 됩니다.
- 이것이 캡슐화와 모듈화의 전형적인 예시입니다.
1. 실무에서 중요한 4가지 계층 (TCP/IP 모델)
OSI 7계층은 이론에 가깝고, 실무에서는 TCP/IP 4계층 위주로 사고합니다.
L7: 응용 계층 (Application)
- 우리가 만드는 코드: HTTP, JSON, HTML, DNS
- 장비: L7 로드밸런서 (Nginx, AWS ALB), WAF(웹 방화벽)
- 특징: “패킷의 내용"을 볼 수 있습니다. (URL
/login은 A서버로,/search는 B서버로)
L4: 전송 계층 (Transport)
- 연결과 포트: TCP, UDP, Port
- 장비: L4 로드밸런서, 방화벽(Port 제어)
- 특징: 내용(HTTP 헤더 등)은 모르고, IP와 Port만 보고 배달합니다. “이 패킷은 8080 포트로 가는구나”
L3: 네트워크 계층 (Network)
- 주소와 경로: IP, 라우터
- 특징: 목적지 컴퓨터를 찾아가는 네비게이션 역할입니다. (서울시 강남구…)
L2/L1: 데이터 링크/물리 계층
- 랜선과 MAC: 이더넷, 와이파이, 스위치
- 특징: 옆 컴퓨터(공유기 등)로 물리적 신호를 전달합니다.
2. L4 vs L7 로드밸런서 (면접 단골, 실무 필수)
| 구분 | L4 로드밸런서 (AWS NLB) | L7 로드밸런서 (AWS ALB, Nginx) |
|---|---|---|
| 기준 | IP 주소 + 포트 번호 | URL, HTTP 헤더, 쿠키 |
| 속도 | 빠름 (패킷 내용을 안 까보니까) | L4보다 느림 (내용 분석 비용) |
| 기능 | 단순 부하 분산 | SSL 종료, URL 라우팅, 인증 처리 가능 |
| 용도 | 대규모 트래픽 단순 분산, TCP 베이스 | 마이크로서비스 라우팅, HTTPS 처리 |
실무 팁:
- “서비스가 너무 느린데 HTTPS 복호화 비용 때문인가?” -> L7 앞단에 L4를 둬서 부하를 줄이기도 합니다.
- MSA 환경에서는 **L7(Ingress)**가 필수입니다.
/users요청과/orders요청을 찢어줘야 하니까요.
3. TCP 3-way Handshake: “연결은 비싸다”
TCP는 신뢰성이 생명입니다. “나 보낸다?” “어, 보내!” “오케이 쏜다!” 확인이 필요합니다.
- SYN: (클라 -> 서버) “접속해도 돼?”
- SYN+ACK: (서버 -> 클라) “어, 내 말 들려? 너도 준비 됐어?”
- ACK: (클라 -> 서버) “어 잘 들려. 이제 데이터 보낸다.”
실무 포인트:
- 이 과정이 0.1초씩 걸린다면, HTTP 요청 하나 보낼 때마다 낭비가 심합니다.
- 그래서 HTTP Keep-Alive (연결 재사용)나 Connection Pool (미리 연결해둠)을 씁니다.
- “커넥션 맺는 비용"을 줄이는 것이 성능 최적화의 첫걸음입니다.
💬 댓글