본문 바로가기

HTTP

[HTTP] HTTP메시지

 

#1. 메시지의 흐름

원 서버로 인바운드로 이동하고 아웃바운드로 복귀하는 메시지

  • HTTP는 인바운드와 아웃바운드라는 용어를 트랜잭션 방향을 표현하기 위해 사용한다. 
  • 메시지가 원 서버로 이동하는 것은 인바운드로 이동한 것이다.
  • 모든 처리가 끝난 뒤에 메시지가 사용자 에이전트로 돌아오는 것은 아웃바운드로 이동한 것이다.

모든 메시지는 다운스트림으로 흐른다.

  • 요청 메시지, 응답 메시지 관계없이 모든 메시지는 다운스트림으로 흐른다.

#2. 메시지의 각 부분

HTTP 메시지 구성

 

  • 메시지는 시작줄, 헤더 블록, 본문 세 부분으로 구성되어 있다.
  • 시작줄은 어떤 메시지인지 서술하고, 헤더 블록은 속성을, 본문은 데이터를 담고 있다. (본문은 비어있을 수 있음)
  • 헤더의 Content-Type은 본문이 무엇인지 말하며, Content-Length는 본문의 크기를 말한다.

요청과 응답메시지를 포함한 HTTP 트랜잭션

 

  • 모든 HTTP 메시지는요청 메시지나 응답 메시지로 분류된다. 요청 메시지는 웹 서버에 어떤 동작을 요구하고, 응답 메시지는 요청의 결과를 클라이언트에게 돌려준다.

요청 메시지의 형식                               응답 메시지의 형식

<메서드><요청 URL><버전>                  <버전><상태코드><사유 구절>

<헤더>                                              <헤더>

<엔터티 본문>                                    <엔터티 본문>

 

  • 메서드 : 클라이언트 측에서 서버가 리소스에 대해 수행해주길 바라는 동작
  • 요청 URL : 요청 대상이 되는 리소스를 지칭하는 완전한 URL의 경로 구성요소
  • 버전 : 사용 중인 HTTP의 버전
  • 상태코드 : 요청 중에 무엇이 일어났는지 설명하는 세 자리 숫자 (200, 404...)
  • 사유 구절: 상태코드의 의미를 설명해주는 짧은 문구
  • 헤더 : 이름, 콜론(:), 선택적인 공백, 값, CRLF 순서,  빈줄(CRLF)로 끝나 헤더목록의 끝과 엔터티 시작을 표시
  • 엔터티 본문: 임의의 데이터 블록을 포함, 모든 메시지가 엔터티 본문을 갖지 않음.

 

#3. 메서드와 상태코드

HTTP 메서드  : https://developer.mozilla.org/ko/docs/Web/HTTP/Methods

  • GET : 가장 흔히 쓰이는 메서드, 서버에게 리소스를 달라고 요청하기 위해 쓰임
  • HEAD : GET처럼 행동하지만, 서버는 헤더만을 돌려줌, 엔터티 본문은 반환되지 않음.
  • PUT : 서버의 요청 메시지의 본문을 저장
  • POST : 서버에 입력 데이터를 전송, 서버가 처리해야 할 데이터를 보냄
  • TRACE : 메시지가 프락시를 거쳐 서버에 도달하는 과정을 추적, 주로 진단을 위해 사용
  • OPTIONS : 서버에게 특정 리소스에 대해 어떤 메서드가 지원 되는지 물어봄
  • DELETE : 서버에게 요청 URL로 지정한 리소스를 삭제할 것을 요청

상태코드 :       https://developer.mozilla.org/ko/docs/Web/HTTP/Status/404

  • 100, 101 : 정보                                            
  • 200~206 : 성공                               200 : OK  성공! 요청한 모든 데이터는 응답 본문에 들어있다.
  • 300~305 : 리다이렉션
  • 400~415 : 클라이언트 에러                404 : Not Found 서버는 요청한 URL에 해당하는 리소스를 찾지 못했다.
  • 500~505 : 서버 에러

HTTP 헤더: https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Accept

 

 

참고 자료

 

HTTP

하이퍼텍스트 전송 프로토콜(HTTP)은 HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토콜입니다. 웹 브라우저와 웹 서버간의 커뮤니케이션을위해 디자인되었지만, 다

developer.mozilla.org

  • HTTP완벽 가이드, 인사이트

'HTTP' 카테고리의 다른 글

[HTTP] 캐시(Cache)  (0) 2020.05.03
[HTTP] 프락시(Proxy)  (0) 2020.05.02
[HTTP] 웹 서버  (0) 2020.05.02
[HTTP] 커넥션 관리  (0) 2020.05.01
[HTTP] URL과 리소스  (0) 2020.04.30