HTTP 요청의 구조와 통신 과정 / HTTP 메서드

2025. 3. 21. 19:02·BackEnd

HTTP 요청의 구조와 통신 과정


HTTP는 서버-클라이언트 구조에서 통신을 위한 프로토콜이며 클라이언트의 요청과 서버의 응답은 정해진 구조에 맞게 구성되어 전달된다.

클라이언트의 요청

클라이언트에서 서버로 전달되는 요청의 구조는 요청라인, 헤더(Header), 본문(Body)로 구성된다.

서버의 응답

서버에서 클라이언트로 전달되는 응답의 구조는 상태라인, 헤더(Header), 본문(Body)로 구성된다.

HTTP요청과 응답의 구성 요소

  • 요청 라인(Start line)

    • 클라이언트가 서버로 전달하려고 하는 요청의 세부적인 경로인 URL과 요청의 종류를 나타내는 HTTP 메서드 등이 포함되어 있다.
  • 상태 라인(Status line)

    • 서버가 클라이언트로 전달하는 요청의 상태를 표현하는 상태 텍스트(Status Text)와 이를 숫자로 나타낸 상태 코드(Status Code)등이 포함되어 있다.
  • 헤더(Header)

    • 요청과 응답에 공통적으로 존재하는 요소
    • 요청과 응답에 대한 추가적인 정보가 담겨있다.
    • General header, Request header, Response header, Entity header 등으로 나누어진다.
    • 주로 사용자를 식별하기 위한 토큰과 같은 정보가 포함되어 있다.
  • 본문(Body)

    • 요청과 응답에 공통적으로 존재하는 요소

    • 요청과 응답이 전송하는 데이터가 존재하는 부분

    • text, form data, json, xml 등의 다양한 형태의 데이터가 포함되고 최근에는 주로 json 형태를 사용한다.

    • 전달해야할 데이터가 존재하지 않는다면, 본문(Body)는 비어있을 수 있다.

    • json 예시

      {"userId" : "id", "password" : "password"}

HTTP 요청 메시지 예시

# start line
POST /login HTTP/1.1    # http method, url, http버전 순으로 나열됨
# header
Host: google.com
connection: keep-alive
User-Agent: Mozilla/5.0
Accept: application/json
# body
{"userId" : "id", "password" : "password"}

HTTP 응답 메시지 예시

# http response message
# status line
HTTP/1.1 200 OK    # http버전, status code, status text 순으로 나열됨
# header
connection: keep-alive
server: nginx/1.24.0 (Ubuntu)
content-type: application/
# body
{"message" : "Login Success"}



HTTP 상태코드에 대한 자세한 내용은 아래 링크를 참고해주세요!!

2025.03.06 - [백엔드] - HTTP 상태코드


HTTP 메서드


클라이언트는 요청의 의도를 표현하기 위해 총 9가지의 HTTP 메서드(method)를 사용함.
서버는 HTTP 메서드(method)를 통해 클라이언트가 원하는 동작을 처리함

HTTP method 종류와 의미

  • GET: 서버가 가지고 있는 리소스를 조회
    • Query(RequestParameter, PathVariable)을 통해 전달
    • Body를 통해서도 데이터를 전달할 수 있지만 거의 사용하지 않음
  • POST: 리소스를 새롭게 등록하거나 적절한 처리를 요청
    • 주로 Body를 통해 데이터를 전달하고 서버는 이를 등록하거나 처리하여 클라이언트가 원하는 결과를 반환함
  • PUT: 리소스를 기존 리소스와 교체하거나 새롭게 등록
    • 클라이언트가 리소스를 특정하여 QueryString을 통해 _직접 리소스의 위치를 URL로 지정_하며 변경할 데이터는 Body를 통해 전달함
  • PATCH: 리소스의 일부만 수정
    • PUT과 유사하지만 기존 데이터의 일부만 수정한다는 것과 기존 리소스가 존재하지 않을때 새롭게 등록하지 않는다는 차이가 존재함
  • DELETE: 기존 리소스를 삭제
    • 클라이언트가 리소스를 QueryString을 통해 URL을 만들어 지정한다.
    • 삭제를 하는것이기 때문에 Body가 존재하지 않는다.
  • 이외에도 HEAD, OPTIONS, CONNECT, TRACE가 존재함

'BackEnd' 카테고리의 다른 글

API의 구현과 API 명세서-2  (1) 2025.03.25
API의 구현과 API 명세서-1  (2) 2025.03.21
클라이언트-서버 구조와 HTTP란?  (0) 2025.03.21
HTTP 헤더2 - 캐시와 조건부 요청  (0) 2025.03.19
HTTP 헤더1 - 일반 헤더  (2) 2025.03.18
'BackEnd' 카테고리의 다른 글
  • API의 구현과 API 명세서-2
  • API의 구현과 API 명세서-1
  • 클라이언트-서버 구조와 HTTP란?
  • HTTP 헤더2 - 캐시와 조건부 요청
devStudent
devStudent
저의 개발(Development) 공부(Study) 기록을 추적(Tracing) 하는 블로그입니다!
  • devStudent
    Dev_Study_Trace
    devStudent
  • 전체
    오늘
    어제
    • 분류 전체보기 (23)
      • BackEnd (11)
      • DevOps (4)
      • Algorithm (7)
      • DDD 12기 (Server) (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    boj 1992
    분할 정복 알고리즘
    boj1068
    백준 1068번
    리버스 프록시
    프록시 실습
    http 상태코드
    docker
    백준
    백준 1092
    알고리즘
    yml
    boj
    GitHub Actions
    도커
    Divide and conquer
    NGINX
    devops
    쿠버네티스
    데브 옵스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
devStudent
HTTP 요청의 구조와 통신 과정 / HTTP 메서드
상단으로

티스토리툴바