HTTP

MONA·2025년 6월 14일

나혼공

목록 보기
74/92

HTTP(HyperText Transfer Protocol)

웹에서 클라이언트(보통 브라우저)와 서버 간에 데이터를 주고받는 프로토콜
비연결성(stateless), 텍스트 기반인 애플리케이션 계층(응용 계층)의 프로토콜

기본 구조

클라이언트 (브라우저, 앱 등)
    └─→ [HTTP 요청] ──→
               서버 (웹 서버)
    ←── [HTTP 응답] ──┘

HTTP의 특성

요청-응답 기반 프로토콜

  • HTTP는 클라이언트-서버 구조 기반의 요청-응답 프로토콜이다
  • 요청, 응답에 따라 메시지 형태가 다름

미디어 독립적 프로토콜

  • HTTP가 요청하는 대상을 resource라고 하며, 자원의 특성을 제한하지 않음

  • 단지 자원과 상호작용하는 데 사용할 수 있는 인터페이스를 정의함
    -> 주고받을 자원의 특성과 무관하게 자원을 주고받을 수단(인터페이스)의 역할만을 수행함

  • 대부분의 자원은 URI로 식별됨

  • media type: HTTP에서 메시지로 주고받는 자원의 종류. MIME type(Multipurpose Internet Mail Extension Type)이라고도 함.
    -> HTTP는 주고받을 미디어 타입에 특별히 제한이 없고, 독립적으로 동작이 가능한 미디어 독립적 프로토콜임

  • 미디어 타입은 '타입/서브타입'으로 구성됨. 타입==데이터 유형, 서브타입==세부 유형

미디어 타입설명
text/plain일반 텍스트
text/htmlHTML 문서
text/cssCSS 스타일시트
text/javascriptJavaScript (구버전 표현, 현재는 application/javascript 사용 권장)
text/csvCSV 형식 데이터

스테이트리스 프로토콜

  • HTTP는 상태를 유지하지 않는 스테이트리스 프로토콜임
    -> 클라이언트의 모든 요청은 기본적으로 독립적인 요청으로 간주됨

지속 연결 프로토콜

  • HTTP는 지속적으로 발전 중인 프로토콜로, 여러 버전이 있음
  • HTTP 1.0 이하: three way handshake로 TCP 연결을 수립하고, 요청에 대한 응답을 받으면 연결 종료. 하나의 요청에 하나의 TCP 연결. 비지속 연결.
  • HTTP 1.1 이상: 지속 연결 제공(keep-alive). 하나의 TCP 연결상에서 여러 개의 요청-응답을 주고받을 수 있는 기술.
  • HTTP 3.0 이상은 UDP 연결 상에서 동작함

HTTP 메시지 구조

  • 시작 라인, 필드 라인, 메시지 구조로 이루어져 있음
  • 필드 라인은 없거나 여러 개 일 수 있고, 메시지 본문은 없을 수 있음
  • 필드 라인과 본문 사이에는 줄바꿈이 있음

시작 라인

  • 요청메시지일 경우 요청 라인, 응답메시지일 경우 상태 라인이 됨.

ex) 요청 라인 = method(공백)요청대상(공백)HTTP버전(줄바꿈) GET /index.html HTTP/1.1

  • method: 클라이언트가 서버의 자원ㅇ에 대해 수행할 작업의 종류

    메서드설명
    GET데이터를 요청함 (URL 기반)
    POST데이터를 전송함 (Body 사용)
    PUT자원의 전체 수정
    PATCH자원의 일부 수정
    DELETE자원 삭제
    HEAD응답 헤더만 요청
  • 요청 대상: HTTP 요청을 보낼 서버의 자원. 보통 URI의 경로.

  • HTTP 버전: 사용된 HTTP 버전. 'HTTP/버전'으로 표기.

상태 라인 = HTTP버전(공백)상태코드(공백)이유 구문*(줄바꿈) GET /index.html HTTP/1.1

  • 이유 구문: 상태 코드에 대한 문자열 형태의 설명

필드 라인

  • 0개 이상의 HTTP 헤더가 명시됨. header-line이라 하기도 함
  • HTTP header: HTTP 통신에 필요한 부가 정보.
  • 각 헤더는 :을 기준으로 header-name과 하나 이상의 header-value로 구성됨

ex)
요청 시 : Host, User-Agent, Accept, Authorization
응답 시 : Content-Type, Set-Cookie, Cache-Control, Content-Length

메시지 본문

  • HTTP 요청 혹은 응답 메시지에서 본문이 필요한 경우 message-body에 명시됨. 있을 수도 있고 없을 수도 있고.
  • 다양한 콘텐츠 타입이 사용됨

HTTP 상태 코드

클라이언트가 보낸 요청에 대해 서버가 어떻게 처리했는지를 숫자로 표현한 것.
HTTP 응답의 가장 앞줄에 포함되어 있으며, 일반적으로 3자리 숫자로 표현됨

ex)
HTTP/1.1 200 OK: 200-상태코드, OK-상태 메시지

상태 코드의 5가지 클래스(범주)

범주범위의미
1xx100–199정보: 요청을 받았고 계속 처리 중
2xx200–299성공: 요청이 성공적으로 처리됨
3xx300–399리다이렉션: 추가 작업 필요
4xx400–499클라이언트 오류: 요청에 문제가 있음
5xx500–599서버 오류: 서버가 요청 처리 실패

자주 쓰는 상태 코드

코드의미
200 OK성공
201 Created생성 성공
204 No Content응답 본문 없음
301/302리다이렉션
400 Bad Request잘못된 요청
401 Unauthorized인증 실패
403 Forbidden권한 없음
404 Not Found존재하지 않는 자원
500 Internal Server Error서버 내부 오류
profile
고민고민고민

0개의 댓글