[HTTP] HTTP 메세지

2024. 3. 19. 01:28네트워크/웹

대부분의 내용은 인프런 김영한 강사님의 모든 개발자를 위한 HTTP 웹 기본 지식을 참고했습니다.


HTTP 메세지

HTTP 메세지는 요청(request)과 응답(response) 2가지가 있습니다.

이 글에서는 요청과 응답에서 HTTP 메세지의 구조를 알아보겠습니다.

 

 


HTTP 메세지의 구조


 

HTTP 메세지는 크게 start-line, HTTP Header, Message Body로 이루어져 있습니다.

 

 

요청 HTTP 메세지

출처 (https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages)

 

이전에서부터 계속 공부했듯이 HTTP 요청은 클라이언트가 작업을 시작하기 위해 보내는 메세지입니다.

 

1. request-line

요청 메세지에서 start-line은 request-line이라고 불립니다.

request-line의 구조는 아래와 같습니다.

<HTTP Method> <요청 대상 URL> <HTTP 버전>

<HTTP Method>
클라이언트가 서버에게 요청하는 동작을 나타내는 부분입니다.
GET, POST, PUT, DELETE 등이 있습니다.

<요청 대상 URL>
클라이언트가 요청하는 대상의 경로를 나타내는 부분입니다.
POST / HTTP/1.1
GET /background.png HTTP/1.0
이런 형식을 가질 수 있습니다.

<HTTP 버전>
클라이언트가 사용하는 HTTP 버전을 나타내는 부분입니다.

 

2. HTTP Header

HTTP Header에는 HTTP 전송에 필요한 모든 부가정보가 들어있습니다.

Message Body의 정보, 크기, 압축 여부, 인증 정보 등 많은 정보가 들어갑니다.

Host
요청이 전송되는 호스트의 도메인 이름 또는 IP 주소를 나타냅니다.

User-Agent
클라이언트 소프트웨어의 식별자를 포함합니다. 이 헤더를 통해 서버는 요청을 보내는 클라이언트의 유형을 식별할 수 있습니다.

Content-Type
요청 본문의 데이터 유형을 나타냅니다. 주로 POST 요청과 함께 사용되며, 서버가 요청 본문을 올바르게 해석하는 데 도움이 됩니다.

Content-Length
요청 본문의 길이를 나타냅니다. 서버가 요청 본문을 수신하고 처리할 때 유용합니다.

Accept
클라이언트가 받을 수 있는 콘텐츠 유형을 나타냅니다. 이를 통해 클라이언트는 서버에게 어떤 유형의 콘텐츠를 선호하는지 알릴 수 있습니다.

Header에 들어갈 수 있는 정보는 위와 같은 정보들이 있고 필요에 따라서 추가될 수 있습니다.

 

3. Message Body

Message Body에는 실제로 전송할 데이터가 들어갑니다.

파일업로드 데이터, JSON, 이미지 등 byte로 표현할 수 있는 모든 정보를 Body에 담아 전송할 수 있습니다.

 

Message Body는 선택적으로 포함되며, 일반적으로 POST요청과 함께 사용됩니다.


 

응답 HTTP 메세지

출처 (https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages)

1. status-line

응답 메세지에서 start-line은 status-line이라고 불립니다.

status-line의 구조는 아래와 같습니다.

<HTTP 버전> <상태 코드> <상태 메시지>

<상태 코드>
서버가 요청을 성공적으로 처리했는지 또는 어떤 문제가 발생했는지를 나타내는 세 자리 숫자입니다. 
일반적으로 1xx부터 5xx까지 범위가 있으며, 각 코드에는 특정 의미가 있습니다.

<상태 메시지>
상태 코드에 대응하는 간단한 설명을 제공합니다.

<HTTP 버전>
서버가 사용하는 HTTP 버전을 나타내는 부분입니다.

 

2. HTTP Header

응답 메세지의 HTTP Header에는 응답의 메타데이터를 포함하고 있습니다.

일반적인 응답 메세지의 Header에는 아래와 같은 것들이 있습니다.

Content-Type
응답 본문의 데이터 유형을 나타냅니다.

Content-Length
응답 본문의 길이를 나타냅니다.

Date
응답이 생성된 날짜와 시간을 나타냅니다.

응답 메세지의 Header 또한 필요에 따라서 추가될 수 있습니다.

 

3. Message Body

Message Body에도 마찬가지로 서버가 클라이언트에게 실제로 전송할 데이터가 들어갑니다.

Message Body는 주로 HTML, JSON, 이미지, 파일 등의 형식입니다. 이러한 본문의 형식은 Content-Type에 의해 결정됩니다.

Content-Type에는 MIME타입이 포함되는데, 이를 통해 클라이언트가 Body의 데이터를 올바르게 해석하는데 도움을 줍니다.

text/plain
텍스트 데이터를 나타냅니다.

text/html
HTML 형식의 문서를 나타냅니다.

application/json
JSON 형식의 데이터를 나타냅니다.

application/xml
XML 형식의 데이터를 나타냅니다.

image/jpeg: 
JPEG 이미지를 나타냅니다.

이 외에도 많은 MIME타입이 있습니다.


 

해당 글에서는 요청 메세지의 HTTP Method와 응답 메세지의 HTTP Status에 대해서 자세히 설명하지 않았는데,

다음 글에서 이에 대해서 설명해 링크를 걸어놓겠습니다.

 

 


HTTP 메세지

'네트워크 > ' 카테고리의 다른 글

[HTTP] HTTP 헤더 - 표현과 협상  (0) 2024.04.11
[HTTP] HTTP 메서드  (0) 2024.03.20
[HTTP] HTTP의 특징  (0) 2024.03.16
[HTTP] HTTP 정의와 HTTP스펙  (0) 2024.02.22
주소창에 www.google.com을 검색하면 일어나는 일 (DNS)  (0) 2024.02.12