Fairy ' s

[22. March] HTTP #2 / TIL 본문

Devops Bootcamp

[22. March] HTTP #2 / TIL

berafairy 2023. 3. 22. 15:02

 

위의 사진을 통해 유추할 수 있는 HTTP 구조, 요청과 응답, 헤더 등 내용을 작성해봅시다.

 


General 

  • Request URL : 요청한 도메인 주소가 http://toss.im/ 이다.
  • Request Method : GET 요청을 통해 toss 서버에 읽기 또는 검색 요청을 보냈다.
  • Status Code : 상태코드가 200. 즉, 요청을 성공적으로 인식하고 수용했다.
  • Remote Address : 요청을 보낸 클라이언트의 IP 주소이다.
  • Referrer Policy
    - 'strict-origin-when-cross-origin' : 헤더에 참조 페이지 전체의 URL을 포함한다.
    - 'no-referrer' : 헤더에 어떤 정보도 포함하지 않는다.

응답 헤더 (Response Header)

  • Connection : 'keep-alive' 상태는 클라이언트와 서버 간의 지속적인 연결을 허용한다는 뜻이다.
    - 'close' : 서버가 클라이언트에 응답을 보낸 후 연결을 닫아야 함을 의미한다.
    - 'upgrade' : HTTP에서 웹 소켓으로 전환하는 것과 같이 다른 프로토콜로 연결을 업그레이드 하는데에 사용한다.

    - 'TE' : 클라이언트에 허용되는 전송 인코딩 옵션을 지정한다.
    - 'Trailers' : 서버가 트레일러라고 하는 응답 본문(body) 뒤에 추가 HTTP 헤더를 보낼 것임 나타낸다.
  • content-encoding : 이 페이지는 응답 본문이 gzip 알고리즘을 사용하여 압축되었음을 의미한다.
    - gzip : 서버에서 클라이언트로 보내는 HTTP 응답의 크기를 줄이는 데에 사용할 수 있는 압축 알고리즘이다.
    - deflate : gzip 과 다른 압축 알고리즘, 유사한 방식. 파일에서 반복되는 데이터를 해당 데이터의 단일 복사본에 대한 참조로 대체하여 응답 본문의 크기를 줄인다.
    - identity : 응답 본문에 적용된 인코딩이 없음을 나타낸다. content-encoding 헤더가 지정되지 않은 경우 기본 값이 된다.
  • Content-Type : text/html 부분은 콘텐츠가 HTML 텍스트임을 나타내고, charset=utf-8 부분은 콘텐츠에 사용되는 문자 인코딩을 지정한 것이다.
  • Date : 메시지가 발생한 날짜
  • Keep-Alive : 클라이언트와 서버 간의 지속적인 연결이 데이터 전송 없이 열린 상태로 유지될 수 있는 최대 시간
  • key-event-id : 사용자가 지정한 옵션
  • Server : 요청을 처리한 서버가 Nginx 웹 서버 소프트웨어를 실행하고 있다.
    - Nginx : 고성능, 확장성 및 낮은 리소스 사용량으로 잘 알려진 인기 있는 오픈 소스 웹 서버 및 리버스 프록시 서버
  • Transfer-Encoding : 클라이언트와 서버 간에 데이터를 가변 크기의 'chunk'로 전송한다. 일반적으로 전송되는 데이터의 크기를 미리 알 수 없거나 데이터가 실시간으로 스트리밍 될 때 사용한다.
  • vary : 응답을 생성하는 데 사용된 요청 헤더를 나열하며, 동일한 헤더가 새 요청에 있는 경우 캐시가 후속 요청에 대해서만 캐시된 응답을 사용해야 함을 나타낸다.
  • x-envoy-upstream-service-time : *프록시 서버에서 자주 추가하는 응답 헤더이며, *업스트림 서비스가 요청을 처리하고 응답을 생성하는 데에 걸린 시간을 나타낸다.
  • X-Frame-Options : 웹 페이지가 다른 웹 사이트의 *iframe 요소 내에 표시될 수 있는 지 여부를 제어하는 데 사용할 수 있는 HTTP 응답 헤더이다.
    - DENY : 웹 사이트의 iframe에 페이지를 표시할 수 없다.
    - SAMEORIGIN : 페이지는 페이지와 동일한 출처를 가진 웹 사이트의 iframe에 표시 될 수 있다.
    - ALLOW-FROM uri : 지정된 웹사이트의 iframe에서 페이지를 표시할 수 있다.
  • x-toss-event-id : 사용자가 지정한 옵션

