본문 바로가기

기초 튼튼/네트워크

[네트워크] HTTP 정리 - 헤더/캐시

 

인프런에서 김영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식" 강의를

수강하고 정리한 문서입니다.  (더 자세한 내용은 강의를 참고)

 


HTTP Header(헤더) - 기본

개요

  • 헤더에는 HTTP 전송에 필요한 모든 부가정보가 들어있다.
    • 메시지 바디의 내용, 바디의 크기, 서버 정보, 캐시정보...
    • 메시지 바디의 데이터를 해석할 수 있는 정보를 제공해준다. (데이터유형, 데이터 길이 등)
  • 표현방식: header-field = field-name ":" OWS field-value OWS
    • Ex; Content-Type: text/html;charset=UTF-8
  • 표현 (Representation)
    • 기존 RFC2616 에서 사용되던 엔티티(Entity)라는 용어가 폐기되고..
    • .. 표현(Representation)이라는 용어로 대체되었다. (RFC7230, 최신)
    • "표현 메타데이터 + 표현 데이터"로 구성되어있음
    • 표현의 종류
      • Content-Type: 표현 데이터의 형식
        • Ex; text/html, image/png
      • Content-Encoding: 표현 데이터의 압축 방식
        • Ex; gzip
      • Content-Language: 표현 데이터의 자연 언어
        • Ex; ko, en
      • Content-Length: 표현 데이터의 길이
        • 바이트 단위 (Ex; 5)
  • 콘텐츠 협상 (Contents Negotiation)
    • 클라이언트가 선호하는 표현을 요청하는 과정을 말한다.
      • Accept
      • Accept-Charset
      • Accept-Language
  • 전송 방식
    • 단순 전송
    • 압축 전송
      • Content-Encoding 정보를 헤더가 포함 -> 클라이언트가 해당 정보를 통해 압축을 해제
    • 분할 전송
      • Transfer-Encoding 정보를 통해 분할 전송을 알림
    • 범위 전송
  • 정보
    • 일반
      • From: 유저 에이전트 이메일
      • Referer: 이전 페이지 주소
        • Referer는 Referrer의 오타이지만.. 전 세계적으로 이미 퍼져있어서 수정하지 않고있다.
      • User-Agent: 유저 에이전트 어플리케이션 정보
        • Ex; Chrome, Safari, Android, iOS
      • Server: 요청 처리하는 ORIGIN 서버 소프트웨어 정보
        • Ex; nginx
    • 특별
      • Host: 요청 호스트 정보
      • Location: 페이지 리다이렉션
      • Allow: 허용 가능 HTTP메서드
      • Retry-After: 다음 요청시도까지 대기해야하는 시간

 

HTTP Header(헤더) - 캐시 및 조건부 요청

캐시 기본 동작

  • 캐시가 없더라면?
    • 데이터가 변경되지 않음에도 계속해서 동일한 데이터를 네트워크를 통해 다운로드 받아야 하는 불편함과 비용이 존재
    • 인터넷 네트워크는 느리고 비쌈 > 사용자 경험 악화!
  • 캐시 동작
    • 첫번째 요청시: HttpResponse 값을 브라우저 캐시에 저장
    • 두번째 요청시: 브라우저 캐시 내 캐시 유효 시간 검증
      • 유효시간 이내라면 그대로 캐시를 사용하고, 유효시간이 경과했더라도 서버 데이터와 체크하여 변화가 없다면 유효시간을 갱신하고 그대로 사용할 수 있다. (304 Not Modified 응답으로 확인 가능)
  • 캐시 제어 헤더
    • Cache-Control: 캐시 제어
    • Pragma: 캐시 제어(HTTP1.0 하위 호환)
    • Expires: 캐시 유효기간
      • 현재는 Cache-Control: max-age 사용을 권장한다. 
  • 프록시 캐시
    • 물리적으로 너무나도 먼 곳에 있는 서버의 역할을 대신해주는 Not 실시간 캐시 서버를 말한다.
  • 캐시 무효화
    • 결제정보, 개인정보 등과 같은 민감 정보는 캐시로 저장하지 못하도록 설정한다.

 


부족한 블로그에 방문해 주셔서 감사합니다.

잘못된 내용 수정 피드백은 댓글로 적어주세요.

감사합니다 :-)

반응형

'기초 튼튼 > 네트워크' 카테고리의 다른 글

[네트워크]HTTP 정리 - 기본 개념  (0) 2021.06.28