네트워크

[네트워크] HTTP 요청과 응답

연화 2025. 1. 4. 22:08

 

웹 개발에서 HTTP 요청과 응답은 서버와 클라이언트 간의 상호작용을 정의하는 기본적인 구성 요소입니다.
HTTP는 클라이언트가 서버에 특정 작업을 요청하고, 서버는 해당 작업의 결과를 클라이언트에 반환하는 방식으로 작동합니다. 이번 포스팅에서는 HTTP 요청과 응답의 구조와 주요 특징을 살펴보겠습니다.

 

1. HTTP 요청: 클라이언트의 요구사항

HTTP 요청은 서버에게 특정 동작을 요구하는 메시지입니다. 서버는 해당 동작이 실현 가능한지, 클라이언트가 그러한 동작을 요청할 권한이 있는지 등을 검토하고, 적절할 때만 이를 처리합니다.

HTTP 요청의 시작 줄은 요청의 가장 중요한 세 가지 요소로 구성됩니다:

  • 메소드(Method)
  • 요청 URI(Request-URI)
  • HTTP 버전(HTTP Version)

각 요소는 띄어쓰기로 구분됩니다.

메소드(Method)

HTTP 메소드는 클라이언트가 서버에 특정 동작을 요청하는 방식입니다. 메소드는 URI로 지정된 리소스에 대해 서버가 수행해야 할 동작을 나타내며, 각 메소드는 특정 목적과 특징을 가지고 있습니다. HTTP/1.1 표준에 정의된 메소드는 8개이며, 가장 자주 사용되는 메소드는 GETPOST입니다.

  • GET 메소드
    서버로부터 리소스를 가져오는 요청입니다. 이용자가 브라우저에 웹 서버의 주소를 입력하거나 하이퍼링크를 클릭하면, 새로운 페이지를 렌더링하기 위해 리소스가 필요합니다. 이때 브라우저는 GET 요청을 서버에 전송하여 리소스를 받아옵니다.
  • POST 메소드
    서버로 데이터를 전송하는 요청입니다. 전송할 데이터는 보통 HTTP 바디에 포함됩니다. 로그인할 때 입력하는 ID와 비밀번호, 게시판에 작성하는 글 등이 POST로 서버에 보내집니다.이 외에 요청 URI는 메소드의 대상을, HTTP 버전은 클라이언트가 사용하는 HTTP 프로토콜의 버전을 나타냅니다.
메소드 주요 기능 특징 사용 예
GET 리소스를 조회 - 요청 데이터를 URL 쿼리로 전달
- 캐싱 가능
- HTTP 바디 사용 안 함
페이지 조회
데이터 검색
POST 데이터 전송 및 리소스 생성 - 요청 데이터를 HTTP 바디에 포함
- 캐싱 불가
- 민감한 데이터 전송에 적합
회원가입
로그인
데이터 제출
PUT 리소스 생성 또는 전체 업데이트 - 요청 데이터로 기존 리소스를 교체하거나 새로 생성
- 요청 데이터는 리소스의 전체 정보 포함
데이터 전체 갱신
PATCH 리소스 일부 업데이트 - 요청 데이터로 리소스의 일부를 수정
- 수정할 데이터만 전송
특정 필드 업데이트
DELETE 리소스 삭제 - 요청된 리소스를 서버에서 삭제
- 논리적 삭제와 물리적 삭제는 서버 구현에 따라 다름
게시글 삭제
사용자 계정 삭제
HEAD 리소스의 헤더 정보 조회 - GET과 유사하지만 응답 바디 제외
- 리소스의 상태나 존재 여부 확인
리소스 존재 여부 확인
OPTIONS 지원 메소드 정보 요청 - 서버가 리소스에 대해 허용하는 HTTP 메소드 반환
- CORS 설정 확인에 자주 사용
서버의 허용 메소드 확인
TRACE 요청-응답 경로 디버깅 - 요청 메시지를 그대로 응답으로 반환
- 디버깅용으로 사용되며, 보안 문제로 거의 사용되지 않음
네트워크 경로 추적

💡 HTTP 요청의 메소드 및 URI에 대해 더 자세히 알고 싶다면, 표준 문서를 확인해 봅시다.

 

2. HTTP 응답: 서버의 처리 결과

HTTP 응답은 클라이언트가 보낸 요청에 대한 처리 결과를 반환하는 메시지입니다. 요청을 수행했는지, 하지 않았는지, 안 했다면 이유는 무엇인지와 같은 상태 정보(Status), 그리고 클라이언트에게 전송할 리소스가 응답에 포함됩니다.

HTTP 응답의 시작 줄은 다음 세 가지 요소로 구성되며, 각 요소는 띄어쓰기로 구분됩니다.

  • HTTP 버전(HTTP Version)
  • 상태 코드(Status Code)
  • 처리 사유(Reason Phrase)

1) HTTP 버전(HTTP Version)

서버에서 사용하는 HTTP 프로토콜의 버전을 나타냅니다.

2) 상태 코드(Status Code)

요청 처리 결과를 나타내는 3자리 숫자입니다.
HTTP 표준인 RFC 2616은 대략 40여개의 상태 코드를 정의하고 있는데, 각각은 첫 번째 자릿수에 따라 5개의 클래스로 분류됩니다. 처리 사유는 상태 코드가 발생한 이유를 짧게 기술한 것입니다.

  • 1xx (정보): 요청을 처리 중이라는 중간 상태.
  • 2xx (성공): 요청이 성공적으로 처리됨. (예: 200 OK)
  • 3xx (리다이렉션): 요청된 리소스가 다른 위치로 이동됨. (예: 301 Moved Permanently)
  • 4xx (클라이언트 오류): 클라이언트 요청에 오류가 있음. (예: 404 Not Found)
  • 5xx (서버 오류): 서버에서 요청 처리 중 문제가 발생함. (예: 500 Internal Server Error)

3) 처리 사유(Reason Phrase)

상태 코드의 의미를 설명하는 짧은 텍스트입니다. 예를 들어, 200 OK에서 OK는 요청이 성공적으로 처리되었음을 나타냅니다.

 

HTTP 요청과 응답은 클라이언트와 서버 간의 통신에서 핵심 역할을 담당합니다.
시작 줄의 구조와 상태 코드를 정확히 이해하면, HTTP 기반의 애플리케이션을 설계하고 디버깅하는 데 큰 도움이 됩니다.

 

👍 HTTP 요청과 응답에는 시작 줄 외에도 헤더(Header)와 본문(Body)이 포함됩니다. 더 알고 싶다면?

 

[네트워크] HTTP 메시지란?

HTTP 메시지는 웹 클라이언트와 서버 간의 통신을 위해 사용되는 데이터의 형식입니다.클라이언트가 서버로 전송하는 HTTP 요청(Request)서버가 클라이언트로 반환하는 HTTP 응답(Response)HTTP 메시지에

dev-yeonwha.tistory.com

👌 HTTP 상태 코드에 대해 궁금하다면?

 

[네트워크] HTTP 상태코드 정리

HTTP 상태 코드는 서버가 클라이언트 요청을 처리한 결과를 나타내며, 숫자와 짧은 설명(Reason Phrase)으로 구성됩니다. 상태 코드는 첫 번째 자릿수를 기준으로 5개의 클래스(Class)로 분류됩니다.1xx:

dev-yeonwha.tistory.com