요청 헤더 (Request Header)

  • Accept : 클라이언트가 선호하는 미디어 타입의 종류를 나열해놓은 상태
  • Accept-Encoding : 클라이언트가 선호하는 압축 인코딩의 종류
    - br (Brotli) : Google에서 개발한 압축 알고리즘
  • Accept-Language : 클라이언트가 선호하는 문자 인코딩의 우선순위 대로 나열해둔 상태 / 우선 순위는 한국어(1.0~0.9) 영어(0.8~0.7)이다. 
  • Cache-Control : 특정 리소스 또는 응답에 대한 캐싱 지시문을 지정하는데 사용
    - 'max-age' : 응답을 캐시할 수 있는 최대 시간(초)을 지정
    - 'no-cache' : 서버에서 응답을 다시 확인하지 않고 캐시에서 응답을 제공하면 안됨을 나타낸다. / 항상 최신 버전의 리소스를 받을 수 있다.
    - 'no-store' : 응답을 캐시에 전혀 저장하지 않고 항상 서버에서 가져와야 함을 나타낸다.
    - 'public' or 'private' : 
  • Connection : 응답 헤더의 'connection' 내용 참조
  • Cookie : 브라우저에 의해 저장되며 각 요청과 함께 서버로 전송되는 작은 데이터 조각이다. 쿠키를 통해 서버는 사용자 및 사이트와의 이전 상호 작용에 대한 정보를 기억할 수 있다.
  • Host : 요청한 호스트의 도메인 정보
  • Pragma : 지시문을 통해 특정 요청에 대한 선택적 동작 또는 매개변수를 지정하는 데 사용된다.
    - 'no-cache' : 응답이 클라이언트 또는 중간 캐시에 의해 캐시되지 않아야 함
    - 'no-store' : 응답이 클라이언트 또는 중간 캐시에 저장되지 않아야 함
    - 'must-revalidate' : 응답의 캐시된 복사본을 사용하기 전에 다시 서버에서 확인해야 함
    - 'max-age' : 응답을 캐시할 수 있는 최대 시간(초)을 지정
  • sec-ch-ua : (sec-websocket-protocol) 보안 관련 HTTP 요청 헤더 / 웹 소켓 연결에서 서버와 클라이언트가 통신에 사용해야 하는 프로토콜을 나타낸다.
    - "Not; A Brand";v="99" : 사용자 에이전트가 특정 브랜드와 연결되어 있지 않으며 버전 번호가 99임
    - "Google Chrome";v="97" : 사용자 에이전트가 Google Chrome을 사용하고 있으며 버전 번호가 97임
    - "Chromium";v="97" : 사용자 에이전트가 Chromium을 사용하고 있으며 버전 번호가 97임
  • sec-ch-ua-mobile : 요청하는 사용자가 모바일인지 데스크탑인지 나타내는 보안 관련 HTTP 요청 헤더
    - ?0 : 모바일 장치의 기능을 알 수 없거나 브라우저에서 공유하지 않음
    - 0 : 사용 간으한 장치 기능에 대한 추가 세부 정보 없음 

*upstream service : 데이터 흐름 방향에서 클라이언트 업스트림(클라이언트에서 서버, 서버에서 업스트림 서버나 서비스)에 위치한 서비스 혹은 서버
*proxy server : 클라이언트와 서버 간의 게이트웨이 역할을 하는 중간 서버
*iframe : 인프라 프레임의 줄임말 / 웹 페이지가 자체 내에 다른 웹 페이지나 문서를 삽입할 수 있도록 하는 HTML 요소

'Devops Bootcamp' 카테고리의 다른 글

[23. March] HTTPS / TIL #2  (0) 2023.03.23
[23. March] REST API / TIL #1  (0) 2023.03.23
[22. March] HTTP #1 / TIL  (0) 2023.03.22
[16. March] HTTP messages / TIL  (0) 2023.03.16
[15. March] 웹 서비스 접근 / TIL #2  (2) 2023.03.15
Comments