-
HTTP 메세지란 무엇인가CS지식/네트워크 2021. 5. 24. 23:11
HTTP메세지는 HTTP를 통해 통신하는 클라이언트와 서버 사이에서 주고받는 데이터의 블록들이다.
HTTP메세지는 클라이언트가 서버에게 보내는 요청 메세지와 서버가 클라이언트로 보내는 응답 메세지가 있다.
메세지는 시작줄, 헤더 블록, 본문 세 부분으로 이루어진다.
시작줄은 해당 메세지가 어떤 메세지인지 간략하게 서술하고
헤더 블록은 메세지의 속성을 말해주고
본문은 보내고자하는 데이터를 가지고 있고 생략이 가능하다.
요청 메시지의 형식은
<메서드> <요청 url> <버전>
<헤더>
<엔터티 본문>
응답 메시지의 형식은
<버전> <상태 코드> <사유 구절>
<헤더>
<엔터티본문>
으로 이루어져 있다.
각 부분에 대해 자세히 알아보자.
- 메서드
메서드는 클라이언트 측에서 서버가 어떠한 동작을 해주기를 원하는지 알려주는 것이다.
대표적으로 사용되는 메서드는 아래의 표와 같다.
- 요청 URL
요청 대상이 되는 리소스를 지정한 URL을 의미한다.
- 버전
해당 HTTP메세지에서 사용 중인 HTTP의 버전을 의미한다.
- 상태 코드
클라이언트의 요청에 대해 어떻게 처리되었는지 알려주는 것으로 세 자리의 숫자로 표현된다.
각 코드의 첫 번째 자릿수는 상태의 일반적인 분류(성공, 에러 등)을 의미한다.
200~299는 요청에 대한 처리가 성공했음을 나타내고
300~399는 요청한 리소스가 다른 위치로 옮겨졌음을 나타내고
400~499는 클라이언트의 요청이 잘못되었음을 나타내고
500~599는 서버에서 에러가 났다는 것을 나타낸다.
- 사유 구절
숫자로 된 상태코드의 의미를 사용자(사람)이 이해할 수 있게 설명해주는 짧은 문구로 사유 구절은 오직 사람이 읽고 이해하기 위한 목적으로만 사용되고 프로그램은 상태 코드를 보고 처리한다.
- 헤더
이름, 콜론(:), 선택적인 공백, 값, CRLF(줄바꿈을 의미)가 순서대로 나타나고 헤더 부분은 빈 줄로 끝나 헤더 목록의 끝과 엔터디 본문의 시작을 표시한다.
헤더는 다음과 같이 분류된다.
헤더 분류 설명 일반 헤더 요청메세지와 응답메세지에 모두 나타날 수 있는 헤더로 부가 정보를 제공 요청 헤더 요청메세지에 나타나는 헤더로 요청에 대한 부가 정보를 제공 응답 헤더 응답메세지에 나타나는 헤더로 응답에 대한 부가 정보를 제공 엔터디 헤더 본문 크기와 콘텐츠, 리소스에 대해 서술 확장 헤더 명세(표준적으로 정의된 헤더)에 정의되지 않은 새로운 헤더 실제 사용되는 헤더를 예시로 들면 아래와 같다.
Date: Tue, 15 Nov 2020 02:14:22 GMT
(서버가 응답메세지를 만든 시작을 의미)
Content-length: 19312
(19312바이트 길이의 데이터가 엔터티 본문에 있다는 것을 의미)
Content-type: image/jpg
(엔터티 본문이 jpg이미지라는 것을 의미)
- 엔터티 본문
엔터티 본문은 HTTP 메세지가 가지는 임의의 데이터 블록으로 모든 HTTP메세지가 엔터티 본문을 가지고 있지는 않다.엔터티 본문이 없는 메세지의 경우 헤더의 집합이 빈 줄(CRLF)로 끝나게 된다.
하지만, CRLF를 쓰지 않고 끝나는 메세지도 받아들일 수 있도록 설계되어야 한다.
'CS지식 > 네트워크' 카테고리의 다른 글
웹 서버(Web server)란 무엇인가 (0) 2021.05.30 TCP 커넥션이란 무엇인가 (0) 2021.05.27 URL은 무엇인가 (HTTP완벽 가이드 공부 시작!!) (0) 2021.05.21 11일차 - 웹 공격 기술 (2) (0) 2021.05.17 10일차 - 웹 공격 기술 (1) (0) 2021.05.14