HTTP 메시지와 구성 요소
CS

HTTP 메시지와 구성 요소

1. HTTP 메시지

1) 개요

HTTP는 서버-클라이언트 구조로, 클라이언트가 요청하고 서버가 응답하는 단방향 통신이다.

이때 각 호스트가 보내는 데이터는 HTTP 메시지 구조를 가진다.

 

HTTP 메시지는 요청 메시지와 응답 메시지로 나뉘고 크게 라인, 헤더, 바디로 구성된다.

2) 요청 메시지

HTTP 요청 메시지 구조

클라이언트가 서버에게 전송하는 데이터

  • 라인(Line)
    • HTTP 메서드
    • 요청할 리소스의 경로 또는 이름 (URI)
    • 프로토콜 버전
  • 헤더(Header)
    • 요청 메시지의 메타데이터를 포함하는 부분
    • 미디어 타입, 요청 호스트 정보 등 요청에 대한 부가적인 정보를 나타낸다.
    • Host, User-Agent, Accept, Content-Type 등이 있다.
Host와 User-Agent는 각각 요청 호스트 IP와 클라이언트 애플리케이션 정보를 나타내고
Accept와 Content-Type은 각각 클라이언트가 수용할 수 있는 미디어 타입, 메시지 본문의 미디어 타입을 나타낸다.
  • 바디(Body)
    • 요청 메시지 본문을 포함하는 부분
    • 서버로 전송할 데이터가 포함되며, 없을 시 생략할 수 있다.

3) 응답 메시지

HTTP 응답 메시지 구조

요청에 대한 응답으로 서버가 클라이언트에게 전송하는 데이터

  • 라인
    • 상태 코드: 성공, 실패 등 요청의 처리 상태를 나타내는 코드
    • 상태 메시지: 상태 코드를 설명하는 짧은 문장
보편적으로 사용하는 상태 코드가 있지만 절대적인 것은 아니다.
  • 헤더
    • 응답 메시지의 메타데이터를 포함하는 부분
    • 미디어 타입, 서버 정보, 쿠키, 캐싱 등 응답에 대한 부가적인 정보를 나타낸다.
    • Content-Type, Content-Length, Server, Set-Cookie, Location 등이 있다.
Content-Type, Content-Length는 각각 메시지 본문의 미디어 타입과 길이를 나타내고
Server와 Location은 각각 서버 소프트웨어 정보와 추가적인 URL을 나타낸다.
  • 바디
    • 응답 메시지의 본문을 포함하는 부분
    • 클라이언트가 요청한 서버의 리소스 데이터를 포함한다.

2. HTTP 메서드

HTTP 메서드의 종류

1) 개요

클라이언트에서 서버로 요청을 보낼 때 사용하는 명령어로 요청의 구체적인 동작을 의미한다.

2) 종류

  • GET
    • 주로 리소스를 요청하고 읽을 때 사용한다.
    • 데이터를 전송하지 않으므로 바디 및 관련 헤더가 생략된다.
    • URL에 요청 파라미터(쿼리 스트링)를 포함해서 원하는 데이터를 검색하고 필터링 할 수 있다.
    • 캐싱으로 같은 요청에 대한 응답을 저장하여 처리 속도를 높일 수 있다.
  • POST
    • 서버로 데이터를 전송하기 위해 사용되며, 주로 새로운 리소스를 생성할 때 사용한다.
    • 바디에 데이터를 포함하여 전송한다.
    • 같은 경로로 동일한 데이터를 여러번 전송하면 서로 다른 리소스가 여러개 생성된다.
  • PUT
    • 리소스를 업데이트하기 위해 주로 사용되며, 리소스가 존재하지 않으면 새로 생성한다.
    • 새로 업데이트할(대체할) 데이터를 본문에 포함하여 전송한다.
    • POST와 다르게 동일한 데이터를 여러번 전송해도 하나의 리소스만 생성된다.
  • PATCH
    • 리소스의 일부분만 업데이트하기 위해 주로 사용된다.
    • PUT은 리소스 전체를 업데이트하지만 PATCH는 일부분만 업데이트가 가능하다.
    • 업데이트할 일부분의 데이터를 본문에 포함하여 전송한다.
  • DELETE
    • 리소스를 삭제하기 위해 사용된다.
  • HEAD
    • GET과 유사하지만 바디를 제외한 리소스 정보만을 요청하기 위해 사용한다.
    • 주로 리소스 존재 여부를 확인하거나 서버의 응답 속도를 측정할 때 사용된다.
    • GET과 마찬가지로 캐싱이 가능하다.
  • OPTIONS
    • 해당 리소스에 대해 서버가 지원하는 메서드 종류를 확인하기 위해 사용한다.
GET, DELETE, HEAD 메서드처럼 URL에 요청 파라미터가 노출될 경우 보안에 취약할 수 있다.

참고 문서

HTTP 메서드란?

'CS' 카테고리의 다른 글

URL의 구성 요소와 웹 통신 과정  (0) 2023.03.16
HTTP 버전별 특징 정리  (0) 2023.03.02
HTTP vs HTTPS (feat. 대칭키, 공개키)  (0) 2023.02.28
TCP vs UDP  (0) 2023.02.26
OSI 7계층에 대하여  (0) 2023.02.24