2024.12.09(HTTP2)

칙촉·2024년 12월 9일

🎯 목차

HTTP 메시지 구조


HTTP 메시지 구조

HTTP 메시지 개요

HTTP 통신은 클라이언트와 서버가 데이터를 주고받는 방식으로 이루어지며,이 때 통신을 위해 사용되는 데이터 형식이 바로 HTTP 메시지이다.
메시지는 크게 요청 메시지(Request)응답 메시지(Response) 로 나뉘며, HTTP통신의 핵심이 된다.
구조적으로는 세 가지 주요 요소로 구성되는데 이는 다음과 같다.

1. 시작 줄(Start-Line)

  • 요청 메시지 : 요청의 메서드, 대상 리소스, HTTP 버전이 포함된다.
  • 응답 메시지 : HTTP 버전, 상태 코드, 상태 메시지가 포함된다.

2. 헤더(Header)

  • 요청 및 응답과 관련된 메타데이터를 key-value 쌍으로 표현한다.
  • 요청의 세부 정보나, 응답의 데이터 형식, 서버 상태 등을 알린다.

3. 본문(Body, Optional)

  • 요청 메시지에서는 클라이언트가 서버로 전달할 데이터를 담는다.
  • 응답 메시지에서는 서버가 클라이언트로 전달할 데이터가 들어간다.

HTTP 요청 메시지 구조

  1. 시작 줄
    • 요청의 의도를 정의한다.
    • 형식:
      <HTTP 메서드> <요청 대상 URI> <HTTP 버전>
  1. 헤더
    • 요청과 관련된 추가 정보를 전달한다.
    • 형식:
      Header-Name: Value
  1. 공백 줄
    • 헤더와 본문을 구분하는 역할.
  1. 본문(Body, Optional)
    • 요청과 함께 전송할 데이터.
    • POST, PUT, PATCH 같은 메서드에서 주로 사용됨.

요청 메시지 예시

  • 새로운 사용자 등록 요청:
    POST /users HTTP/1.1
    Host: example.com
    Content-Type: application/json
    Content-Length: 57
    
    { "username": "new_user", "email": "user@example.com" }

1. 시작 줄 :

  • POST: 데이터를 서버에 추가하기 위한 요청.
  • /users: 요청 대상 URI는 /users.
  • HTTP/1.1: 요청에 사용된 HTTP 프로토콜 버전.

2. 헤더:

  • Host: 요청이 도착할 서버의 도메인(example.com).
  • Content-Type: 본문 데이터의 형식이 JSON임을 나타냄.
  • Content-Lengh: 본문 데이터의 길이가 57바이트임.

3. 본문:

  • JSON 형식으로 새로운 사용자의 정보를 포함.

HTTP 응답 메시지 구조

  1. 시작 줄
    • 서버의 응답 상태를 정의한다.
    • 형식:
      <HTTP 버전> <상태 코드> <상태 메시지>
  1. 헤더
    • 응답에 대한 부가 정보를 전달한다.
    • 형식:
      Header-Name: Value
  1. 공백 줄
    • 헤더와 본문을 구분하는 역할.
  1. 본문(Body, Optional)
    • 요청 결과를 포함하거나 클라이언트에 반환할 데이터.

응답 메시지 예시

  • 사용자 등록 성공 응답:
    HTTP/1.1 201 Created
    Content-Type: application/json
    Content-Length: 36
    
    { "id": 1, "username": "new_user" }

1. 시작 줄 :

  • Created: 상태 코드의 의미를 설명하는 메시지.
  • 201: 새로운 리소스 생성 성공을 나타내는 상태 코드.
  • HTTP/1.1: 응답에 사용된 HTTP 프로토콜 버전.

2. 헤더:

  • Content-Type: 응답 데이터의 형식이 JSON임을 나타냄.
  • Content-Lengh: 본문 데이터의 길이가 36바이트임.

3. 본문:

  • 서버에서 생성된 사용자의 ID와 이름 정보를 포함.

요청과 응답 메시지 비교

구분요청 메시지응답 메시지
시작 줄메서드, URI, HTTP 버전HTTP 버전, 상태 코드, 상태 메시지
헤더요청 메타데이터 (Host, Content-Type 등)응답 메타데이터 (Content-Type, Length 등)
본문(Optional)클라이언트가 서버로 보낼 데이터서버가 클라이언트로 전달할 데이터

HTTP 메시지 주요 헤더

1. 요청 헤더

  • Host: 요청의 대상 서버 정보.
  • Content-Type: 요청 본문의 데이터 형식.
  • Authorization: 클라이언트 인증 정보.

2. 응답 헤더

  • Content-Type: 응답 본문의 데이터 형식.
  • Cache-Control: 응답 데이터의 캐싱 정책.
  • Location: 리소스가 이동된 경우, 새 URL 정보.

HTTP 메시지 활용 예시

사용자 정보 수정 요청과 응답

  • 요청 메시지:
    PUT /users/1 HTTP/1.1
    Host: example.com
    Content-Type: application/json
    Content-Length: 45
    
    { "username": "updated_user", "email": "new@example.com" }
  • 응답 메시지:
    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 58
    
    { "id": 1, "username": "updated_user", "email": "new@example.com" }

요청은 사용자 정보를 업데이트하고, 응답은 수정된 데이터를 반환한다.

이렇듯 HTTP 메시지는 요청과 응답의 모든 데이터를 담는 구조로, 시작 줄, 헤더, 본문으로 이루어짐. 이를 통해 클라이언트와 서버가 명확한 데이터를 교환하며 통신한다.

profile
강세민

0개의 댓글