본문 바로가기

개발

HTTP 완벽 가이드 - http 메시지

HTTP 메시지

메시지의 흐름

  • 메시지의 흐름은 인바운드, 아웃바운드, 용어를 트랜젝션 방향을 표현하기 위해 사용한다.
  • 인바운드 : 메시지가 서버로 향하는 것
  • 아웃 바운드 : 모든 처리가 끝난 뒤에 메시지가 사용자 에이전트로 돌아오는 것
  • HTTP 메시지는 요청 메시지냐 응답 메시지냐에 관계없이 모든 메시지는 다운스트림으로 흐른다.

메시지의 각 부분

  • HTTP는 데이터의 구조화된 블록인다.
  • 메시지는 요청 메시지와 응답 메시지로 분류된다.
요청 메시지 형식

<메서드><요청 URL><버젼>

<해더>

<엔티티 본문>

메서드 - 클라이언트 측에서 서버가 리소스에 대해 수행해주길 바라는 동작
요청 URL - 완전한 URL 또는 URI의 경로 구성요소다.
버젼 - HTTP/<메이져>.<마이너> 모두 정수이다.

응답 메시지 형식

<버전><상태 코드><사유 구절>

<헤더>

<엔티티 본문>

상태 코드 - 요청 중에 무엇이 일어났는지 설명하는 세 자리의 숫자
사유 구절 - 사람이 이해할 수 있게 설명해주는 짧은 문구로, 상태 코드 이후 부터 줄바꿈 문자열까지 사유구절. 오로지 사람에게 읽히기 위한 목적
헤더 - 이름, 콜론, 선택적인 공백값등 엔티티 본문의 시작을 표시한다.
엔티티 본문 - 임의의 데이터 블록을 포함한다. 헤더나 엔티티 본문이 없더라도 HTTP 헤더의 집합은 항상 빈 줄로 끝나야 함에 주의해야 한다.

시작줄

요청줄

  • 모든 HTTP 메시지는 시작줄로 시작한다. 요청 메시지의 시작줄은 무엇을 해야 하는지 알려준다.

응답줄

  • 서버에게 리소스에 대해 무언가를 해달라고 부탁한다. 대상을 지칭하는 요청 URL이 들어있다. HTTP버전도 포함한다.
  • 응답 메시지는 수행 결과에 대한 상태 정보와 결과 데이터를 클라이언트에게 돌려준다.

메서드

  • 시작줄은 메서드로 시작하며, 서버에게 무엇을 해야 하는지 말해준다.
  • 메서드는 여러 종류가 있다. GET, HEAD, POST, PUT, TRACE, OPTIONS, DELETE

상태 코드

  • 메서드가 서버에게 무엇을 해야 하는지 말해주는것처럼 클라이언트에게 무엇이 일어났는지 말해준다.
  • 상태 코드는 응답 메시지의 시작줄에 담겨 반환한다.
헤더
  • 헤더 분류 : 해더 명세는 여러 해더 필드를 정의한다. 애플리케이션은 자유롭게 자신만의 헤더를 만들어낼 수 있다.

여러 헤더가 있는데 각 HTTP 헤더는 간단한 문법을 가진다. 이름, 쉼표, 공백, 필드값이 순서대로 온다.

예 > DATE : 서버가 응답을 만들어 낸 시각
Content-length : 데이터를 포함한 엔티티 본문

엔티티 본문

엔티티는 http가 수송하도록 설꼐된 것들이다. 메시지는 이미지, 비디오, html 문서등 여러 종류 디지털 데이터를 실어 나를 수 있다.

메서드

안전한 메서드

GET, HEAD 메서드는 안전하다고 할 수 있는데, 이 메서드는 HTTP 요청의 결과로 서버에 어떤 작용도 없다.
(웹 개발자에게 달렸다)

반응형