HTTP Message
목차 |
1. HTTP Message |
2. 요청 메시지 2.1 Start Line 2.2 HTTP Headers 2.3 Empty Line 2.4 Body |
3. 응답 메시지 2.1 Status Line 2.2 HTTP Headers 2.3 Empty Line 2.4 Body |
1. HTTP Message
HTTP 메시지는 HTTP 프로토콜. 즉, 약속한 형태로 메시지를 주고 받아야 한다.
HTTP 메시지는 아래와 같은 형태로 구분된다.
요청 메시지와 응답 메시지, 총 2가지 형태로 나누어져 있다.
각 각 4가지 파트로 구분되는데 각 줄이 하는 역할에 대해 한 번 알아보자.
2. 요청 메시지
요청 메시지와 응답 메시지는 형태가 거의 동일하여 읽는 법 또한 유사하며, 크게 2가지 형태 header와 body 형태로 읽어야한다.
header는 [Start Line], [HTTP Headers]로 구분되고 빈 줄 아래로 적힌 내용을 body라고 한다.
2.1 Start Line
header의 첫 번째줄을 Start_Line이라고 하며, 가장 중요한 내용을 담고있다.
GET /user?name=char1ey HTTP/1.1
위의 예시를 한 번 살펴보자.
[GET] [/user?name=char1ey] [HTTP/1.1]
띄어쓰기를 기준으로 3가지 부분으로 나뉜다.
[요청메서드] [요청URI] [HTTP 프로토콜 버전]
먼저, [ 요청 메서드 ] 부분이다. 요청 메서드에는 [GET]뿐만 아니라. 아래와 같은 내용들도 있다.
- POST '데이터 입력'의 의미로 사용한다.
- GET '데이터 요청'의 의미로 사용한다.
- PUT '데이터 수정'의 의미로 사용한다.
- DELETE '데이터 삭제'의 의미로 사용한다.
- 단, 실제로 데이터를 삭제하는 것이 아니라, 삭제 요청이다.
- OPTIONS 웹서버가 지원하는 메서드의 종류 요청.
다음은, [ 요청 URI ] 부분이다. 요청 URI에는 host(IP, Protocol)을 제외한 나머지 URI를 적는다.
URI라는 집합안에 URL이 부분집합으로 있으니, URL과 URI를 같다고하지 않도록 주의하도록 하자.
마지막으로 [ HTTP 프로토콜 버전 ] 인데, 1.1만 다루도록하자.(1.0 / 2.0 등도 있다)
2.2 HTTP Headers
요청할것들의 정보를 적거나, 메시지에 포함된 본문을 설명한다.
대표적으로 Content-Type이 있는데 이는 숙지해둬야 한다.
2.3 Empty Line
요청에 대한 메타정보를 가리킨다.
2.4 Body
요청 관련된 정보를 포함하며, header에서 본문을 명시해준다.
클라이언트가 서버에게 보낼 데이터를 입력하는 공간이다.
3. 응답 메시지
2.1 Status Line
header의 첫 번째줄을 Status_Line이라고 한다.
HTTP/1.1 200 OK
위의 예시를 한 번 살펴보면 요청 메시지와 마찬가지로 세 부분으로 나뉜다.
[HTTP/1.1] [200] [OK]
[HTTP 프로토콜 버전] [상태코드(Status Code)] [상태메시지[Status Message)]
[HTTP 프로토콜 버전]
말 그대로 HTTP 프로토콜 버전을 나타낸다.
[상태코드(Status Code)]
상태 코드에는 여러가지 상태가 있는데, 대표적으로 볼 수 있는 것들이 200, 304, 404 등이 있다.
각 번호대가 의미하는 것을 대표적으로 보자면,
- 100번대는 정보 응답
- 200번대는 성공적인 응답
- 300번대는 응답메시지를 표현
- 400번대는 클라이언트 오류 응답
- 500번대는 서버 오류 응답
위와 같이 나타내며, 야생에서 각 번호를 마주칠때마다 검색해보는것도 좋은 방법이다.
[상태메시지[Status Message)]
사람이 HTTP 메시지를 이해하는 데 도움이 되는 상태 코드에 대한 단순한 설명을 담고있다.
2.2 HTTP Headers
요청할것들의 정보를 적거나, 메시지에 포함된 본문을 설명한다.
요청 메시지와 마찬가지로 Content-Type를 주의하여 봐야한다.
2.3 Empty Line
요청에 대한 메타정보를 가리킨다.
2.4 Body
응답 메시지의 본문을 의미한다.