[네트워크] HTTP(HyperText Transfer Protocol)

채상엽·2023년 4월 19일
0

SW사관학교 정글

목록 보기
29/35
post-thumbnail

HTTP란?

HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.

현대 웹에서 이루어지는 모든 데이터 교환의 기초이자 클라이언트-서버 프로토콜이기도 하다. 클라이언트-서버 프로토콜이란 수신자(서버) 측에 의해 요청이 초기화 되는 프로토콜을 의미한다.

클라이언트에서 서버로 전송하는 메세지를 request(요청) 이라고 부르며, 반대로 서버에서 클라이언트에게 전송하는 메세지를 response(응답)이라고 한다.

HTTP 기반 시스템의 구성 요소

클라이언트

흔히 브라우저가 클라이언트 역할을 맡게 된다. 웹 페이지를 표시하기 위해, 브라우저는 페이지의 HTML 문서를 가져오기 위한 요청을 서버에 전송한 뒤, 파일을 분석하여 실행해야 할 스크립트와 페이지 내 포함된 하위 리소스들(이미지, 비디오 등)과 레이아웃 정보(CSS) 같은 것들을 가져온다. 이후 브라우저는 완전한 웹 페이지를 표시하기 위해, 받아온 여러 리소스들을 혼합한다.

웹 서버

클라이언트의 반대편에서 클라이언트 요청에 대한 응답으로 문서를 반환한다.

프록시

클라이언트와 서버 사이에는 수 많은 컴퓨터와 머신이 HTTP 메세지를 이어 받고 전달한다. 이런 컴퓨터와 머신들 중 애플리케이션 계층에서 동작하는 것들을 일반적으로 프록시라고 부른다. 프록시는 다음과 같은 다양한 기능들을 수행할 수 있다.

  • 캐싱
  • 필터링
  • 로드 밸런싱
  • 인증
  • 로깅

HTTP 메세지 구성 요소

HTTP 메세지에는 요청과 응답이 있다.

요청

요청은 다음과 같은 구조를 가진다.

  • Method
    보통 클라이언트가 수행하고자 하는 동작을 정의한다. 여기에는 GET, POST, PUT, PATCH, DELETE 등이 있다.
  • Path
    가져오려는 리소스의 경로이다. 예를 들면 프로토콜(http://), 도메인(developer.mozilla.org), 또는 TCP포트(:80)를 제외한 리소스의 URL을 의미한다.
  • HTTP 프로토콜 버전
    HTTP/1.0과 HTTP/1.1과 같은 HTTP 프로토콜의 버전이 기재된다.
  • Headers
    서버에 대한 부가적인 정보를 전달하는 헤더가 포함된다. 여기서 부가적인 정보란 Content-Type 헤더를 사용하여 text/html, JSON, XML 같은 요청 또는 응답의 유형을 나타낼 수 있다. 또한 User-Agent라는 헤더는 요청을 하는 클라이언트를 식별한다. 이 외에도 많은 부가 정보들을 나타내는 헤더가 존재하며, 사용자 정의에 따라 필요한 헤더를 추가하여 사용할수도 있다.

응답

응답은 다음과 같은 구조를 가진다.

  • HTTP 프로토콜 버전
    HTTP/1.0과 HTTP/1.1과 같은 HTTP 프로토콜의 버전이 기재된다.
  • Status Code
    1xx, 2xx, 3xx, 4xx, 5xx 와 같은 상태 코드를 나타낸다. 대체적으로 자주 사용되는 2xx는 요청에 대한 성공을 나타내며, 3xx는 redirect, 4xx는 클라이언트 에러, 5xx는 서버 에러를 나타내게 된다.

참고

profile
프로게이머 연습생 출신 주니어 서버 개발자 채상엽입니다.

0개의 댓글