Post

[Network] HTTP 헤더의 구조와 주요 기능

3줄 요약
HTTP 헤더는 요청과 응답에 부가정보를 담아 통신 제어
Host, User-Agent, Authorization 등 요청 헤더로 자원 접근 및 인증 수행
Server, Cookie, Cache 등 응답·공통 헤더로 상태 관리·최적화 가능

💻 컴퓨터 네트워크 시리즈

이 시리즈는 『혼자 공부하는 네트워크』 (강민철 저)
+ 인프런 강의를 기반으로 개인적으로 복습 및 정리한 기록입니다.


📨 HTTP 헤더란?

  • HTTP 메시지는 헤더 필드를 통해 다양한 부가 정보를 전달
  • 헤더이름: 값 형태로 구성되며, 요청 헤더 / 응답 헤더 / 공통 헤더로 구분

📤 요청 헤더 (Request Header)

서버에 요청을 보낼 때 함께 전달되는 헤더

🏠 Host

  • 요청 대상 호스트(도메인/포트)를 명시
  • 하나의 IP에 여러 도메인이 연결된 경우 식별

🧭 User-Agent

  • 요청을 생성한 클라이언트 프로그램 정보
  • 브라우저, OS 등 클라이언트 정보 포함
user-agent 출처: 『혼자 공부하는 네트워크』 (강민철 저)

🌍 Referer

  • 현재 요청의 유입 경로(직전 페이지) 명시
  • 유입 분석, 마케팅 등에 활용
referer 출처: 『혼자 공부하는 네트워크』 (강민철 저)

위키피디아에 있다가 내 페이지에 들어왔구나

🔐 Authorization

  • 인증 정보 포함 헤더 (ex. Basic, Bearer)
  • 기본 방식: Basic base64(username:password)
authorization 출처: 『혼자 공부하는 네트워크』 (강민철 저)

📥 응답 헤더 (Response Header)

서버가 클라이언트에 응답할 때 제공하는 부가 정보

🛠️ Server

  • 서버 측 소프트웨어 정보 명시
server 출처: 『혼자 공부하는 네트워크』 (강민철 저)

🚫 Allow

  • 허용된 HTTP 메서드 명시
  • 405 Method Not Allowed 응답 시 포함

⏳ Retry-After

  • 503 Service Unavailable 응답 시 재요청 가능 시간 명시
retry-after 출처: 『혼자 공부하는 네트워크』 (강민철 저)

2024년 8월 23일 금요일 9시 이후로 사용 가능, 120초 이후 사용 가능

📍 Location

  • 자원의 새로운 위치 명시 (리다이렉션, 생성된 자원 등)

🧾 WWW-Authenticate

  • 401 Unauthorized 응답 시 사용
  • 인증 방식(Basic 등)을 설명
www-authenticate 출처: 『혼자 공부하는 네트워크』 (강민철 저)

🔁 Basic 인증 흐름

basic-auth-flow 출처: 『혼자 공부하는 네트워크』 (강민철 저)

🔁 공통 헤더 (요청·응답 모두 사용)

📅 Date

  • 메시지가 생성된 날짜와 시각 명시

🔗 Connection

  • 연결 방식 명시 (keep-alive, close 등)

📦 Content-Length

  • 본문 데이터의 크기(byte)

🏷️ 표현 헤더 (Representation Headers)

  • 본문의 타입·언어·압축방식 명시
  • Content-Type, Content-Language, Content-Encoding

⚙️ HTTP 기반 기술

📄 캐시 (Cache)

  • 사본 데이터를 저장해 재사용하는 기술
  • 브라우저(Private), 중간 서버(Public)에 저장 가능

🧪 캐시 신선도

  • Expires, Cache-Control: max-age로 유효 기간 설정
  • 신선도 재검사
    • If-Modified-Since – 날짜 기준 변경 여부 확인
    • If-None-Match – ETag(버전 식별자) 기준 확인
    • Last-Modified – 최종 수정일 제공
  • 변경 없음 시 → 304 Not Modified 응답

  • 클라이언트에 저장된 서버 측 상태 정보
  • <이름=값> 쌍 구조 + 다양한 속성 포함

🍽️ 인증 흐름

  1. 클라이언트가 인증 정보 전송
  2. 서버가 세션 ID 발급 및 Set-Cookie 헤더로 전달
  3. 클라이언트는 추후 요청에 Cookie 헤더로 세션 ID 포함
  4. 서버는 세션 ID로 클라이언트 식별

🧾 주요 헤더

  • Set-Cookie – 응답 시 쿠키 설정
  • Cookie – 요청 시 쿠키 포함

⚙️ 쿠키 속성

  • Domain, Path – 적용 범위 제어
  • Expires, Max-Age – 유효 기간
  • Secure, HttpOnly – 보안 옵션

🗄️ 웹 스토리지 (Web Storage)

  • 클라이언트에 저장되는 **<키-값> 형태의 데이터**
  • 쿠키와 달리 서버로 자동 전송되지 않음
  • localStorage: 영구 저장
  • sessionStorage: 브라우저 종료 시 삭제

🧪 콘텐츠 협상 (Content Negotiation)

  • 클라이언트 선호에 따라 자원의 표현 방식 결정
헤더설명
Accept미디어 타입
Accept-Language자연어
Accept-Charset문자 인코딩
Accept-Encoding압축 방식
  • q=0~1로 선호도 우선순위 설정 가능 (기본값: 1)

✅ 마무리 정리

HTTP 헤더는 요청·응답 흐름을 풍부하게 구성하는 핵심 요소

  • 요청 헤더로 자원 요청, 인증 정보, 클라이언트 정보 전달
  • 응답 헤더로 상태 관리, 인증 안내, 리다이렉션 등 수행
  • 공통 헤더 및 기반 기술로 성능 최적화와 사용자 맞춤화 지원

📚 참고 자료


읽어주셔서 감사합니다 🙌
틀린 부분이 있거나, 도움이 되셨다면 댓글이나 GitHub Issue로 자유롭게 알려주세요 😊

This post is licensed under CC BY 4.0 by the author.