Server (Proxy, echo, Tiny)

김뉴오·2025년 5월 21일

키워드

목록 보기
11/15
post-thumbnail

프록시 (Proxy)

프록시(Proxy)는 클라이언트와 서버 사이에 위치하는 중간 서버로,

클라이언트의 요청을 서버에 대신 전달하고, 서버의 응답을 클라이언트에 다시 전달
직접 서버에 접근하지 않고, 프록시 서버를 경유함으로써 다음과 같은 효과를 얻을 수 있음

  • 익명성 보장
  • 콘텐츠 필터링
  • 캐싱을 통한 속도 향상
  • 트래픽 분석 및 기록
  • 보안 강화

프록시의 종류와 특징

정방향 프록시 (Forward Proxy)

  • 클라이언트 쪽에 설치
  • 내부 사용자가 외부 인터넷에 접속할 때 프록시를 거쳐서 서버에 접근
  • 회사, 학교, 공공기관 등에서 주로 사용
  • 접근 통제인터넷 사용 기록 관리에 활용

동작 과정

클라이언트 → 프록시 서버 → 인터넷 서버

주요 기능

  • 특정 사이트 접속 차단
  • 캐싱을 통한 반복 요청 속도 향상
  • 내부 IP 숨기기
  • 인터넷 사용 내역 로깅

역방향 프록시(Reverse Proxy)

역방향 프록시 동작 방식

  • 일반적인 통신

클라이언트 → (직접 연결) → 웹 서버

클라이언트가 직접 웹 서버에 연결해서 응답을 받음

서버의 IP와 위치를 클라이언트가 알 수 있음

  • 역방향 프록시 통신

클라이언트 → 역방향 프록시 → 웹 서버

  • 클라이언트는 오직 역방향 프록시 서버와만 통신
  • 실제 웹 서버의 IP, 위치, 존재를 클라이언트가 절대 모름
  • 프록시 서버가 클라이언트 요청을 대신 받아서 실제 서버로 전달하고, 응답도 받아 다시 클라이언트에게 전달

클라이언트는 실제 서버와 직접 통신할 일이 없음

필요성

이유설명
보안내부 서버 IP와 네트워크 구조 노출 방지
로드밸런싱여러 대 서버로 트래픽 분산
캐싱자주 쓰는 콘텐츠는 프록시가 캐싱해서 빠르게 응답
SSL 암복호화 처리클라이언트와 SSL 연결은 프록시가 하고, 내부 서버는 HTTP로 통신
DDoS 방어공격을 프록시가 먼저 받아내서 서버 보호

프록시의 주요 기능

기능설명
접근 통제특정 사이트 접속 차단, IP 필터링, 인증 절차
캐싱자주 요청되는 콘텐츠 저장 후 재사용하여 트래픽 절감
익명성사용자의 원 IP 숨기고, 프록시 서버의 IP로 대체
트래픽 모니터링사용자의 접속 로그와 트래픽 분석
로드밸런싱다수의 서버에 트래픽 분산 (역방향 프록시)

프록시와 VPN의 차이

구분프록시 (Proxy)VPN (Virtual Private Network)
동작 위치애플리케이션 또는 네트워크 설정운영체제 전체 또는 라우터
트래픽 암호화기본 없음 (HTTPS 프록시 제외)전체 트래픽 암호화
적용 범위특정 프로그램이나 브라우저 트래픽만전체 디바이스 트래픽
익명성 수준중간 IP 우회 (부분적인 익명성)원 IP 완전 숨김 가능
사용 목적콘텐츠 필터링, 캐싱, IP 우회보안 통신, 검열 우회, 개인정보 보호
대표 사용처회사, 학교, CDN, 캐시 서버원격근무, 민감정보 보호, 검열 회피

프록시를 반드시 사용하는 상황

상황이유
회사/학교 네트워크 관리직원/학생의 인터넷 사용을 통제하고 사용 로그 기록
CDN 서비스 (Cloudflare, Akamai)콘텐츠 캐싱, 서버 앞단 보호, DDoS 공격 방어
보안 테스트 환경웹 트래픽을 가로채고 분석하여 보안 취약점 점검
웹 캐시 서버자주 요청되는 콘텐츠를 미리 저장해 네트워크 트래픽 감소
국가 검열 시스템특정 사이트 접속 차단 및 접속 내역 기록

