웹 기본 다지기 #2: HTTP(HyperText Transfer Protocol) 개념 정리

🏗️ 엄일경·2022년 6월 26일
0

웹 기본 다지기

목록 보기
2/2

TL;DR

HTTP는 클라이언트가 서버의 리소스를 가져오기 위한 프로토콜

용어

Request

요청, 클라이언트가 서버로 전송하는 메시지

Response

응답, 서버가 클라이언트로 전송하는 메시지

Client; user-agent

사용자를 대변하는 도구, 주로 브라우저를 의미

Web Server

요청에 적합한 콘텐츠를 제공하는 컴퓨터 또는 프로그램

Proxy

클라이언트와 서버 사이에서 다양한 기능을 수행하는 컴퓨터 또는 프로그램

기능

  • 캐싱: 준비된 결과 반환
  • 필터링: 유해 콘텐츠 차단
  • 로드 밸런싱: 트래픽을 여러 서버로 분산
  • 인증: 리소스 접근 제어
  • 로깅: 이력 저장

기본 이념

Simple

사람이 쉽게 읽을 수 있도록 고안하여 진입장벽을 낮춤

Extensible

HTTP/1.0 스펙에 소개된 HTTP 헤더를 기반으로 새로운 기능을 쉽게 추가 가능

Stateless

각 요청들의 상태를 저장하지 않아 서로 독립적이다. 상태가 필요한 경우, 헤더에 HTTP 쿠키를 추가하여 세션을 생성.

Connection

HTTP는 전송 프로토콜과 격리되어 있어 유연하게 선택 가능하다.

  • HTTP/1.0, 요청마다 새로운 TCP 연결 생성
  • HTTP/1.1, 파이프라이닝 개념을 도입 시도했으나 구현이 어려움을 입증
  • HTTP/2.0, 멀티플렉스 개념을 도입하여 단일 연결에서 다중 메시지 전송
  • QUIC, 구글에서 실험중인 UDP 기반 전송 프로토콜

기능

HTTP 헤더를 기반으로 점차 추가됨

캐시

  • 웹문서가 캐시되는 방식 제어
  • 서버는 캐시 대상과 기간을 프록시와 클라이언트에게 지시 가능
  • 클라이언트는 캐시된 문서를 무시하라고 프록시에게 지시 가능

Origin 제약 완화

  • 브라우저는 개인정보침해를 막기 위해 origin 제약 강제
  • 동일한 origin에서 온 페이지만 웹페이지 전체 정보에 접근 가능
  • 헤더를 통해 제약을 완화시키고 다른 도메인으로부터 받은 정보를 취합해서 제공 가능

인증

사용자의 접근 권한 제어

프록시와 터널링

특정 머신들의 실제 주소를 숨긴 상태로 사용

세션

사용자를 식별하기 위해 서버에 상태를 만들어 클라이언트 정보 기록

HTTP 메시지

Request

구성요소

  • HTTP 메서드: 클라이언트가 수행하고 싶은 동작 정의
  • 경로: 요청할 리소스의 URL에서 프로토콜, 도메인, 포트를 제거한 문자열
  • 버전: HTTP 버전
  • 헤더: 서버에 전달할 추가 정보
  • 본문: 특정 메서드를 위한 데이터를 넣는 영역

Response

구성요소

  • 버전: HTTP 버전
  • 상태 코드: 요청의 성공 여부와 이유를 의미
  • 상태 메시지: 상태 코드를 간략하게 설명
  • 헤더: 클라이언트로 전달할 추가 정보
  • 본문: 반환할 리소스를 넣는 영역

참고자료

profile
사랑하는 사람들과 사랑받는 작품을 만들면서 살고 싶은 아저씨입니다.

0개의 댓글