네트워크 통신은 여러 단계의 복잡한 과정을 거치며, 이를 표준화하고 이해를 돕기 위해 계층형 모델을 사용합니다. 대표적인 모델로 OSI 7계층 참조 모델과 TCP/IP 모델이 있습니다.
OSI(Open Systems Interconnection) 모델은 ISO(국제표준화기구)에서 개발한 개념적 참조 모델입니다. 네트워크 통신의 전 과정을 7개의 추상화된 계층으로 나누어 설명하며, 각 계층은 독립적인 기능을 수행합니다. 이는 통신 과정을 모듈화하여 문제 해결 및 표준 개발을 용이하게 합니다.
L7 (Application Layer - 응용 계층):
사용자가 네트워크 서비스에 접근할 수 있도록 인터페이스를 제공합니다. (예: HTTP, FTP, SMTP, DNS)
L6 (Presentation Layer - 표현 계층):
데이터의 형식을 변환(Translation), 암호화(Encryption), 압축(Compression)을 수행하여 응용 계층이 데이터를 올바르게 해석할 수 있도록 보장합니다. (예: SSL/TLS, JPEG, ASCII)
L5 (Session Layer - 세션 계층):
두 응용 프로그램 간의 통신 세션을 생성, 관리 및 종료하는 역할을 합니다. 또한, 통신 중단 시 복구를 위한 동기화 지점(Checkpoint)을 설정합니다. (예: NetBIOS)
L4 (Transport Layer - 전송 계층):
송신자와 수신자 간의 End-to-End 통신을 담당합니다. 데이터 전송의 신뢰성을 보장(TCP)하거나, 신속성을 우선(UDP)합니다. 포트 번호를 사용하여 데이터를 정확한 응용 프로그램에 전달하며, 흐름 제어 및 오류 제어를 수행합니다. (예: TCP, UDP)
L3 (Network Layer - 네트워크 계층):
데이터 패킷을 송신지에서 목적지까지 전달하는 최적 경로를 결정(Routing)합니다. 논리적 주소인 IP 주소를 사용하여 장치를 식별하고, 서로 다른 네트워크 간의 통신을 중개합니다. (장비: 라우터)
L2 (Data Link Layer - 데이터 링크 계층):
동일 네트워크(Local Area Network) 내의 장치 간 데이터 전송을 담당합니다. 물리적 주소인 MAC 주소를 사용하여 프레임(Frame)을 전달하며, 물리 계층에서 발생할 수 있는 오류를 검출하고 수정합니다. (장비: 스위치)
L1 (Physical Layer - 물리 계층):
데이터를 0과 1의 비트(Bit) 신호로 변환하여 케이블, 무선 등 물리적 매체를 통해 실제로 전송합니다. (장비: 허브, 리피터, 케이블)
TCP/IP 모델은 현재 인터넷 표준으로 사용되는 실용적인 프로토콜 모음(Suite)입니다. OSI 모델보다 먼저 개발되었으며, 4개의 계층으로 구성됩니다.
4. Application Layer (응용 계층):
OSI 5, 6, 7계층의 기능을 통합하여 담당합니다. (HTTP, FTP, DNS 등)
3. Transport Layer (전송 계층):
OSI 4계층과 동일한 역할을 수행합니다. (TCP, UDP)
2. Internet Layer (인터넷 계층):
OSI 3계층과 동일한 역할을 수행합니다. (IP, ICMP)
1. Network Access Layer (네트워크 접근 계층):
OSI 1, 2계층의 기능을 통합하여 담당합니다. (Ethernet, Wi-Fi)
PDU(프로토콜 데이터 단위)는 각 네트워크 계층에서 처리되는 데이터의 단위를 지칭합니다. 데이터는 상위 계층에서 하위 계층으로 내려가면서 각 계층의 헤더 정보가 추가되는 캡슐화(Encapsulation) 과정을 거칩니다.
사설 IP를 사용하는 기기가 외부와 통신하기 위해서는 L3 장비인 라우터(Router)의 NAT(Network Address Translation) 기능을 통해, 사설 IP를 공인 IP로 변환하는 과정이 필요합니다.
라우터는 L3(네트워크 계층)에서 동작하며, IP 주소를 기반으로 서로 다른 네트워크 간의 데이터 패킷 전송 경로를 결정(Routing)합니다.
L4(전송 계층)는 데이터 전송 방식을 결정하며, TCP와 UDP가 대표적입니다.
L4 스위치는 로드 밸런서의 일종으로, L4(전송 계층)의 정보(IP 주소, 포트 번호)를 기반으로 트래픽을 여러 대의 서버로 분산시킵니다.
이는 L7(응용 계층)에서 동작하는 리버스 프록시와 유사한 역할을 수행하지만, 리버스 프록시는 더 상위 계층의 정보(HTTP 헤더, URL 등)를 분석하여 더 지능적인 분배(Content-Based Routing)가 가능합니다. 또한 SSL 종료(Termination), 캐싱 등의 추가 기능을 수행합니다.
L7 스위치(ADC, Application Delivery Controller)는 L7 정보를 기반으로 트래픽을 분산하는 고성능 로드 밸런서입니다.
웹 방화벽은 L7에서 동작하는 보안 장비입니다. 일반적인 방화벽(L3/L4)과 달리, 웹 애플리케이션에 특화된 공격(예: SQL Injection, XSS)의 패턴을 탐지하고 차단합니다.
DMZ(비무장지대)는 내부 네트워크(LAN)와 외부 인터넷(WAN) 사이에 위치하는 격리된 네트워크 망입니다. 웹 서버와 같이 외부에 공개해야 하는 서비스를 DMZ에 배치하여, 해당 서버가 침해당하더라도 내부의 중요 자산(DB 서버 등)을 보호하는 보안 구조입니다.
RAID(Redundant Array of Independent Disks)는 여러 개의 물리적 디스크를 하나의 논리적 단위로 묶어 사용하는 스토리지 기술입니다. 목적에 따라 데이터 분산(Striping)을 통한 성능 향상, 또는 데이터 이중화(Redundancy)를 통한 안정성 향상을 구현합니다.
NoSQL은 유연한 스키마와 수평적 확장이 용이한 비관계형 데이터베이스 시스템을 통칭합니다.
Key-Value Type:
데이터를 고유한 키(Key)와 값(Value)의 쌍으로 저장하는 단순한 구조입니다. 특정 키에 해당하는 값을 빠르게 조회하는 데 특화되어 있습니다. (예: Redis)
Document Type (문서형):
데이터를 JSON, BSON 또는 XML과 같은 문서 형식으로 저장합니다. 각 문서는 고유한 키를 가지며, 계층적인 데이터 구조를 문서 내에 저장할 수 있어 스키마 유연성이 높습니다. (예: MongoDB)
Column-Family Type (컬럼 패밀리형):
데이터를 행(Row) 단위가 아닌, 컬럼 패밀리(Column Family)라는 열의 그룹 단위로 저장합니다. 대규모 데이터의 분산 저장 및 빠른 쓰기/조회에 유리합니다. (예: Apache Cassandra, Apache HBase)
Graph Type (그래프형):
데이터를 노드(Node), 엣지(Edge), 속성(Property)을 사용해 그래프 구조로 표현합니다. 데이터 간의 복잡한 관계를 효율적으로 저장하고 질의하는 데 특화되어 있습니다. (예: Neo4j, ArangoDB)
전통적인 3-Tier 아키텍처는 컴퓨팅(서버), 네트워크, 스토리지(SAN)가 물리적으로 분리된 구조입니다. 이 구조는 서버가 스토리지의 데이터를 읽고 쓸 때 반드시 네트워크를 통해 스토리지 컨트롤러를 거쳐야 하므로, 이 구간에서 병목 현상(Bottleneck)이 발생할 수 있습니다.
HCI (Hyper-Converged Infrastructure)는 이러한 문제를 해결하기 위해, 개별 장비(노드)에 컴퓨팅(서버 가상화)과 스토리지(SDS) 자원을 하나의 장비에 통합한 2-Tier 아키텍처입니다.
SDDC(소프트웨어 정의 데이터 센터)는 HCI를 포함하는 더 상위의 개념으로, 데이터 센터의 모든 인프라 구성 요소를 가상화하고 소프트웨어로 제어 및 자동화하는 것을 의미합니다.
SDDC의 핵심은 하드웨어 종속성에서 벗어나 모든 자원을 API로 관리하고, 자동화된 프로비저닝 및 운영을 통해 민첩성과 효율성을 극대화하는 것입니다.
CSP(Cloud Service Provider)가 제공하는 클라우드 서비스는 관리 범위에 따라 3가지로 분류됩니다.
IaaS (Infrastructure as a Service):
CSP가 인프라(서버, 스토리지, 네트워크) 자원만 가상화하여 제공합니다. 사용자는 OS, 미들웨어, 애플리케이션 등 모든 소프트웨어를 직접 설치하고 관리합니다. (예: AWS EC2, GCP Compute Engine)
PaaS (Platform as a Service):
CSP가 인프라뿐만 아니라 OS, 런타임(Java, Python 등)까지 포함된 플랫폼을 제공합니다. 사용자는 자신의 애플리케이션 코드와 데이터만 관리합니다. (예: Heroku, AWS Elastic Beanstalk)
SaaS (Software as a Service):
CSP가 완성된 소프트웨어 애플리케이션 자체를 서비스로 제공합니다. 사용자는 별도 설치나 관리 없이 즉시 해당 소프트웨어를 구독하여 사용합니다. (예: Google Workspace, Salesforce)