실무에서 자주 사용하는 프록시 서버

  • Squid
    • 웹 필터링, 캐싱 서버로 많이 활용
    • 정방향 프록시 환경 구축 가능
  • Nginx
    • 고성능 웹 서버
    • 역방향 프록시와 로드 밸런싱 기능 제공
    • SSL Termination, API Gateway 역할
  • Cloudflare
    • 글로벌 CDN, DDoS 방어, SSL 제공
    • 전 세계에 분산된 엣지 서버로 콘텐츠 캐싱
    • 모든 트래픽을 역방향 프록시로 우회 처리

서버 입장에서 프록시 서버의 단점

  • 클라이언트 IP 파악이 어려워짐
  • 보안 로그 및 통계 수집에 방해
  • 악의적인 프록시 서버로 트래픽 조작 가능성

서버 운영자는 트래픽 출처를 정확히 확인하기 위해 X-Forwarded-For 헤더Real IP 헤더를 활용해 원래 클라이언트 IP를 추적


echo 서버

  • 클라이언트가 보낸 메시지를 그대로 다시 돌려보내는 서버

동작 순서

  1. 서버 소켓 생성 (socket())
  2. 소켓에 주소 할당 (bind())
  3. 연결 대기 (listen())
  4. 클라이언트 접속 수락 (accept())
  5. 데이터 수신 (read())
  6. 받은 데이터를 그대로 다시 전송 (write())
  7. 연결 종료 (close())

용도

  • 네트워크 프로그램의 데이터 송수신 테스트용
  • 서버-클라이언트 간 연결 확인

Tiny 서버

  • HTTP 요청을 받아서 정적/동적 컨텐츠를 클라이언트로 전송하는 간단한 웹 서버

주요 특징

  • 최소한의 기능만 가진 웹 서버
  • 정적 컨텐츠, 동적 컨텐츠 처리 가능

동작 순서

  1. 서버 소켓 생성 (socket())
  2. 소켓에 주소 할당 (bind())
  3. 연결 대기 (listen())
  4. 클라이언트 접속 수락 (accept())
  5. 클라이언트의 HTTP 요청 받기 (read())
  6. 요청 URL 파싱
  7. 정적/동적 컨텐츠 판별
  8. 정적 컨텐츠: 파일 읽어서 전송
    동적 컨텐츠: CGI 프로그램 실행 결과 전송
  9. 연결 종료 (close())

목적

  • 웹 서버의 기본 구조 학습
  • HTTP 프로토콜 이해
  • 소켓, 파일 입출력, 프로세스 생성, 문자열 처리 학습

참고- 우리가 평소 사용하는 서버는?

주로 접속하는 서버

  • 웹 서버 (Web Server)
    : HTML, 이미지 같은 정적 콘텐츠 또는 API 응답을 제공

주요 서버 종류 정리

서버 이름설명
웹 서버 (Web Server)HTML, 이미지 같은 정적 콘텐츠 또는 API 응답을 제공하는 서버
애플리케이션 서버 (Application Server)서버 내부에서 프로그램을 실행해서 동적인 데이터를 만들어주는 서버
DB 서버 (Database Server)데이터베이스를 운영하면서 데이터를 저장하고 조회해주는 서버
프록시 서버 (Proxy Server)중간에서 통신을 중계하거나 우회하는 서버
리버스 프록시 서버 (Reverse Proxy Server)외부 요청을 받아서 실제 웹 서버로 연결해주는 중계 서버
DNS 서버도메인 이름 → IP 주소로 변환해주는 서버

실제 웹사이트 접속 시 동작 예시

  1. DNS 서버도메인 주소IP 주소 변환
  2. 프록시 서버/리버스 프록시 서버 중계
  3. 웹 서버가 HTML, CSS, JS 파일 제공
  4. 애플리케이션 서버가 동적 데이터 생성
  5. DB 서버가 데이터 조회 및 저장
  6. 브라우저에 최종 결과 표시
profile
Bello! NewOld velog~

0개의 댓글