[ HTTP ] 1. HTTP 개요

angie·2023년 1월 8일
0

FE 관련 지식 쌓기

목록 보기
1/7
post-custom-banner

1. HTTP 개요

카테고리: HTTP

HTTP란?

  • Hyper Text Transfer Protocol
  • HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
  • 웹에서 이루어지는 모든 데이터 교환의 기초
  • 요청 (requests) : 클라이언트(브라우저)에 의해 전송되는 메시지
  • 응답 (responses) : 클라이언트의 요청에 대해 서버에서 응답으로 전송되는 메시지

https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview/fetching_a_page.png

HTTP 기반 시스템의 구성요소

https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview/client-server-chain.png

  • 요청과 응답 사이에는 여러 개체들(게이트웨이, 캐시, 프록시 등)이 존재

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

  • 브라우저는 항상 요청을 보내는 개체

2. 웹 서버

  • 클라이언트에 의한 요청에 대한 문서를 제공하는 서버

3. 프록시

  • 웹 브라우저와 서버 사이에서는 수많은 컴퓨터와 머신이 HTTP 메시지를 이어 받고 전달함
  • 이런 컴퓨터와 머신은 전송, 네트워크 혹은 물리 계층에서 동작
  • 이러한 컴퓨터와 머신 중 애플리케이션 계층에서 동작하는 것들을 프록시라 함

프록시의 기능

  • 캐싱
  • 필터링 : 바이러스 백신 스캔, 유해 컨텐츠 차단
  • 로드 밸런싱 : 여러 서버들이 서로 다른 요청을 처리하도록 허용
  • 인증 : 다양한 리소스에 대한 접근 제어
  • 로깅 : 이력 정보를 저장

HTTP의 특징

1. 간단하다

  • HTTP는 사람이 읽을 수 있으며 간단하게 고안됨
  • HTTP 메시지는 사람이 읽고 이해할 수 있어, 테스트하기 쉽고 초심자의 진입장벽을 낮춤

2. 확장 가능하다

  • HTTP 헤더(HTTP/1.0에서 등장)는 HTTP를 확장하고 실험하기 쉽게 만듦

3. 상태는 없지만 세션은 있다.

  • Stateless : HTTP는 상태를 저장하지 않는다.
    • 동일한 연결 상에 연속한 요청들 사이에는 전혀 연관성이 없다.
  • HTTP 쿠키는 상태가 있는 세션을 만들 수 있게 함
  • 헤더 확장성를 사용하여 동일한 상태를 공유하기 위해 각각의 요청들에 세션을 만들도록 HTTP 쿠키를 추가할 수 있음

4. HTTP와 연결

  • HTTP는 연결이 필수는 아니지만 연결 기반인 TCP 표준에 의존함
  • HTTP/1.1의 파이프라이닝과 지속적인 연결
    • HTTP/1.0의 각 요청/응답에 별도의 TCP연결을 열어야하는 비효율성을 극복하기 위해 등장
    • TCP연결은 요청과 응답을 교환하기 전에 여러 왕복이 필요한 프로세스

HTTP 메시지

1. 요청

https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview/http_request.png

  • HTTP 메서드 : 클라이언트가 수행하고자 하는 동작을 정의 (GET, POST, OPTIONS, HEAD…)
  • Path : 가져오려는 리소스의 경로
  • Version of the Protocol : HTTP 프로토콜의 버전
  • Headers : 서버에 대한 추가 정보를 전달하는 선택적 헤더들
  • Body : POST와 같은 몇 가지 메서드를 위한, 전송된 리소스를 포함하는 본문

2. 응답

https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview/http_response.png

  • Version of the Protocol : HTTP 프로토콜의 버전
  • Status code : 요청의 성공 여부와 그 이유를 나타내는 상태 코드
  • Status message : 상태 코드의 짧은 설명을 나타내는 상태 메시지
  • Headers : 요청 헤더와 비슷한 HTTP 헤더들
  • Body : 선택 사항으로 가져온 리소스가 포함되는 본문
profile
better than more
post-custom-banner

0개의 댓글