1. 라이브러리
  2. 라우팅과 네트워크
  3. 네트워크 모델

업데이트됨 1개월 전

OSI 모델의 하위 계층들은 한 가지 질문에 집착합니다: 비트가 도착했는가? 상위 세 계층인 세션(5), 표현(6), 애플리케이션(7)은 더 어려운 질문을 던집니다: 그 비트들은 무엇을 의미하는가?

이 계층들은 사람과 애플리케이션에 가장 가까운 모든 것을 처리합니다. 세션 관리, 암호화, 데이터 형식, 브라우저와 이메일 클라이언트, 그리고 수많은 애플리케이션들이 실제로 통신하는 데 사용하는 프로토콜들이 여기에 속합니다. 이 계층들은 독립적인 실체로서 거의 존재하지 않기도 합니다—TCP/IP 모델은 이 세 계층을 하나의 애플리케이션 계층으로 통합하고, 대부분의 실제 프로토콜들은 경계를 자유롭게 넘나듭니다. 하지만 이 계층들이 무엇을 해야 하는지 이해하면, 애플리케이션 수준의 네트워킹이 실제로 어떻게 작동하는지 훨씬 명확해집니다.

5계층: 세션 계층

세션 계층은 애플리케이션 간의 지속적인 교환을 관리합니다. 하위의 TCP 연결(그것은 4계층)이 아니라, 그 위에서 이루어지는 논리적인 대화입니다.

세션이 하는 일:

  • 개설: 통신 채널을 열고, 매개변수를 협상하며, 참가자를 인증합니다
  • 유지: 유휴 기간 동안 대화를 유지하고, 누가 언제 전송할 수 있는지 조율합니다
  • 종료: 깔끔하게 마무리하여 모든 데이터가 전송되었는지 확인하고 자원을 해제합니다

대화 제어는 누가 전송할 수 있는지를 결정합니다. 반이중은 교대로 전송하는 방식입니다(워키토키처럼). 전이중은 동시에 양방향 통신이 가능한 방식입니다(전화 통화처럼).

체크포인트 기능을 사용하면 긴 전송이 처음부터 다시 시작하지 않고 중단된 지점부터 재개할 수 있습니다. 네트워크 장애 후 대용량 다운로드가 이어서 재개된 경험이 있다면, 세션 계층의 개념 덕분입니다.

솔직히 말하자면: 오늘날 순수한 세션 계층 프로토콜은 거의 없습니다. SIP(세션 개시 프로토콜)는 VoIP 통화를 개설합니다. NetBIOS는 레거시 Windows 네트워킹을 처리했습니다. 하지만 대부분의 세션 관리는 이제 애플리케이션 프로토콜 안에 녹아들어 있습니다. 세션 계층은 구현체라기보다 하나의 개념에 가깝습니다.

6계층: 표현 계층

표현 계층은 번역가입니다. 한 시스템이 보낸 데이터를 다른 시스템이 읽을 수 있도록 보장하며, 시스템마다 데이터를 다르게 표현한다는 현실적인 문제를 처리합니다.

변환은 서로 호환되지 않는 표현 방식 사이에서 다리 역할을 합니다:

  • 문자 인코딩 (ASCII vs. Unicode vs. EBCDIC)
  • 숫자 형식 (빅엔디안 vs. 리틀엔디안 바이트 순서)
  • 한 시스템은 이해하지만 다른 시스템은 이해하지 못하는 데이터 구조

압축은 전송 전에 데이터 크기를 줄입니다. 무손실 압축(gzip 같은)은 모든 비트를 그대로 보존합니다. 손실 압축(JPEG 같은)은 크기를 대폭 줄이는 대신 일부 품질을 희생합니다.

암호화는 읽을 수 있는 데이터를 권한이 있는 수신자만 해독할 수 있는 암호문으로 변환합니다. 모델에서 기밀성이 자리 잡는 곳이 바로 여기입니다.

주요 표준:

  • TLS는 HTTPS, 보안 이메일, 그리고 대부분의 암호화 프로토콜에서 암호화를 담당합니다
  • MIME는 콘텐츠 유형을 정의합니다—브라우저가 text/html과 image/jpeg를 구별하는 이유입니다
  • JSON과 XML은 데이터 교환 형식을 표준화합니다
  • UTF-8은 텍스트가 시스템 간 이동 중에도 온전히 유지되도록 보장합니다

