개발/네트워크

HTTP 메시지란? XX를 반드시 기억하세요 - 2편

IT의 타이탄 2024. 3. 28. 00:24
SMALL

안녕하세요 IT의 모든 것을 알려드리는 IT의 타이탄입니다.

 

 

아마 이 글에 들어오신 분들은 HTTP 메시지에 대해 궁금하신 분 들이거나 제 이전글인 HTTP란? 을 보시고 2편을 보기위해 들어오신 분들일 것입니다.

 

👉 HTTP란? HTTP에 대해 a부터 z까지 설명드리겠습니다.

 

 

이번 글에서는 제목과 마찬가지로 HTTP 메시지의 개념을 시작으로 어떤식으로 활용하는지에 대해 알려드릴 예정이며, 여러분이 반드시 기억해야할 XX에 대해서도 가르쳐드릴 예정입니다.

 

 

XX는 과연 무엇일까요? 바로 HTTP 메시지 형식인데요. 형식은 크게 2가지로 나뉘게 됩니다.

 

 

HTTP 메시지 형식 : 요청 & 응답

 

 

이에 대한 자세한 내용은 본문에 작성하도록 하겠습니다.

 

 

이번 글의 목차는 다음과 같습니다.

 

[목차]

  1. HTTP 메시지란?
  2. HTTP 메시지 형식

 

해당 목차를 확인하시고 여러분에게 필요한 정보만 가져가시길 바라며, HTTP 메시지란? 부터 시작하겠습니다.

 

 

HTTP 메시지란? XX를 반드시 기억하세요 

1. HTTP 메시지란?

HTTP메시지는 HTTP라는 프로토콜 위에서 서버 및 클라이언트가 서로 전달하는 메시지를 의미합니다.

 

 

우리가 현실세계에서 우편이라는 것을 통해 서로의 편지를 전달하는 것처럼 인터넷 상에서는 HTTP 메시지를 HTTP라는 약속을 지키면서 보내는 것입니다.

 

 

예를 들어, 내가 네이버라는 검색창에 티스토리 홈페이지를 검색했을 때, 클라이언트는 내 컴퓨터가 되는것이고 서버는 네이버의 웹서버가 되는 것입니다.

 

 

 

여기서 HTTP 메시지는 바로 나의 티스토리 홈페이지 검색이 되는것입니다.

 

 

또한 서로 메시지를 전달하는데 있어서 요청을 하는 사람이 있다면 요청을 받고 응답하는 사람이 있을 것입니다.

 

 

HTTP 메시지는 마찬가지로 요청과 응답 / Request & Response의 형식으로 나뉘게 됩니다.

 

HTTP 형식
1. Request 형식 ( 요청 )
2. Response 형식 ( 응답 )

 

2. HTTP 형식

1. Request message 형식

 

요청의 메시지는 클라이언트 즉, 우리의 컴퓨터가 서버에게 요청되며 사람들이 이해할수 있도록 아스키코드로 작성됩니다.

 

 

Request message는 보통 다음과 같은 형식으로 서버에게 요청됩니다.

HTTP 요청 메시지 형식

 

이에 대한 예시를 작성하면 다음과 같습니다.

 

[Request 형식 예시]
(header)
GET /index.html HTTP/1.1\r\n
Host: www.google.com
\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0 \r\n
Accept: text/html,application/xhtml+xml\r\n
Accept-Language: en-us,en;q=0.5\r\n
Accept-Encoding: gzip,deflate\r\n
Connection: keep-alive\r\n
\r\n

 

첫번째 문장에는 추후에 알려드릴 HTTP 메서드가 들어가게 됩니다.

 

 

HTTP메서드란 서버가 수행해야할 동작을 지정하는 것으로 지금 당장은 HTTP메서드는 GET, POST, PUT, DELETE등이 존재한다는것만 아시면 됩니다.

 

 

GET은 데이터를 요청하는 HTTP 메서드로 내가 원하는 데이터를 보고싶을 때, 검색할 때, 사용되곤합니다.

 

 

예시로 보여드린 메시지는 /index.html이라는 페이지를 받기 원하는 메시지를 전달한 것입니다. (/index.html => 요청대상)

 

 

아래에 있는 문장들은 현재 클라이언트의 정보들이 담겨있으며, 서버는 이를 해석하여 클라이언트에 맞는 정보를 전달할 수 있게 됩니다.

 

 

위의 형식에 맞춰 설명드리자면 header field name이 User-Agent라던지 Accept가 되는것이고 value가 이에 따르는 값이 되는 것입니다.

 

 

Request 메시지에서는 전송할 데이터가 따로 없다면 body부분을 공백으로 보내도 괜찮습니다. 또한 헤더와 바디사이에는 반드시 공백이 존재해야 맞는 형식으로 보내지게 됩니다.

 

 

다음은 HTTP 응답메시지 형식입니다.

 

 

2. Response message 형식

 

[Response message 형식 예시]
(header)
HTTP/1.1 200 OK
Date: Tue, 08 Sep 2020 00:53:20 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.9 mod_perl/2.0.11 Perl/v5.16.3
Last-Modified: Tue, 01 Mar 2016 18:57:50 GMT
ETag: "a5b-52d015789ee9e"
Accept-Ranges: bytes
Content-Length: 2651
Content-Type: text/html; charset=UTF-8

\r\n
(body)
data data data data data ...

 

첫번째 문장에는 클라이언트의 요청에 대한 상태값을 출력합니다.

 

 

200 OK는 잘 받았고 잘보냈다는 의미 즉, Success (성공)이라고 생각하시면 됩니다.

 

 

HTTP 상태코드에 대해서도 다양하게 존재하는데요 이에 대한 내용도 추후에 다뤄보도록 하겠습니다.

 

 

Response 메시지에서도 마찬가지로 데이터에 대한 정보와 서버에 대한 정보 등이 담겨서 보내지게 되어있습니다.

 

 

request와 공통된 내용이지만 Host:에서 Host와 :은 반드시 붙여서 사용해야 합니다. 그렇지 않게 되면 에러가 발생하게 됩니다.

 

(O) Host:www.google.com
(X) Host : www.google.com

 

 

 

또한 데이터는 보통 body에 담겨서 보내지곤합니다. request와 다른점은 요청은 보통 헤더에 정보를 담아서 보내지만, 데이터는 앞에 있는 정보보다 크기 때문에 body에 담겨져서 보내게 됩니다.

 

 

헤더는 보통 클라이언트와 서버와의 통신을 위한 정보를 담기 때문에 실제 데이터는 body에 담긴다고 보시면 됩니다.

 

 

이러한 방식으로 우리가 휴대폰이든 컴퓨터로 웹서핑 및 쇼핑, 메신저 프로그램을 사용할 수 있게 되는 것입니다.

 

 

 

HTTP 메시지에 대한 개념을 잘 익히시고 잘 기억이 안 난다면 2~3번 반복해서 보는 것을 추천드립니다.


 

지금까지 HTTP 메시지의 개념을 시작으로 어떤 식으로 활용되는지까지 설명드렸습니다. 

 

 

이외에도 HTTP 메서드, HTTP 상태코드에 대한 내용도 아는 것을 추천드리는데요.

 

 

다음은 HTTP 메서드에 대한 내용을 다뤄보도록 하겠습니다. 긴 글 읽어주셔서 감사드립니다.

LIST