CS

[CS] HTTP의 개념과 구조

오두기밥 2022. 5. 29. 18:05

HTTP란

  • HyperText Transfer Protocol의 약자
  • 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 통신 규약
  • 서버 간 네트워크 통신 시 어떠한 형식으로 통신할지에 대해 정해둔 규약

HTTP 메세지 기본 구조

 

1) 시작라인

요청

  • HTTP Method : ( GET, POST, PUT, PATCH, DELETE )
  • Request Target : 요청 대상의 URL을 명시
  • HTTP Version : HTTP 버전으로 현재까지는 대부분이 HTTP/1.1이고 HTTP/2, HTTP/3까지 있다.

응답

  • Status Code
    • 응답 코드
      • 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
      • 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
      • 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
      • 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
      • 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.
  • Status text
    • 응답 상태

2) 헤더

요청

  • Host : 호스트 URL
  • User-Agent : 클라이언트 정보
  • Accept : 서버에서 해당 타입에 데이터를 요청하는 헤더
  • Authorization : JWT 같은 인증 토큰을 서버로 보낼 때 사용하는 헤더

응답

  • Date : 응답 일시
  • Content-Type : 응답 데이터의 타입
  • Cache-Control : 캐시용 헤더

3) 공백 라인

헤더와 본문을 구분하는 빈 줄 공백 라인은 CRLF라고 하며 필수 사항

CR LF : 텍스트 파일에서 줄 바꿈을 표시하는 데 사용할 수 있는 제어 문자 또는 바이트 코드

CRLF: https://developer.mozilla.org/en-US/docs/Glossary/CRLF


4) 메시지 바디

  • 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함한다.
  • 요청과 응답의 유형에 따라 선택적으로 사용

※ 시작 라인과 헤더들을 묶어 요청이나 응답의 헤드(head)라고 말하며 body는 payload라고 말한다.