HTTP 요청 / 응답 구조

스머리·2023년 11월 7일

HTTP의 특징

  1. 클라이언트-서버 구조
    • HTTP는 클라이언트가 서버에 데이터를 요청(request)하고, 해당 요청에 대해 서버가 응답하는 (response) 구조로 동작한다. 여기서 클라이언트는 서버에 작업을 요청하는 컴퓨터 또는 응용 프로그램(웹 브라우저)이고, 서버는 클라이언트의 요청을 받아 처리하는 컴퓨터 또는 응용프로그램이다.
  2. 비연결성 (connectionless)
    • HTTP에서는 클라이언트가 서버로 작업을 요청해 응답을 받으면 연결을 끊는데, 이를 비연결성(connectionless)이라고 한다. 여러 클라이언트와 통신하는 서버 입장에서는 요청이 있을 때만 연결을 유지하면 되므로 통신에 따른 과부하가 줄어든다. 하지만 요청이 있을 때마다 연결 설정을 새로 해야 하는 부담이 따른다.
  3. 무상태 (stateless)
    • HTTP는 상태를 유지하지 않는 무상태 (stateless) 프로토콜이다. 상태를 유지하지 않는다는 것은 서버가 클라이언트의 이전 요청이나 [[세션]] 정보를 기억하지 않는다는 것을 의미한다. 클라이언트가 요청하는 각각의 정보는 독립적으로 처리되며, 서버는 클라이언트의 이전 상태에 대한 정보를 저장하지 않는다. 따라서 무상태로 동작하는 HTTP를 따르면 서버의 부담이 줄어들고 네트워크의 확장성을 향상할 수 있다.

요청 메시지 (Request)


1. 시작 행: HTTP 메서드(요청 내용), 요청 URL(요청을 보내는 서버 주소), HTTP 버전이 들어간다.
2. 헤더: 요청과 관련된 부가 정보가 들어간다.
3. 공백 행: 헤더의 끝을 표시하기 위해 빈 행을 넣는다.
4. 본문: 요청 내용에 따라 생략할 수 있다. 어떤 데이터를 저장하거나 수정하라는 요청의 경우 본문이 들어가고, 단순 조회 또는 삭제하라는 요청의 경우 본문이 들어가지 않는다.

응답 메시지 (Response)


1. 시작 행: HTTP 버전, 상태 코드와 상태 메시지(요청에 대한 응답 상태와 메시지)가 들어간다.
2. 헤더: 응답과 관련된 부가 정보가 들어간다.
3. 공백 행: 헤더의 끝을 표시하기 위해 빈 행을 넣는다.
4. 본문: 응답할 데이터가 있으면 전송한다.


HTTP 메세지 구조

profile
꾸준히 나아가는 프론트엔드 개발자

0개의 댓글