7계층: 애플리케이션 계층

여기가 사람이 네트워크와 만나는 지점입니다. 애플리케이션 계층은 애플리케이션이 통신하는 방식을 정의하는 프로토콜을 통해 최종 사용자 애플리케이션에 직접 서비스를 제공합니다.

웹 프로토콜

HTTP는 요청/응답 모델로 웹 페이지를 가져옵니다. 설계상 무상태—각 요청은 독립적입니다. 포트 80.

HTTPS는 HTTP를 TLS 암호화로 감쌉니다. 포트 443. 브라우저의 자물쇠 아이콘입니다.

WebSocket은 실시간 전이중 통신을 가능하게 합니다—채팅 애플리케이션, 실시간 업데이트, 멀티플레이어 게임에 활용됩니다.

이메일 프로토콜

SMTP(Simple Mail Transfer Protocol)는 이메일을 전송합니다. 제출용 포트 587, 서버 간 릴레이용 포트 25.

IMAP은 서버에서 이메일을 관리하며, 여러 기기 간에 동기화합니다. 보안 연결용 포트 993.

POP3는 이메일을 다운로드하며, 일반적으로 서버에서는 삭제합니다. 예전 방식으로 요즘은 잘 쓰이지 않습니다. 보안용 포트 995.

파일 전송

SFTP는 SSH를 통해 파일을 안전하게 전송합니다. 포트 22. 현재의 표준적인 선택입니다.

FTP는 암호화 없이 파일을 전송합니다. 포트 20과 21. 레거시 프로토콜로, 민감한 데이터에는 사용을 피하세요.

이름 해석

DNS는 도메인 이름을 IP 주소로 변환합니다. DNS가 없다면 google.com 대신 142.250.185.78을 직접 입력해야 합니다. 포트 53.

네트워크 구성

DHCP는 기기가 네트워크에 연결될 때 자동으로 IP 주소를 할당합니다. 모든 기기에서 네트워크 설정을 수동으로 구성하지 않아도 되는 이유가 바로 이것입니다. 포트 67과 68.

원격 접속

SSH는 원격 시스템에 대한 보안 명령줄 접속을 제공합니다. 포트 22. 서버 관리에 없어서는 안 될 도구입니다.

RDP는 그래픽 기반의 Windows 원격 데스크탑을 제공합니다. 포트 3389.

네트워크 관리

SNMP는 네트워크 장치를 모니터링하고 관리합니다. 네트워크 관리자가 장애 발생 시 즉시 파악할 수 있는 수단입니다.

NTP는 시스템 전반에 걸쳐 시각을 동기화합니다. 포트 123. 생각보다 훨씬 중요합니다—타임스탬프는 보안, 로깅, 시스템 간 조정에 핵심적인 역할을 합니다.

상위 계층들이 함께 작동하는 방식

HTTPS로 웹 페이지를 불러올 때:

  1. 애플리케이션 계층: 브라우저가 HTTP 요청을 구성합니다—GET /index.html, 헤더, 쿠키
  2. 표현 계층: TLS가 전체 HTTP 요청을 암호화하고, 협상된 경우 압축도 수행합니다
  3. 세션 계층: TLS가 보안 세션을 관리합니다—핸드셰이크, 세션 재개, 상태 유지
  4. 전송 계층 이하: TCP 세그먼트, IP 패킷, 프레임, 전선 위의 비트

목적지에서 각 계층은 자신의 역할을 처리하고 데이터를 위로 전달합니다. 웹 서버의 애플리케이션 계층은 복호화된 HTTP 요청을 받아 응답을 생성합니다.

세션 vs. 연결

이 둘은 서로 다른 개념입니다:

연결은 전송 계층 개념입니다—두 엔드포인트 사이의 TCP 연결로, 신뢰할 수 있는 데이터 전달을 담당합니다.

세션은 애플리케이션/세션 계층 개념입니다—여러 연결에 걸쳐 있거나, 다른 세션과 단일 연결을 공유하기도 하는, 애플리케이션 간의 논리적 교환입니다.

