HTTP 헤더와 HTTP 기반 기술

0

network

목록 보기
33/39

HTTP 헤더와 HTTP 기반 기술


1. HTTP 메시지 구조

HTTP 메시지는 다음과 같은 세 가지 주요 요소로 구성됩니다:
1. 시작 라인

  • 요청 메시지의 경우: 요청 라인 (예: GET /index.html HTTP/1.1)
  • 응답 메시지의 경우: 상태 라인 (예: HTTP/1.1 200 OK)
  1. 필드 라인 (헤더)
    • 요청/응답 메시지에서 헤더가 포함되며, 0개 이상의 헤더로 구성됩니다.
  2. 메시지 본문
    • 메시지의 실제 데이터를 포함.

2. HTTP 헤더

2.1 HTTP 헤더의 종류

  • 요청에서 주로 사용되는 헤더
  • 응답에서 주로 사용되는 헤더
  • 요청과 응답 모두에서 사용되는 헤더

2.2 요청에서 주로 사용되는 헤더

  1. Host 헤더

    • 요청을 보낼 호스트를 명시.
    • 예: Host: www.example.com:8080
  2. User-Agent 헤더

    • 요청을 생성한 클라이언트 프로그램의 정보 명시.
    • 예:
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/91.0.4472.124 Safari/537.36
      • 운영 체제, 브라우저 종류 및 버전 정보 포함.
  3. Referer 헤더

    • 요청을 보낸 클라이언트가 어디에서 유입되었는지 나타냄.
    • 예: Referer: http://www.google.com
  4. Authorization 헤더

    • 클라이언트의 인증 정보를 포함.
    • 사용 예: Authorization: Basic <Base64-encoded username:password>

2.3 응답에서 주로 사용되는 헤더

  1. Server 헤더

    • 요청을 처리한 서버 소프트웨어의 정보 명시.
    • 예: Server: Apache/2.4.1 (Unix)
  2. Allow 헤더

    • 클라이언트가 사용할 수 있는 HTTP 메서드 목록 제공.
    • 예: Allow: GET, POST, OPTIONS
  3. Retry-After 헤더

    • 서비스가 일시적으로 중단되었을 경우, 클라이언트가 다시 시도해야 하는 시간 명시.
    • 예:
      • 날짜: Retry-After: Fri, 23 Aug 2024 09:00:00 GMT
      • 초단위: Retry-After: 120
  4. Location 헤더

    • 리다이렉션 또는 새로 생성된 자원의 URL 제공.
    • 예: Location: http://www.example.com/new-resource
  5. WWW-Authenticate 헤더

    • 클라이언트가 어떻게 인증해야 하는지 명시.
    • 예: WWW-Authenticate: Basic realm="Access to the site"

2.4 요청과 응답 모두에서 사용되는 헤더

  1. Date 헤더

    • 메시지가 생성된 날짜와 시각 명시.
    • 예: Date: Tue, 25 Jan 2025 12:00:00 GMT
  2. Connection 헤더

    • 클라이언트와 서버 간의 연결 유지 여부 명시.
    • 예:
      • 지속 연결: Connection: keep-alive
      • 연결 종료: Connection: close
  3. Content-Length 헤더

    • 메시지 본문의 크기(바이트 단위) 명시.
    • 예: Content-Length: 348
  4. Content-Type 헤더

    • 메시지 본문의 미디어 타입 명시.
    • 예: Content-Type: text/html; charset=UTF-8
  5. Content-Encoding 헤더

    • 메시지 본문이 어떻게 압축되었는지를 명시.
    • 예: Content-Encoding: gzip
  6. Content-Language 헤더

    • 메시지 본문의 언어 명시.
    • 예: Content-Language: en-US

3. HTTP 기반 기술

3.1 캐싱

  1. 캐시란?

    • 서버로부터 받은 자원을 임시 저장하여 동일한 요청 시 빠르게 활용.
    • 목적:
      • 서버의 부하 감소.
      • 대역폭 절약.
      • 응답 지연 감소.
  2. 캐시의 종류

    • 프라이빗 캐시: 클라이언트 개인이 저장.
    • 퍼블릭 캐시: 중간 서버에서 저장 및 공유.
  3. 캐시 신선도 검사

    • 시간 기반 검사
      • Expires 또는 Cache-Control: max-age로 유효 기간 설정.
    • 엔터티 태그(E-Tag) 기반 검사
      • 자원의 버전 정보를 활용하여 신선도 검사.

3.2 쿠키

  1. 쿠키란?

    • 서버가 생성하여 클라이언트 측에 저장하는 작은 데이터.
    • 클라이언트는 요청 시 쿠키를 서버로 전송.
    • 목적:
      • 상태 유지.
      • 세션 관리.
      • 인증.
  2. 쿠키의 주요 속성

    • Domain: 쿠키가 적용될 도메인.
    • Path: 쿠키가 적용될 경로.
    • Secure: HTTPS 연결에서만 전송.
    • HttpOnly: 자바스크립트를 통한 접근 차단.
  3. 세션 인증

    • 인증 후 서버가 세션 ID를 생성하여 쿠키로 클라이언트에게 전달.
    • 클라이언트는 이후 요청마다 세션 ID를 포함.

3.3 콘텐츠 협상

  1. 콘텐츠 협상이란?

    • 동일한 URI에 대해 클라이언트에 적합한 자원의 표현 제공.
    • 예: 언어별 웹페이지 제공.
  2. 관련 HTTP 헤더

    • Accept: 선호하는 미디어 타입.
    • Accept-Language: 선호하는 언어.
    • Accept-Encoding: 선호하는 압축 방식.
  3. Q 값 우선순위

    • 표현의 우선 순위를 명시.
    • 예:
      Accept-Language: ko-KR, en-US;q=0.8, en;q=0.5

4. 주요 HTTP 상태 코드

  • 200 OK: 요청 성공.
  • 401 Unauthorized: 인증 필요.
  • 304 Not Modified: 캐시된 데이터 그대로 사용 가능.
  • 503 Service Unavailable: 일시적 서비스 중단.

5. 결론

HTTP 헤더는 클라이언트와 서버 간의 요청과 응답을 더욱 효율적으로 수행하며, 캐싱, 쿠키, 콘텐츠 협상 등 다양한 기술의 기반이 됩니다. 각 헤더의 역할을 잘 이해하고 활용하면 더 나은 네트워크 설계를 할 수 있습니다.

0개의 댓글