Skip to content

woojin-choe/SystemProgramming-ProxyServer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧩 SystemProgramming-ProxyServer-KW

C 기반 리눅스 환경에서 다중 프로세스와 세마포어를 활용해 구현한 HTTP Proxy Server입니다.
실제 브라우저 요청을 중계하며, 캐시 시스템과 로그 기록, 시그널 및 동기화 처리까지 포함합니다.

📌 주요 기능

  • 🔌 소켓 통신 기반 Proxy Server

    • 클라이언트의 HTTP 요청 수신 및 웹 서버로 전송
    • 서버 응답을 클라이언트로 전달
  • 📁 캐시 디렉토리 구조 및 SHA1 해싱

    • URL을 SHA1으로 해싱하여 캐시 디렉토리 생성
    • HIT 시 캐시 파일 전송, MISS 시 웹 요청 후 캐시 저장
  • 📝 로그 시스템

    • 요청 URL, 시각, 캐시 HIT/MISS 여부 등을 로그 파일에 기록
    • 형식: [Miss]www.example.com-[2025/05/01, 13:40:10]
  • 👥 다중 프로세스 처리 (fork())

    • 클라이언트마다 자식 프로세스 생성 및 요청 병렬 처리
    • SIGCHLD 시그널로 좀비 프로세스 방지
  • ⏱️ 시그널 및 타임아웃 처리

    • alarm() + SIGALRM을 활용한 10초 타임아웃 기능
  • 🛡️ 세마포어를 이용한 동기화

    • 캐시 및 로그 접근 시 임계 구역 보호

🖥️ 실행 환경

  • OS: Ubuntu 20.04 LTS (64-bit)
  • Language: C
  • Tools: GCC, Makefile, SHA1, vi/vim

📂 디렉토리 구조 예시

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors