3. HTTP 메세지(1)

Hoony·2022년 8월 1일
0

HTTP

목록 보기
3/6
post-thumbnail

메세지의 흐름

HTTP 메세지는 HTTP 애플리케이션 간에 주고받은 데이터의 블록들이다.

  • 데이터 블록은 텍스트 메타 정보로 시작한다.
  • 다음에 선택적으로 데이터가 올 수 있다.
  • '인바운드', '아웃바운드', '업스트림', '다운스트림' 용어는 메시지의 방향을 나타내는 용어이다.


인바운드 방향과 아웃바운드 방향

  • 메세지가 원 서버로 향하는 것을 인바운드 방향이라고 한다.
  • 모든 처리가 끝난 뒤에 메세지가 사용자 에이전트로 돌아오는 것을 아웃바운드라고 한다.


업스트림과 다운스트림

HTTP 메세지는 강물과 같이 흐른다.

  • 발송자는 수신자의 업스트림이다.
  • 수신자는 발송자의 다운스트림이다.


메세지의 구성요소

HTTP 메세지는 단순한, 데이터의 구조화된 블록이다.
크게 세 부분으로 시작줄, 헤더 블록 , 본문 으로 나뉜다.

  • 시작줄은 어떤 메세지인지 서술한다.
  • 헤더 블록은 메세지의 속성을 보여준다.
  • 본문은 데이터를 담고 있다. 이는 생략될 수 있다.

시작줄헤더는 그냥 줄 단위로 분리된 아스키 문자열이다.
각 줄은 캐리지 리턴개행 문자 로 구성된 두 글자의 줄바꿈 문자열로 끝난다.


헤더는 본문에 대한 많은 정보를 제공한다.

  • Content-Type 속성은 본문이 무엇인지 말해준다. (ex. text 문서)
  • Content-Length 속성은 본문의 크기를 말해준다.


메세지 문법

모든 HTTP 메시지는 요청 메세지, 응답 메시지 둘 중 하나로 분류된다.


  • 요청 메시지의 형식
<메서드>  <요청 URL>  <버전>
<헤더>

<엔티티 본문>

  • 요청 메시지의 형식
<버전>  <상태 코드>  <사유 구절>
<헤더>

<엔티티 본문>


메서드

클라이언트 측에서 서버에게 요청하는 동작이다.
메서드의 종류는 아래의 표에서 확인할 수 있다.

메서드설명메세지 본문이 있는가?
GET어떤 문서를 가져온다.없음
HEAD어떤 문서에 대한 헤더만 가져온다.없음
POST처리해야 할 데이터를 보낸다.있음
PUT서버에 요청 메세지의 본문을 저장한다.있음
TRACE메세지가 프락시를 거쳐 서버에 도달하는 과정을 추적한다.없음
OPTIONS서버가 어떤 메서드를 수행할 수 있는지 확인한다.없음
DELETE서버에서 문서를 제거한다.없음

  • 메서드를 사용할 때 주의할 점은 서버가 해당 메서드를 모두 구현한 것이 아니라는 것이다.
  • HTTP 메서드는 확장할 수 있도록 설계되었으므로 서버 그들만의 확장 메서드가 존재할 수 있다.


요청 URL

요청 대상이 되는 리소스를 지칭하는 URL이다.



버전

해당 메세지에서 사용 중인 HTTP의 버전이다.

HTTP/<메이저>,<마이너>

위와 같은 형식으로 이루어져있다.



상태 코드

요청 중에 무엇이 일어났는지 설명하는 세 자리의 숫자이다.
첫 번째 자릿수는 상태의 일반적인 분류('성공', '에러')를 나타낸다.


HTTP/1.0 200 OK

여기서 200이 상태코드이다.


전체 범위분류
100-199정보
200-299성공
300-399리다이렉션
400-499클라이언트 에러
500-599서버 에러

가장 흔한 상태 코드

  • 상태코드 200은 성공을 의미하는 상태코드이다.
  • 상태코드 401은 사용자 이름과 비밀번호를 입력해야 된다고 알려주는 상태코드이다.
  • 상태코드 404은 요청한 URL에 해당하는 리소스가 존재하지 않음을 알리는 상태코드이다.


사유 구절

숫자로 이루어진 상태 코드의 의미를 설명하는 짧은 문구이다.
상태 코드 이후부터 줄바꿈 문자열까지 사유 구절이다.

  • 어떤 규칙이 존재하지 않으므로 사용자가 이해하기 쉽게 작성하면 된다.


헤더들

이름, 콜론, 선택적인 공백, 값, CRLF가 순서대로 나타난다.
헤더 목록의 끝과 엔티티 본문의 시작을 표시한다.

헤더 분류

  • 일반 헤더 : 요청과 응답 양쪽에 모두 나타날 수 있음
  • 요청 헤더 : 요청에 대한 부가 정보를 제공
  • 응답 헤더 : 응답에 대한 부가 정보를 제공
  • 엔티티 헤더 : 본문 크기와 콘텐츠, 혹은 리소스 그 자체를 서술
  • 확장 헤더 : 명세에 정의되지 않은 새로운 헤더


엔티티 본문

임의의 데이터 블록을 포함한다.
이는 생략될 수 있다.

  • 이미지, 비디오, HTML 문서, 소프트웨어 애플리케이션 등 다양한 디지털 데이터를 제공할 수 있다.
profile
Just Do it!

0개의 댓글