HTTP 요청/응답 구조에 대해서 - (2) HTTP 응답

April 02, 2019

이 글은 MDN documentation 을 정리한 글입니다.

이전 포스팅에서 HTTP 요청에 대한 명세를 포스팅했습니다. 이번 포스팅은 HTTP 응답에 관련된 내용입니다.

상태줄

HTTP 요청에서의 시작줄 (start line) 과 동일합니다. 응답 내용의 상태줄은 다음과 같은 정보를 포함하고 있습니다.

  1. 프로토콜 버전: 보통은 HTTP/1.1이며, 프로토콜에 관련된 내용입니다.
  2. 상태코드: 요청의 성공 혹은 실패 여부를 나타냅니다. 상태코드에 대한 내용은 다음과 같습니다.
  3. 1xx 번대 - informational (정보)
  4. 2xx 번대 - Success (성공), 데이터 전송이 성공적으로 이루어짐을 뜻합니다.
  5. 3xx 번대 - Redirection (방향 바꿈) - 자료의 위치가 변경되었습니다.
  6. 4xx 번대 - Client Error - 클라이언트 측 오류로써 주소를 잘못 입력했거나 요청이 잘못되었을때 반환되는 코드입니다.
  7. 5xx 번대 - Server Error - 서버 오류로써 올바른 요청이 처리되지 않았을떄 반환합니다.
  8. 상태 텍스트: 짧고 간결하게 상태코드에 대한 설명을 글로 나타냅니다.

ex) HTTP/1.1 404 Not Found.

헤더 (Header)

요청 헤더와 동일한 구조를 따릅니다. 문자열 다음에 콜론 (;) 이 오며 그 뒤에 오는 값은 헤더값에 따라 구조가 달라집니다. 헤더는 값을 포함하여 전체 한줄로 표시됩니다.

  • General 헤더: 요청 헤더와 동일하게 Via 등과 같은 메세지를 표시합니다.
  • Response 헤더: Accept-Ranges 와 같은 헤더로써 상태줄에 미처 포함되지 못한 정보를 제공합니다.
  • Entity 헤더: Content-Length와 같이 본문의 정보가 포함됩니다.
응답 헤더 구조도

본문 (Body)

본문은 마지막 부분에 포함되며, 모든 응답에 Body가 포함되지 않습니다. 본문의 내용은 다음과 같습니다.

  • 이미 길이가 정의된 단일 파일로 구성된 단일-리소스 본문: 헤더 두개 (Content-Type, Content-Length)로 정의됩니다.
  • 길이를 모르는 단일-리소스 본문: Transfer-Encoding이 chunked로 설정되어 있으며 파일은 청크로 나뉘어 인코딩 되어 있습니다.
...