추상화와 OSI 모델
네트워크 추상화 계층과 OSI 모델을 이해하여 데이터가 시스템 간에 어떻게 이동하는지 명확하게 추론하세요.
레이어가 존재하는 이유
대규모 네트워크 시스템은 추상화 없이는 관리할 수 없습니다. 레이어는 책임을 분리하여 복잡성을 제어하기 위해 존재합니다.
계층화 없음
모든 구성 요소는 다른 모든 구성 요소에 의존합니다.
계층화 있음
각 계층은 인접한 계층과만 상호작용합니다.
- 레이어가 없으면 모든 컴포넌트가 다른 모든 컴포넌트에 직접 의존하게 됩니다.
- 각 레이어는 명확하게 정의된 하나의 시스템 문제를 해결하는 데 집중합니다.
- 추상화는 시스템이 확장되고, 진화하고, 독립적으로 디버깅될 수 있게 해줍니다.
상세정보
현대의 통신 시스템은 하드웨어 신호, 로컬 전달 규칙, 전역 라우팅 결정, 신뢰성 메커니즘, 암호화 표준, 애플리케이션 로직을 모두 포함합니다. 이러한 요소들이 하나의 거대한 설계에 강하게 결합되어 있다면, 작은 변경만으로도 예측할 수 없는 부작용이 발생할 수 있습니다.
레이어링은 엄격한 경계를 정의함으로써 이 문제를 해결합니다. 각 레이어는 자신의 역할을 수행하고, 내부의 복잡성을 드러내지 않은 채 위 레이어에 깔끔한 인터페이스를 제공합니다. 예를 들어, 전송 계층은 비트가 전기적으로 어떻게 이동하는지 이해할 필요가 없고, 애플리케이션 계층은 라우터가 패킷을 어떻게 전달하는지 알 필요가 없습니다.
이러한 분리는 인지 부하를 줄여 줍니다. 엔지니어는 전체 시스템을 동시에 생각하는 대신 한 번에 하나의 레이어만 추론할 수 있습니다.
OSI 모델은 이러한 구조적 분리를 공식화합니다. 중요한 것은 일곱 개의 이름을 외우는 것이 아니라, 추상화가 분산 시스템을 이해 가능하고, 유지보수 가능하며, 확장 가능하게 만드는 방식을 이해하는 것입니다.
7계층: 개요
OSI 모델은 네트워크 통신을 7개의 순서 있는 계층으로 구성하며, TCP/IP는 인터넷에서 실제로 사용되는 스택을 나타냅니다.
OSI 모델(개념적 프레임워크)
TCP/IP 스택(실제 구현)
- OSI는 통신을 원시 신호부터 애플리케이션 프로토콜까지 7개의 서로 다른 책임으로 분리합니다.
- TCP/IP는 이러한 책임을 실제 시스템에서 사용되는 4개의 실용적인 계층으로 압축합니다.
상세정보
아래에서 위로, OSI 계층은 다음과 같습니다:
L1 – 물리: 원시 전기 또는 광 신호를 전송합니다.
L2 – 데이터 링크: MAC 주소를 사용해 로컬 프레임 전달을 처리합니다.
L3 – 네트워크: 네트워크 간에 IP를 사용해 패킷을 라우팅합니다.
L4 – 전송: 신뢰성, 순서 보장, 포트 기반 다중화를 제공합니다.
L5 – 세션: 시스템 간 연결 상태를 유지합니다.
L6 – 표현: 데이터를 형식화, 인코딩, 압축, 암호화합니다.
L7 – 애플리케이션: HTTP, SMTP, FTP와 같은 사용자-facing 프로토콜을 정의합니다.
실제로 인터넷은 TCP/IP 모델을 사용합니다:
- 애플리케이션(OSI 5–7 포함)
- 전송(OSI 4)
- 인터넷(OSI 3)
- 링크(OSI 1–2)
OSI는 주로 개념적인 디버깅 및 교육 프레임워크입니다.
TCP/IP는 실제 네트워크를 구동하는 운영 아키텍처입니다.
OSI를 책임을 이해하기 위한 현미경이라고 생각하고 —
TCP/IP를 인터넷 전반에서 트래픽을 실제로 이동시키는 엔진이라고 생각하면 됩니다.
레이어를 통과하는 요청
요청을 보내면 데이터가 곧바로 네트워크로 점프하는 것이 아니라, OSI 스택을 따라 내려가면서 점차 감싸지고 준비됩니다.
메시지는 읽을 수 있는 텍스트로 시작합니다. 각 계층은 추가 메타데이터로 이를 감싸 아래로 전달합니다. 반대편에서는 계층들이 역순으로 이를 벗겨내며 — 원래의 HTTP 요청을 복원합니다.
- 각 레이어는 데이터를 아래로 전달하기 전에 자신만의 헤더나 변환을 추가하며, 이를 캡슐화라고 합니다.
- 목적지에서는 레이어들이 그 과정을 역순으로 수행합니다.
상세정보
웹페이지를 로드할 때 어떤 일이 일어나는지 생각해 보세요.
애플리케이션 레이어(L7) 는 GET /index.html 같은 HTTP 요청 메시지를 만듭니다.
프레젠테이션 레이어(L6) 는 TLS를 사용해 이를 암호화할 수 있습니다.
트랜스포트 레이어(L4) 는 데이터를 세그먼트로 나누고 신뢰성을 위해 TCP 헤더를 추가합니다.
네트워크 레이어(L3) 는 라우팅을 결정하기 위해 IP 헤더를 붙입니다.
데이터 링크 레이어(L2) 는 로컬 네트워크 내 전달을 위해 패킷을 프레임으로 감쌉니다.
마지막으로 물리 계층(L1) 은 모든 것을 전기 신호 또는 광 신호로 변환합니다.
각 레이어는 자신의 역할에 필요한 추가 정보를 데이터에 덧붙입니다. 이렇게 구조적으로 감싸는 과정을 캡슐화라고 합니다.
데이터가 목적지에 도달하면 이 과정은 역순으로 진행됩니다. 각 레이어는 자신의 헤더를 제거하고 남은 페이로드를 위로 전달하며, 최종적으로 애플리케이션이 원래 메시지를 받게 됩니다.
겉보기에는 단순한 요청처럼 보이지만, 실제로는 여러 추상화 계층을 거치며 정교하게 단계적으로 변환되는 것입니다.
계층 1: 물리
물리 계층은 원시 비트가 전기, 광학, 또는 무선 신호로 어떻게 표현되는지를 정의합니다.
구리
신호: 전압 변화
광섬유
신호: 빛 펄스
무선
신호: 전파
- L1은 매체, 커넥터, 신호 타이밍, 전송 특성을 다룹니다.
- 이 계층에서 데이터는 패킷이나 메시지가 아니라, 비트 수준의 신호일 뿐입니다.
- 물리적 문제는 상위 계층의 모든 통신을 차단할 수 있습니다.
상세정보
네트워킹은 결국 물리에 의존합니다. 구리 Ethernet 케이블은 전압 변화를 전송하고, 광섬유는 빛의 펄스를 전송하며, 무선 네트워크는 공기를 통해 전파를 전송합니다.
물리 계층은 전압 수준, 주파수 범위, 변조 방식, 비트 타이밍, 케이블 유형, 커넥터 형태, 최대 거리와 같은 엄격하고 측정 가능한 표준을 정의합니다. 이러한 규칙은 한 장치의 신호가 다른 장치의 하드웨어에서 올바르게 해석되도록 보장합니다.
이 계층에는 IP 주소도, 포트도, HTTP 요청도 없습니다 — 물리적 현상으로 표현된 1과 0의 흐름만 있을 뿐입니다.
일반적인 장애로는 끊어진 케이블, 불충분한 차폐, 장거리에서의 신호 감쇠, 전자기 간섭, 또는 네트워크 인터페이스 카드의 오작동이 있습니다. 신호 자체가 불안정하면, 상위 계층은 처리할 수 있는 일관된 비트를 받지 못합니다.
계층 2: 데이터 링크
데이터 링크 계층은 같은 로컬 네트워크에 있는 장치들 사이에서 프레임을 신뢰성 있게 전달하는 역할을 합니다.
스위치는 MAC 주소를 읽고 올바른 장치로 전달합니다.
- L2는 비트를 프레임으로 패키징하고 로컬 주소 정보를 추가합니다.
- 같은 네트워크 내의 장치를 식별하기 위해 MAC 주소를 사용합니다.
- 이 계층은 데이터가 상위 계층으로 올라가기 전에 전송 오류를 감지합니다.
상세정보
원시 비트가 Physical 계층에서 전송되면, Data Link 계층은 이를 프레임이라고 하는 구조화된 단위로 정리합니다. 프레임에는 로컬 전달에 필요한 제어 정보와 페이로드가 포함됩니다.
이 계층은 IP 주소 대신 MAC (Media Access Control) 주소를 사용하며, 이는 로컬 네트워크 세그먼트 내에서 네트워크 인터페이스를 고유하게 식별합니다. 스위치는 이 계층에서 동작하며 MAC 주소를 기준으로 프레임을 전달합니다.
Data Link 계층은 프레임 체크섬 같은 메커니즘을 사용해 기본적인 오류 감지도 수행합니다. 손상이 감지되면 프레임은 상위 계층에 도달하기 전에 폐기될 수 있습니다.
중요한 점은, L2는 같은 로컬 네트워크 내부에서만 통신을 처리한다는 것입니다(예: 가정, 사무실, 또는 데이터 센터 랙 내부). 더 넓은 Internet 전체를 통해 데이터가 어떻게 이동할지는 결정하지 않으며, 그 책임은 Network 계층에 있습니다.
레이어 3: 네트워크
네트워크 계층은 패킷이 여러 개의 상호 연결된 네트워크를 가로질러 목적지에 도달하는 방식을 결정합니다.
- L3는 논리적 주소를 할당하고 로컬 네트워크를 넘어서는 통신을 가능하게 합니다.
- 라우터는 목적지 IP 주소를 기준으로 패킷을 전달합니다.
- 이 계층은 신뢰성이나 애플리케이션 로직이 아니라 경로 선택에 초점을 맞춥니다.
상세정보
데이터 링크 계층이 단일 로컬 네트워크 내의 전달을 처리하는 반면, 네트워크 계층은 서로 다른 네트워크 간의 통신을 가능하게 합니다. 이 계층은 전역 라우팅을 위해 설계된 논리적 주소인 IP(Internet Protocol) 주소를 도입합니다.
패킷이 생성되면 네트워크 계층은 출발지와 목적지 IP 주소를 포함한 IP 헤더를 추가합니다. 라우터는 이 목적지 주소를 확인하고 라우팅 테이블을 사용해 다음 홉을 결정합니다. 각 라우터는 로컬 전달 결정을 내리며, 패킷을 최종 네트워크에 점점 더 가깝게 이동시킵니다.
네트워크 계층은 전달, 순서 보장, 오류 복구를 보장하지 않습니다. 이 계층의 역할은 단순히 패킷을 올바른 목적지 네트워크로 이동시키는 것입니다.
라우팅 테이블이 잘못 구성되었거나, 경로를 사용할 수 없거나, 이동 중 패킷이 드롭되면 상위 계층이 그 결과를 처리해야 합니다. L3는 신뢰성이 아니라 도달 가능성과 경로 선택에 관한 것입니다.
4계층: 전송
전송 계층은 데이터가 올바르게, 순서대로, 그리고 올바른 애플리케이션 프로세스에 전달되도록 보장합니다.
송신자
수신자
패킷 3은 한 번 손실된 뒤, 재전송되어 전달됩니다.
- L4는 데이터를 세그먼트로 나누고 목적지에서 다시 조립합니다.
- 포트 번호를 사용해 트래픽을 올바른 애플리케이션으로 전달합니다.
- TCP와 UDP 같은 프로토콜은 신뢰성 동작을 정의합니다.
상세정보
네트워크 계층은 패킷을 인터넷을 통해 이동시킬 수 있지만, 패킷이 손상 없이 또는 순서대로 도착한다고 보장하지는 않습니다. 전송 계층이 그 제어를 추가합니다.
**TCP (Transmission Control Protocol)**에서는 데이터가 세그먼트로 분할되고, 시퀀스 식별자로 번호가 매겨지며, 수신자가 확인 응답을 보내고, 손실되면 재전송됩니다. 이렇게 해서 웹 트래픽과 파일 전송에 적합한 신뢰성 있고 순서가 보장된 통신이 만들어집니다.
**UDP (User Datagram Protocol)**에서는 확인 응답이나 재전송 없이 데이터가 전송됩니다. 이 방식은 오버헤드와 지연 시간을 줄여 주며, 스트리밍이나 온라인 게임 같은 실시간 애플리케이션에 유용합니다.
전송 계층은 또한 포트 번호를 도입하여, 같은 장치에서 여러 애플리케이션이 동시에 통신할 수 있게 합니다. IP는 기기를 식별하고, 포트는 특정 서비스를 식별합니다.
요약하면, L4는 통신을 얼마나 엄격하게 제어할지 결정하고, 데이터가 수신 시스템의 올바른 소프트웨어 프로세스에 도달하도록 보장합니다.
레이어 5: 세션
세션 계층은 애플리케이션 간의 논리적 연결을 관리하며, 대화가 시작되고 유지되고 종료되는 방식을 제어합니다.
설정
인증
활성 대화
체크포인트
종료
- L5는 통신 세션을 설정, 유지, 종료합니다.
- 시스템 간의 대화 제어와 동기화를 조정합니다.
- 현대 네트워크에서는 이 기능의 많은 부분이 TCP 또는 애플리케이션에 의해 처리됩니다.
상세정보
Transport layer가 신뢰할 수 있는 전달을 제공한 뒤에도, 시스템은 여전히 대화 자체를 관리하는 방법이 필요합니다. Session layer는 통신 세션이 어떻게 생성되고, 유지되며, 종료되는지를 정의합니다.
여기에는 인증 교환, 세션 토큰, 재연결 로직, 그리고 긴 데이터 전송 중의 동기화 체크포인트 처리가 포함됩니다. 세션이 중단되면 복구 메커니즘을 통해 처음부터 다시 시작하지 않고도 알려진 상태에서 통신을 재개할 수 있습니다.
실제로 OSI Session layer는 대부분의 현대 인터넷 스택에서 명확하게 분리된 구현으로 존재하지 않습니다. 그 책임의 많은 부분은 TCP(연결 상태) 또는 HTTP 세션이나 인증 프레임워크 같은 애플리케이션 계층 프로토콜이 처리합니다.
비록 자주 추상화되어 보이지 않더라도, 이 개념은 중요합니다. 신뢰할 수 있는 전송만으로는 충분하지 않으며, 시스템은 시간에 따라 구조화된 대화도 관리해야 합니다.
레이어 6: 표현
표현 계층은 데이터가 포맷되고, 인코딩되고, 보호되도록 보장하여 두 시스템이 이를 동일한 방식으로 해석할 수 있게 합니다.
원시 데이터
구조화됨
압축됨
암호화됨
준비 완료
- L6는 데이터 포맷팅, 직렬화, 압축, 암호화를 처리합니다.
- 서로 다른 시스템이 데이터가 어떻게 표현되는지에 대해 합의하도록 보장합니다.
- 표준화된 인코딩이 없으면 통신은 읽을 수 없게 됩니다.
상세정보
두 시스템이 연결되어 있고 바이트를 안정적으로 주고받더라도, 그 바이트가 무엇을 의미하는지에 대해서는 여전히 합의해야 합니다. 표현 계층은 구조화된 데이터가 어떻게 인코딩되고 해석되는지를 정의합니다.
예를 들어 JSON, XML, Protocol Buffers 같은 직렬화 형식은 구조화된 객체가 바이트 스트림으로 어떻게 변환되는지를 정의합니다. 압축 알고리즘도 대역폭 사용을 줄이기 위해 이 계층에서 동작할 수 있습니다.
TLS와 같은 암호화 메커니즘은 읽을 수 있는 데이터를 전송 전에 안전한 암호문으로 변환하고, 목적지에서 그 과정을 되돌리기 때문에 논리적으로 이 계층에 속합니다.
공유된 포맷팅 및 보안 표준이 없으면, 두 시스템은 데이터를 성공적으로 주고받더라도 그 구조를 완전히 잘못 해석할 수 있습니다. 표현 계층은 데이터가 애플리케이션 로직에 도달하기 전에 표현 방식의 일관성을 보장합니다.
레이어 7: 애플리케이션
애플리케이션 계층은 사용자에게 보이는 서비스를 직접 지원하는 통신의 규칙과 의미를 정의합니다.
애플리케이션
웹페이지 리소스 요청
서비스
- L7은 HTTP, FTP, SMTP, DNS 같은 프로토콜을 정의합니다.
- 무엇이 요청되는지와 응답이 어떤 구조여야 하는지를 명시합니다.
- 이 계층은 전달과 신뢰성을 위해 전적으로 하위 계층에 의존합니다.
상세정보
애플리케이션 계층은 통신에 의미가 부여되는 곳입니다. 이 계층은 시스템이 무엇을 달성하려는지 — 웹페이지를 가져오기, 이메일 보내기, 파일 전송하기, 도메인 이름 해석하기 — 를 설명하는 프로토콜 규칙을 정의합니다.
예를 들어, HTTP는 GET과 POST 같은 요청 메서드, 200이나 404 같은 상태 코드, 그리고 헤더 구조를 정의합니다. 이러한 규칙은 비트가 물리적으로 어떻게 이동하는지가 아니라, 의도와 기대 동작을 설명합니다.
L7이 전송 메커니즘을 처리하지 않는다는 점을 이해하는 것이 중요합니다. L7은 하위 계층(Transport, Network, Data Link, Physical)이 네트워크 전반에서 데이터를 신뢰성 있게 이동시킬 것이라고 가정합니다.
요약하면, 애플리케이션 계층은 통신 로직과 의미를 정의합니다. 사용자의 동작을 구조화된 프로토콜 메시지로 변환하고, 나머지 스택이 이를 인터넷 전반에 전달합니다.
OSI가 디버깅에 도움이 되는 방식
OSI 모델은 문제를 특정 계층으로 좁혀서 실패 원인을 분리할 수 있게 해주는 체계적인 방법을 제공합니다.
아래부터 시작하세요. 아래 계층이 통과해야만 위로 이동하세요.
- 문제를 계층별로 분류하면 디버깅이 더 쉬워집니다.
- 각 증상은 보통 스택 내의 특정 책임과 연결됩니다.
- 계층적 사고는 무작위 추측을 막고 문제 해결 시간을 줄여줍니다.
상세정보
네트워크 시스템에서 무언가가 실패하면, 그 실패는 거의 항상 특정 계층에 속합니다.
케이블이 빠졌거나 Wi‑Fi 신호가 약하다면, 이는 Physical (L1) 문제입니다.
장치들이 같은 LAN 내에서 통신할 수 없다면, 이는 Data Link (L2) 문제일 수 있습니다.
패킷이 다른 네트워크에 도달하지 못한다면, 이는 Network (L3) 라우팅 문제를 가리킵니다.
연결이 계속 끊기거나 데이터가 순서대로 도착하지 않는다면, 이는 Transport (L4) 문제를 시사합니다.
사용자가 500 오류나 잘못된 응답을 받는다면, 문제는 Application (L7) 수준에 있을 가능성이 큽니다.
시스템을 하나의 블랙박스로 보는 대신, OSI 모델은 머릿속 체크리스트를 제공합니다. 각 단계에서 가정을 확인하면서 계층별로 하나씩 점검해 나갑니다.
이처럼 구조화된 접근은 잡음을 줄이고, 불필요한 변경을 막으며, 장애를 진단할 때 대규모 분산 시스템도 관리 가능하게 만들어 줍니다.
질문 섹션
1 / 5