hhkb
네트워크

네트워크이론_01_네트워크 기초 이론

작성자 : Heehyeon Yoo|2025-10-31
# 네트워크# OSI# TCP/IP# DNS# Web

1. 네트워크를 구성하는 질서: 계층, 캡슐화, 모드

네트워크 통신의 중심에는 OSI 7계층 모델이 있다. 이는 통신 과정을 7개의 독립된 계층으로 추상화한 개념 모델로, 각 계층은 하위 계층의 기능이 올바르게 작동한다는 전제 위에 성립하는 '존립에 대한 의존' 관계를 가진다.
프로토콜 예시프로토콜 예시

  • L7 (Application): HTTP, DNS 및 웹 프록시 등 사용자와 직접 상호작용
  • L6 (Presentation): 데이터 형식화, 암호화
  • L5 (Session): 애플리케이션 간의 세션 관리
  • L4 (Transport): TCP/UDP를 통한 종단 간 데이터 전송 (Port 식별자 사용, L4 부하분산 등)
  • L3 (Network): IP를 통한 네트워크 간 경로 설정 (Router, IP 식별자 사용)
  • L2 (Data Link): MAC 주소를 통한 로컬 네트워크 내 전송 (Switch, MAC 식별자 사용)
  • L1 (Physical): 케이블, 전기 신호를 통한 물리적 전송

이 구조는 운영체제의 유저 모드(User Mode)와 커널 모드(Kernel Mode)와도 연결된다. 웹 브라우저 같은 L7 애플리케이션은 유저 모드에서, L4의 TCP/IP 스택이나 L2의 드라이버는 커널 모드에서 작동하며 시스템 리소스를 제어한다.
데이터가 L7에서 L1으로 내려가는 과정을 '인캡슐레이션(Encapsulation)'이라 부른다. 각 계층은 데이터에 자신의 제어 정보(헤더)를 붙이며, 이 과정에서 데이터는 특정 크기 단위로 나뉜다. (VPN 캡슐화 기술에서도 이 원리가 적용된다.)
imageimage캡슐화&역캡슐화캡슐화&역캡슐화

  • 스트림(Stream)은 연속적인 데이터 자체를 의미하며, TCP는 이 스트림을 L4에서 '세그먼트(Segment)' 단위로 나눈다. 이 때 최대 크기는 MSS(Maximum Segment Size, 보통 1460바이트)이다.
  • '패킷(Packet)'은 L3에서 IP 헤더가 붙은 단위이며, 네트워크 전송의 최대 단위인 MTU(Maximum Transfer Unit, 보통 1500바이트)의 제한을 받는다.
  • '프레임(Frame)'은 L2에서 MAC 헤더가 붙은 단위이다.

목적지에 도달하면 L1부터 L7까지 역순으로 헤더를 제거하는 '디캡슐레이션(Decapsulation)'이 일어난다.

2. 네트워크 구성 요소 및 작동 최소 조건 (DHCP)

네트워크는 인터넷에 연결된 컴퓨터(Host) 또는 네트워크 이용 주체(End-point)들과, 이들을 연결하는 인프라 장비로 구성된다. 주요 장비로는 MAC 주소 기반으로 전송하는 스위치(Switch)와 IP 주소 기반으로 경로를 선택하는 라우터(Router)가 있다. 네트워크 범위는 LAN(집 등)과 WAN(논리적 큰 망)으로 구분되며, 가정에서는 공유기의 NAT 기능을 사용하기도 한다.
장치가 네트워크와 통신하려면 4가지 핵심 정보가 필요하다.

  1. IP 주소: 네트워크상의 고유한 논리적 식별자.
  2. 서브넷 마스크: 네트워크와 호스트를 구분하여 네트워크 범위를 정의.
  3. 게이트웨이 IP: 외부 네트워크로 나가기 위한 라우터의 주소.
  4. DNS 서버: 도메인 이름을 IP 주소로 변환해주는 서버.

이 네 가지가 없으면 인터넷 접속은 불가능하다. 다행히 DHCP(Dynamic Host Configuration Protocol)가 이 과정을 자동화한다. 장치가 네트워크에 접속하면 DHCP 서버에 설정을 요청하고, 서버는 가용 IP, 마스크, 게이트웨이, DNS 정보를 할당(임대)해준다.

