본문 바로가기
Programming & Platform/Web

HTTP 메시지 구조 이해하기 - 요청과 응답의 기본 구성 요소

by 코드스니펫 2024. 11. 16.
반응형

인터넷을 통해 정보를 주고받을 때 HTTP(HyperTex.t Transfer Protocol)는 웹 브라우저와 서버 간의 데이터 전송을 위한 표준 프로토콜로 사용됩니다.

 

HTTP는 요청(Request)응답(Response) 형식의 메시지를 통해 동작합니다.

 

이 글에서는 HTTP 메시지의 기본 구조를 살펴보고, 요청과 응답 메시지가 어떻게 구성되는지 알아보겠습니다.

 

이를 통해 웹 애플리케이션이 어떻게 동작하는지 깊이 이해할 수 있습니다.

 

HTTP 메시지 구조 이해하기
HTTP 메시지 구조 이해하기

 

HTTP 메시지 구조 이해하기 - 요청과 응답의 기본 구성 요소

 

1. HTTP 메시지의 기본 구성 요소

 

HTTP 메시지는 Start Line(시작 줄), Message Header(메시지 헤더), Message Body(메시지 본문)의 세 부분으로 구성됩니다.

 

이 구조는 클라이언트의 요청서버의 응답에 모두 동일하게 적용됩니다.

 

구성 요소 설명 예시
Start Line 요청 메서드 및 URL 또는 상태 코드 포함 `GET /index.html HTTP/1.1`
`HTTP/1.1 200 OK`
Message Header 요청/응답에 대한 추가 정보를 제공 `Content-Type: text/html`
`User-Agent: Mozilla/5.0`
Message Body 요청 또는 응답 데이터를 포함 `...` 또는 `{"name": "John"}`

 

 

(1) Start Line (시작 줄)

요청 메시지경우, 시작 줄은 HTTP 메서드, 요청 URL, HTTP 버전으로 구성됩니다.

 

GET /index.html HTTP/1.1

 

 

응답 메시지경우, 시작 줄에는 HTTP 버전, 상태 코드, 상태 메시지가 포함됩니다.

 

HTTP/1.1 200 OK

 

 

HTTP 메시지 구조 이해하기
HTTP 메시지 구조 이해하기

 

(2) Message Header (메시지 헤더)

메시지 헤더는 여러 개의 헤더 필드로 구성되며, 요청과 응답에 대한 추가 정보를 제공합니다.

 

헤더 필드 설명 예시
`Content-Type` 본문의 데이터 형식을 지정 `Content-Type: application/json`
`User-Agent` 클라이언트의 브라우저 정보 제공 `User-Agent: Chrome/114.0`
`Accept` 클라이언트가 수락 가능한 콘텐츠 유형 `Accept: text/html`
`Cookie` 클라이언트가 전송하는 쿠키 정보 `Cookie: sessionId=abc123`
`Host` 요청이 전송된 서버의 도메인 `Host: www.example.com`

 

  • 헤더와 본문 사이에는 CRLF(Carriage Return and Line Feed)로 줄 바꿈(`\r\n`)을 사용하여 헤더의 끝을 표시합니다.

 

 

(3) Message Body (메시지 본문)

메시지 본문에는 요청에 필요한 데이터응답 데이터가 포함됩니다.

 

  • POST 요청경우 본문에 클라이언트가 서버로 전송할 데이터가 포함됩니다.
POST /login HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 34

{
  "username": "john",
  "password": "1234"
}

 

  • GET 요청은 일반적으로 본문이 비어 있습니다.
  • 서버 응답에서는 HTML, JSON, 이미지 등 다양한 데이터 형식이 본문에 포함될 수 있습니다.

 

예시 응답 본문

<html>
  <body>
    <h1>Welcome to our site!</h1>
  </body>
</html>

 

2. HTTP 요청과 응답의 차이점

 

HTTP 메시지의 구조는 요청(Request)응답(Response)이 유사하지만, 시작 줄의 내용에서 차이가 있습니다.

 

HTTP 메시지 구조 이해하기
HTTP 메시지 구조 이해하기

 

  • HTTP 요청(Request):
  • 클라이언트가 서버에 특정 리소스를 요청할 때 사용합니다.
  • 시작 줄에는 메서드(GET, POST 등)와 URL이 포함됩니다.

 

요청 예시

GET /products HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0
Accept: application/json

 

  • HTTP 응답(Response):
  • 서버가 클라이언트의 요청에 대한 결과를 반환할 때 사용합니다.
  • 시작 줄에는 상태 코드(200, 404 등)상태 메시지가 포함됩니다.

 

응답 예시

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 45

{"status": "success", "message": "Data retrieved"}

 

구분 요청(Request) 예시 응답(Response) 예시
Start Line `GET /api/users HTTP/1.1` `HTTP/1.1 200 OK`
Header `Accept: application/json` `Content-Type: application/json`
Message Body (비어 있을 수 있음) `{"name": "John", "age": 30}`

 

3. HTTP 메시지의 실제 활용 예제

 

클라이언트가 서버에 로그인 요청을 보내고, 서버가 그에 대한 응답을 제공하는 시나리오를 살펴봅시다.

 

HTTP 메시지 구조 이해하기
HTTP 메시지 구조 이해하기

 

POST /api/login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

username=johndoe&password=1234

 

HTTP/1.1 200 OK
Set-Cookie: sessionId=abc123; Path=/; HttpOnly
Content-Type: text/html
Content-Length: 24

<h1>Login Success</h1>

 

위 예제에서 서버는 클라이언트가 보낸 로그인 정보를 처리한 후, 성공적으로 로그인되었음을 알리는 응답을 보냅니다.

 

또한, `Set-Cookie`를 통해 세션 ID를 클라이언트에게 전달하여, 이후 요청에서 상태를 추적할 수 있습니다.

 

 

마치며

HTTP 메시지는 Start Line, Message Header, Message Body로 구성되어 있으며, 요청과 응답 모두 같은 구조를 가집니다.

 

하지만 요청과 응답의 시작에 포함된 정보는 서로 다릅니다.

 

이러한 HTTP 메시지 구조를 이해하면 클라이언트와 서버 간의 통신이 어떻게 이루어지는지 그리고 웹 애플리케이션이 어떻게 동작하는지를 명확히 이해할 수 있습니다.

 

HTTP는 단순하면서도 확장성이 뛰어난 프로토콜로, 다양한 웹 서비스에서 필수적인 역할을 수행합니다.

 

앞으로 HTTP의 구조를 활용하여 효율적이고 안전한 웹 애플리케이션을 개발해 보세요!

 

▼ 함께 보면 좋은 글 ▼

구글 애드센스 광고 인텐트 설정법 및 웹사이트 수익화 전략 강화
웹젠 주가, 현황과 전망
NestJS ejs 적용하는 방법, 동적 웹페이지 렌더링 하기
챗GPT, 기능 향상을 위해 웹상 데이터 수집하는 'GPTBot' 공개
Node.js 웹 어플리케이션 개발을 위한 패키지 설정
이세계아이돌 음원과 웹툰 동시에 인기 끄는 중, K-컬처의 주요 축으로
부트스트랩 쉽게 사용하는 방법 - 웹사이트 제작 필수 프로그램
실시간 웹사이트 정보, 구어체 문장으로 손쉽게 검색하는 서치GPT
웹 개발에서 캐시 무효화를 위한 쿼리 문자열 활용하기 - 꼭 알아야 할 실전 팁