[TIL] HTTP : The Definitive Guide "p475 ~ p482"

시윤·2026년 5월 15일

[TIL] Two Pages Per Day

목록 보기
161/162
post-thumbnail

Chapter 20. Redirection and Load Balancing

(해석 또는 이해가 잘못된 부분이 있다면 댓글로 편하게 알려주세요.)


✏️ 요약


CARP (Cache Array Routing Protocol)

  • Microsoft와 Netscape Communication이 제안한 표준

  • 프록시 서버 묶음을 하나의 논리적인 캐시로 표현하기 위한 방식

  • CARP vs ICP

    • ICP (Internet Cache Protocol) : 한 캐시가 동일한 계층의 캐시 집합에서 콘텐츠를 찾을 수 있도록 하는 프로토콜 (MISS가 발생하면 부모 프록시로 전달)
      • 여러 캐시에 콘텐츠 미러링 -> 웹 오브젝트에 접근할 수 있는 통로가 여러 개

    • CARP : 문서가 여러 서버에 분산되어 있고 그 중 하나의 서버와 상호작용할 수 있게 하는 프로토콜
      • URL에 해시함수 적용 -> 특정 서버에만 콘텐츠 저장
      • 각 프록시 서버에 폴링하지 않고 한 번의 lookup으로 객체 조회 가능
  • 장점

    • 모든 Sibling Caches에 쿼리 X -> 효율적
  • 단점

    • 한 프록시 서버가 다운되면 해시함수가 수정되어야 한다
    • 한 프록시 서버가 다운되면 해당 서버의 콘텐츠가 다른 프록시 서버로 다시 분산되어야 한다
    • 따라서, 프록시 서버가 자주 다운되는 경우 비용이 증가한다

CARP Redirection Method

  • 참여 중인 프록시 서버 테이블 구성
    • 주기적으로 프록시 서버 간 heartbeat를 확인할 수 있다
    • Load(CPU speed, HDD 용량 등), TTL countdown, 기타 전역변수 정보 등을 엔트리에 포함할 수 있다
    • 테이블은 RPC 인터페이스에 의해 원격으로 관리된다
  • 참여 중인 프록시 서버에 대해 해시함수 계산
    • 해시함수 반환값은 프록시가 처리할 수 있는 부하의 양을 고려한다
  • URL에 기반해 숫자를 반환하는 독립적인 해시함수 정의
  • URL 해시함수 적용 결과 + 프록시 서버 해시함수 적용 결과 = 배열 번호
    • 배열 번호의 최댓값이 프록시 서버를 결정
    • Deterministic -> 이후에 발생하는 요청도 동일한 프록시 서버로 포워딩

HTCP (Hyper Text Caching Protocol)

  • ICP vs HTCP
    • ICP : HTTP/0.9 기반의 프로토콜 -> URL만으로 문서 존재 여부 확인
    • HTCP : HTTP/1.0과 HTTP/1.1의 새로운 헤더를 반영한 프로토콜 -> URL + 요청/응답 헤더를 통해 문서 존재 여부 확인
  • HTCP Redirection Method
    • ICP와 동일, 요청과 응답만 조금 다르다

HTCP Message Format

  • Header : 32비트 메시지 길이, 8비트 major 버전, 8비트 minor 버전으로 구성
    • 메시지 길이는 모든 header, data, authentication의 크기 포함
  • Data : HTCP 메시지와 기타 데이터 포함
    • Data length : 16비트 데이터 길이
    • Opcode : 4비트 HTCP 트랜잭션 opcode
    • Response code : 4비트 트랜잭션 상태 -> 0(인증 필요), 1(안전하지 않은 인증), 2(미구현), 3(지원되지 않는 major 버전), 4(지원되지 않는 minor 버전), 5(허용되지 않는 opcode)
    • F1 : 요청자에 의해 지정되는 1비트 플래그 -> 요청의 경우 응답이 필요한지 여부 지정, 응답의 경우 전체 메시지에 대한 응답인지 opcode에 대한 응답인지 여부 지정
    • RR : 메시지가 요청인지 응답인지 나타내는 1비트 플래그
    • Transaction ID : 요청자의 네트워크 주소와 HTCP 트랜잭션 식별자가 결합된 32비트 값
    • Opcode data : opcode별로 다른 값

HTCP opcodes

HTCP Authentication

  • Auth length : Length 필드의 길이를 포함한 Authentication 섹션의 길이 (16비트)
  • Sig time : 00:00:00 Jan 1, 1970 GMT부터 서명 생성 시점까지의 시간 (32비트)
  • Sig expire : 00:00:00 Jan 1, 1970 GMT부터 서명 만료 시점까지의 시간 (32비트)
  • Key name : 공유된 비밀키의 이름 지정
  • Signature : HMAC-MD5 다이제스트 값 (버전, Sig time, Sig expire, HTCP 데이터, 키)

Setting Caching Policies

  • SET 메시지를 통해 캐싱 정책 지정 가능

profile
틈틈이 두 페이지씩 원서 읽기

0개의 댓글