3. 목적지를 찾는 과정: ARP의 역할

IP 주소(L3)가 논리적 주소라면, 실제 로컬 네트워크(L2) 통신에는 MAC 주소라는 물리적 하드웨어 주소가 필요하다. ARP(Address Resolution Protocol)는 IP 주소에 대응하는 MAC 주소를 알아낼 때 사용하는 프로토콜이다.

장치가 로컬 네트워크의 특정 IP(예: 게이트웨이 IP)와 통신해야 할 때, 해당 IP의 MAC 주소를 모르면 ARP Request를 네트워크 전체에 브로드캐스트한다. ("IP 192.168.0.1을 가진 사람은 누구인가? MAC 주소를 알려달라.")

해당 IP를 가진 장치가 자신의 MAC 주소를 담아 ARP Reply로 응답하면, 발신자는 이 정보를 'ARP 테이블'에 캐시(저장)해두고 다음부터는 브로드캐스트 없이 직접 통신한다.

4. 연결성 확인: Ping과 ICMP

네트워크 진단의 가장 기본은 'Ping' 유틸리티다. Ping은 특정 호스트와의 연결 여부 및 왕복 시간(RTT, Round Trip Time)을 측정하기 위해 사용된다.

Ping은 ICMP(Internet Control Message Protocol)라는 L3 프로토콜을 기반으로 동작한다. ICMP는 네트워크 진단 및 오류 메시지 전달을 위한 프로토콜이다. 다만, ICMP는 DoS 공격에 악용될 수 있어 보안상의 이유로 방화벽에서 차단하는 경우도 많다.

5. 데이터가 흐르는 두 가지 방식: L4 (Transport)

L4(전송 계층)에서는 데이터 전송 방식에 따라 크게 TCP와 UDP로 나뉜다.

  • TCP (Transmission Control Protocol): 연결 지향형 프로토콜이다. 데이터를 전송하기 전에 상대방과 가상 연결을 수립한다. 데이터가 순서대로, 유실 없이 전달되는 것을 보장(신뢰성)하며, 수신 측의 수용 버퍼 상태에 따라 전송을 조절한다. 웹 브라우징(HTTP), 파일 전송(FTP), 이메일(SMTP) 등 신뢰성이 중요한 통신에 사용된다.
  • UDP (User Datagram Protocol): 비연결형 프로토콜이다. 연결 설정 없이 수신 측 상태와 관계없이 데이터를 빠르게 전송한다. 순서를 보장하지 않고 재전송 기능이 없어 신뢰성은 낮지만, 실시간 영상 스트리밍이나 온라인 게임 등 속도가 더 중요한 통신에 적합하다.

TCP/UDP 헤더는 모두 출발지/목적지 포트 번호를 포함한다. 사용 가능한 포트 번호는 1 ~ 65534이며 (0과 65535는 예약됨), HTTP(80)처럼 잘 알려진 포트(Well-known Port)가 있다. TCP 헤더는 신뢰성을 위한 복잡한 제어 로직(순서 제어, 흐름 제어 등)을 추가로 포함하지만, UDP 헤더는 구조가 매우 단순하다.

6. TCP의 신뢰성과 장애 대응

TCP의 신뢰성은 복잡한 제어 로직에서 나온다. 이로 인해 다양한 네트워크 장애 상황에 대처할 수 있다.

  • 3-Way & 4-Way Handshake: TCP는 3-Way Handshake (SYN → SYN+ACK → ACK) 과정을 통해 신뢰할 수 있는 양방향 연결을 설정한다. 클라이언트가 Seq 1000을 담아 SYN을 보내면, 서버는 자신의 Seq 4000과 상대방의 Ack 1001을 담아 SYN+ACK로 응답하고, 클라이언트는 서버의 Ack 4001을 담아 ACK를 보내 연결을 확립한다. 연결을 끊을 때는 4-Way Handshake (FIN+ACK → ACK → FIN+ACK → ACK)를 통해 양측이 모든 데이터를 수신했음을 확인하고 안전하게 종료하며, 마지막 ACK를 보낸 클라이언트는 TIME_WAIT 상태를 유지한다.
  • 재전송 및 타이머 (RTO): 패킷이 손실(Packet Loss)되면 ACK가 오지 않고, TCP는 재전송 타이머(RTO)에 따라 재전송(Re-transmission)을 시도한다. 이 타이머는 기본 1초에서 2초, 4초, 8초, 16초 등으로 지연 시간이 증가하며, 보통 5회까지 시도한다. 이 때문에 잠시 LAN 케이블이 분리되어도 연결이 복구될 수 있다.
  • 기타 장애 상황: 패킷이 서로 다른 경로로 전송되어 순서가 뒤바뀌어 도착(Out-of-Order), 또는 수신 측 애플리케이션 지연 등으로 수신 버퍼가 가득 차 전송을 일시 중지하는(Zero Window) 상황 등이 있으며 TCP는 이에 대응한다.

7. IP 주소 체계와 이름 해석 (DNS)

  • IP 주소 구조: IPv4는 32비트 주소 체계로, 8비트씩 4덩어리로 표현된다. (예: 192.168.0.1)
  • 서브넷과 CIDR: IP 주소는 서브넷 마스크와의 AND 연산을 통해 네트워크 ID와 호스트 ID로 구분된다. 예를 들어, '192.168.0.0/24' 같은 CIDR 표기법은 상위 24비트가 네트워크 ID임을 의미한다.
  • 예약 주소: 네트워크 주소(.0)와 브로드캐스트 주소(.255)는 일반적으로 호스트에 할당하지 않으며, .1은 게이트웨이 주소로 자주 사용된다.
  • DNS (Domain Name System): IP 주소는 기계가 기억하기는 좋지만 사람이 사용하기는 어렵다. DNS는 'google.com' 같은 도메인 이름을 IP 주소로 변환해주는 거대한 '분산형 데이터베이스'이자 네임 시스템이다. 도메인 영역(Zone)별로 관리 주체가 다르며, 트리 구조로 구성되어 유일성(Unique)이 보장된다.
  • URL vs URI: 웹 주소를 표현할 때는 URI(Uniform Resource Identifier, 리소스를 식별하는 모든 형식)라는 통합 식별자를 사용한다. 우리가 흔히 쓰는 'https://google.com' 형식은 리소스의 위치를 나타내는 URL(Uniform Resource Locator)로, 이는 URI의 하위 개념이다.

8. HTTP와 웹 시스템 아키텍처

HTTP (HyperText Transfer Protocol)는 HTML 문서 전송을 위해 만들어진 L7 응용 계층 프로토콜이다. 클라이언트의 요청(Request)과 서버의 응답(Response) 구조로 작동하며, GET(리소스 요청), POST(폼 데이터 제출) 등의 메서드를 사용한다.

우리가 웹사이트에 접속할 때, 이 모든 요소가 함께 작동한다.

  1. 클라이언트 (UI, 브라우저): HTML/CSS/JS로 구성되어 사용자의 입력을 받고 시각적으로 표현한다. JavaScript가 이벤트(예: 버튼 클릭)를 처리하여 HTTP 요청을 생성한다.
  2. 인터넷과 통신 (HTTP/HTTPS): 클라이언트와 서버 간의 데이터 전달 통로다. HTTP는 무상태(stateless) 프로토콜이지만, 쿠키를 통해 세션을 유지한다.
  3. 서버 (Web Server & WAS): 서버는 요청을 분석하고 처리한다.
    • Web Server (정적 자원): Nginx, Apache 등. HTML, CSS, 이미지 같은 정적 자원을 처리한다.
  • WAS (Web Application Server): Tomcat 등. JSP, PHP 등 동적 처리를 담당하며, 부하분산의 대상이 되기도 한다.
  1. 프레임워크 (Spring 등): WAS 위에서 동작하며, MVC(Model-View-Controller) 구조, DI/IOC 등을 지원하여 비즈니스 로직 구현을 돕는다.
  2. DB 및 데이터 처리: RDB(MySQL 등)가 사용자 데이터, 게시물 등을 저장한다. WAS는 JDBC/ODBC 같은 드라이버를 통해 SQL(예: SELECT * FROM users WHERE id=?)을 실행하고 결과를 받아 HTML로 생성, 응답한다.