ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTTP 기본] HTTP 헤더
    기타 2022. 2. 24. 20:24
    반응형

    이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다.

    틀리거나 잘못된 정보가 있을 수 있습니다.

    댓글로 알려주시면 수정하도록 하겠습니다.


     

    1. 메시지 헤더

    메시지 헤더는 리퀘스트와 리스폰스 메시지에 반드시 포함되어 있으며 리퀘스트 헤더와 리스폰스 헤더로 나뉩니다.

     

    리퀘스트 헤더와 리스폰스 헤더의 데이터는 클라이언트 또는 서버에서 처리를 위한 정보들이 포함되어 있습니다.

     

    이러한 부가 정보에는 메시지 바디의 크기, 언어, 인증 정보 등 다양한 정보들이 있을 수 있습니다.

     

    2. 헤더 필드 구조

    헤더 필드는 필드명과 필드 값으로 구성되어 있습니다. 필드명과 필드 값은 콜론(:)을 통해 구분 합니다.

    위 그림처럼 빨간색 줄의 헤더 필드명과 초록색 줄의 헤더 값으로 구성되어 있습니다.

     

    헤더 필드가 중복으로 있는 경우
    필드명이 같은 헤더가 여러개 존재할 수 있습니다.
    중복된 필드에 대한 사양이 정해져 있지 않으므로 이런 경우는 브라우저 마다 다르게 동작을 합니다.
    최초의 헤더를 우선 수행한다던지 또는 반대로 마지막 헤더를 우선 수행을 진행 합니다.

     

    3. 헤더 필드 종류

    헤더 필드는 용도에 따라 4가지로 분류 됩니다.

    • 일반 헤더
      일반 헤더는 리퀘스트, 리스폰스 모두 사용되는 헤더입니다.

    • 리퀘스트 헤더
      클라이언트가 서버로 전송하는 리퀘스트 메시지에 사용되는 헤더입니다.
      리퀘스트의 부가적 정보나 클라이언트의 정보 등이 포함 됩니다.

    • 리스폰스 헤더
      서버가 클라이언트로 전송하는 리스폰스 메시지에 사용되는 헤더입니다.
      리스폰스의 부가적 정보나 서버의 정보 또는 클라이언트로 부터 추가적인 정보 요청 등이 포함됩니다.

    • 엔티티 헤더
      리퀘스트, 리스폰스 메시지에 포함된 엔티티에 사용되는 헤더입니다.
      콘텐츠 갱신 시간과 같은 엔티티에 대한 부가적 정보 등이 포함됩니다.

    4. 자주 사용되는 헤더

    일반 헤더

    필드명 설명
    Cache-Control 캐시 동작을 지정
    Connection Hop-by-hop헤더, 커넥션 관리
    Date 리퀘스트, 리스폰스 메시지 생성 날짜 및 시간
    Pragma 메시지 제어
    Trailer 메시지의 끝에 있는 헤더의 일람
    Transfer-Encoding 메시지 바디의 전송 코딩 형식 지정
    Upgrade 다른 프로토콜에 업그레이드
    Via 프록시 서버 정보
    Warning 에러 통지

     

    리퀘스트 헤더

    필드명 설명
    Accept 사용자의 에이전트가 처리 가능한 미디어 타입
    Accept-Charset 문자셋 우선 순위
    Accept-Encoding 인코딩 우선 순위
    Accept-Language 자연어 우선 순위
    Authorization 웹 인증읠 위한 정보
    Expect 서버에 대한 특정 동작의 기대
    From 유저의 메일 주소
    Host 요청 리소스의 호스트
    If-Match 엔티티 대그의 비교
    If-Modified-Since 리소스 갱신 시간 비교
    If-None-Match 엔티티 태그의 비교 If-Match와 반대
    If-Range 리소스가 갱신되지 않은 경우 엔티티의 바이트 범위 요구
    If-Unmodified-Since 리소스의 갱신 시간 비교 If-Modified-Since와 반대
    Max-Forwards 최대 전송 홉 수 지정
    Proxy-Authorization 프록시 서버의 클라이언트 인증을 위한 정보
    Range 엔티티 바이트 범위 요구
    Referer 리퀘스트중의 URI를 취득하는 곳
    TE 전송 인코딩의 우선 순위
    User-Agent HTTP 클라이언트 정보

     

    리스폰스 헤더

    필드명 설명
    Accept-Ranges 바이트 단위의 요구를 수신할 수 있는지 없는지 여부
    Age 리소스의 지정 경과 시간
    Etag 리소스를 특정하기 위한 Etag 정보
    Location 클라이언트를 지정한 URI에 리다이렉트
    Proxy-Authenticate 프록시 서버의 클라이언트 인증을 위한 정보
    Retry-After 리퀘스트 재시행의 시간 요구
    Server HTTP 서버 정보
    Vary 프록시 서버에 대한 캐시 관리 정보
    WWW-Authenticate 서버의 클라이언트 인증을 위한 정보

     

    엔티티 헤더

    필드명 설명
    Allow 리소스가 제공하는 HTTP 메소드
    Content-Encoding 엔티티 바디에 적용되는 콘텐츠 인코딩
    Content-Language 엔티티의 자연어
    Content-Length 엔티티 바디의 사이즈
    Content-Location 리소스에 대응하는 대체 URI
    Content-MD5 엔티티 바디의 메시지 다이제스트
    Content-Range 엔티티 바디의 범위 위치
    Content-Type 엔티티 바디의 미디어 타입
    Expires 엔티티 바디의 유효기한
    Last-Modified 리소스의 최종 갱신 날짜

    HTTP 헤더에는 대표되는 47개의 필드가 있으며 이 외에도 여러 헤더들이 폭 넓게 사용되고 있습니다.

     

    5. HTTP 헤더 카테고리

    HTTP 헤더 필드는 캐시와 비캐시 프록시의 동작을 정의하기 위한 두 가지 카테고리로 분류 됩니다.

    • End-to-end
      이 카테고리에 포함된 헤더는 최종 수신자에게 전송 되어야 하는 헤더 입니다.
      캐시에서 구축된 리스폰스 중 보존되야 하고, 다시 전송되지 않으면 안되도록 되어 있습니다.

    • Hop-by-hop
      이 카테고리에 포함된 헤더는 한 번 전송에 대해서만 유효하고 캐시와 프록시에 의해서 전송되지 않는 것도 있습니다.

      즉 전송된 헤더가 각 서버들을 거치며 전송되는 과정에서 전송되지 않을 수 있는 것 입니다.

      사용되는 Hop-by-hop 헤더는 Connection 헤더 필드에 작성하여야 합니다.

      또한 아래 헤더 필드 외에는 모두 End-to-end 헤더로 분류 됩니다.
      Connection
      Keep-Alive
      Proxy-Authenticate
      Proxy-Authorization
      Trailer
      TE
      Transfer-Encoding
      Upgrade
    반응형

    '기타' 카테고리의 다른 글

    [AWS] EC2 CodeDeploy Agent 설치와 Ruby Error  (0) 2022.03.12
    [AWS] EC2 Gradlew 실행 권한 없음  (0) 2022.03.11
    [HTTP 기본] HTTP 상태 코드  (0) 2022.02.22
    [HTTP 기본] HTTP 메시지  (0) 2022.02.22
    [HTTP 기본] HTTP 메소드  (0) 2022.02.17

    댓글

Designed by Tistory.