웹사이트를 탐색할 때, 세션(로그인 상태, 장바구니)은 하위 TCP 연결이 열리고 닫히는 동안에도 유지됩니다. HTTP/2는 단일 TCP 연결 위에 여러 논리적 스트림을 다중화합니다.

오늘날의 실상

OSI 모델에서 5, 6, 7계층을 깔끔하게 분리한 것은 처음부터 실용적이기보다 이론적이었습니다. 실제 프로토콜들은 이러한 관심사를 자연스럽게 뒤섞습니다:

HTTPS는 HTTP(애플리케이션 로직), TLS(암호화 및 세션 관리), 데이터 형식을 하나의 스택에 통합합니다.

gRPC는 직렬화(표현), 연결 관리(세션), RPC 시맨틱(애플리케이션)을 통합된 하나로 처리합니다.

TCP/IP 모델이 이것들을 단일 애플리케이션 계층으로 묶은 결정은 프로토콜이 실제로 구축되는 방식을 반영합니다. 계층의 경계는 엄격한 규칙이 아닌 개념적 도구입니다.

왜 이것이 중요한가

이 계층들을 이해하면 다음에 도움이 됩니다:

  • 프로토콜 선택: 상황에 맞게—FTP 대신 SFTP, HTTP 대신 HTTPS
  • 보안 설계: 암호화가 일반적으로 표현 계층 경계에서 이루어진다는 점을 이해하고
  • 문제 해결: 애플리케이션 오류와 세션 문제, 데이터 형식 문제를 구별하여
  • 애플리케이션 개발: 네트워크 서비스를 올바르게 활용하는

상위 계층들은 원시적인 연결이 의미 있는 통신으로 변환되는 곳입니다. 하위 계층들이 비트를 목적지까지 전달했다면, 이 계층들은 그 비트에 의미를 부여합니다.

OSI 5-7계층에 관한 자주 묻는 질문

TCP/IP가 이 세 계층을 하나로 합친 이유는 무엇인가요?

분리가 실용적이기보다 이론적인 것으로 드러났기 때문입니다. 실제 프로토콜들은 세션 관리, 데이터 형식, 애플리케이션 로직을 자연스럽게 혼합합니다. HTTPS는 암호화, HTTP, 세션 처리를 깔끔하게 분리하지 않습니다—통합합니다. TCP/IP 모델은 인위적인 경계를 강요하는 대신 이 현실을 그대로 인정했습니다.

TLS와 SSL의 차이점은 무엇인가요?

SSL(Secure Sockets Layer)은 1990년대 Netscape가 개발한 원래 프로토콜입니다. TLS(Transport Layer Security)는 그 후속 프로토콜로, TLS 1.0은 사실상 SSL 3.1에 해당합니다. SSL은 현재 사용 중단되어 안전하지 않습니다—오늘날 사람들이 "SSL"이라고 말할 때는 보통 TLS를 의미합니다. TLS 1.2 또는 1.3을 사용하세요.

일부 프로토콜이 TCP와 UDP를 모두 사용하는 이유는 무엇인가요?

DNS가 전형적인 예입니다—소규모 조회에는 TCP 연결 설정의 오버헤드가 불필요하기 때문에 빠른 쿼리에 UDP(포트 53)를 사용합니다. 하지만 영역 전송(서버 간 전체 DNS 데이터베이스 복사)에는 대규모 중요 전송에서 속도보다 신뢰성이 더 중요하기 때문에 TCP를 사용합니다.

애플리케이션 계층이 애플리케이션과 같은 것인가요?

아닙니다. 애플리케이션 계층은 프로토콜(HTTP, SMTP, DNS)을 가리키며, 애플리케이션 자체(Chrome, Outlook, 작성한 코드)를 의미하지 않습니다. 브라우저는 애플리케이션 계층 프로토콜을 사용하는 하나의 애플리케이션입니다. 이 구분은 중요합니다: 계층은 애플리케이션이 통신하는 방식을 정의하며, 그 통신으로 무엇을 하는지는 정의하지 않습니다.

이 페이지가 도움이 되었나요?

😔
🤨
😃