HTTP

Alex·2021년 1월 21일
0

flask

목록 보기
2/2

HTTP 개요

  • 하이퍼텍스트 전송 프로토콜(HTTP)
  • HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
  • HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초
  • 클라이언트-서버 프로토콜
  • 클라이언트-서버 프로토콜: (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미
  • 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성
  • 클라이언트와 서버들은 (데이터 스트림과 대조적으로) 개별적인 메시지 교환에 의해 통신
  • 요청(request): 클라이언트에 의해 전송되는 메시지
  • 응답(responses): 서버에서 응답으로 전송되는 메시지


HTTP 기반 시스템의 구성요소

  • 요청과 응답 사이에는 여러 개체들이 있는데, 예를 들면 다양한 작업을 수행하는 게이트웨이 또는 캐시 역할을 하는 프록시 등이 있음

클라이언트: 사용자 에이전트

  • 사용자를 대신하여 동작하는 모든 도구
  • 주로 브라우저에 의해 수행
  • 항상 요청을 보내는 개체

    웹 페이지를 표시하기 위해, 브라우저는 페이지의 HTML 문서를 가져오기 위한 요청을 전송
    ➡ 파일을 구문 분석하여 실행해야 할 스크립트 그리고 페이지 내 포함된 하위 리소스들(보통 이미지와 비디오)을 잘 표시하기 위한 레이아웃 정보(CSS)에 대응하는 추가적인 요청들을 가져옴
    ➡ 완전한 문서인 웹 페이지를 표시하기 위해 그런 리소스들을 혼합
    ➡ 브라우저에 의해 실행된 스크립트는 이후 단계에서 좀 더 많은 리소스들을 가져올 수 있으며 브라우저는 그에 따라 웹 페이지를 갱신

웹 서버

  • 통신 채널의 반대편에는 클라이언트에 의한 요청에 대한 문서를 제공하는 서버가 존재

프록시

  • 웹 브라우저와 서버 사이에서는 수많은 컴퓨터와 머신이 HTTP 메시지를 이어 받고 전달
  • 여러 계층으로 이루어진 웹 스택 구조에서 이러한 컴퓨터/머신들은 대부분은 전송, 네트워크 혹은 물리 계층에서 동작하며, 성능에 상당히 큰 영향을 주지만 HTTP 계층에서는 이들이 어떻게 동작하는지 눈에 보이지 않음
  • 컴퓨터/머신 중에서도 애플리케이션 계층에서 동작하는 것들을 일반적으로 프록시라 부름
  • 프록시는 눈에 보이거나 그렇지 않을 수도 있으며 다양한 기능들을 수행
    • 캐싱 (캐시는 공개 또는 비공개가 될 수 있음 (예: 브라우저 캐시))
    • 필터링 (바이러스 백신 스캔, 유해 컨텐츠 차단(자녀 보호) 기능)
    • 로드 밸런싱 (여러 서버들이 서로 다른 요청을 처리하도록 허용)
    • 인증 (다양한 리소스에 대한 접근 제어)
    • 로깅 (이력 정보를 저장)


HTTP의 특성

HTTP는 간단하다

  • HTTP는 사람이 읽을 수 있으며 간단하게 고안
  • HTTP/2가 다소 더 복잡해졌지만 여전히 HTTP 메세지를 프레임별로 캡슐화하여 간결함을 유지
  • HTTP 메시지들은 사람이 읽고 이해할 수 있어, 테스트하기 쉽고 초심자의 진입장벽을 낮춤

HTTP는 확장 가능하다

  • 클라이언트와 서버가 새로운 헤더의 시맨틱에 대해 간단한 합의만 한다면, 언제든지 새로운 기능을 추가할 수 있음

HTTP은 상태가 없지만 세션은 있다

  • HTTP는 상태를 저장하지 않음(Stateless)
  • 동일한 연결 상에서 연속하여 전달된 두 개의 요청 사이에는 연결고리가 없음
  • HTTP의 핵심은 상태가 없는 것이지만 HTTP 쿠키는 상태가 있는 세션을 만들도록 해줌


출처

https://developer.mozilla.org/ko/docs/Web/HTTP

0개의 댓글