네트워크/HTTP

HTTP 상태 코드: 1xx (정보 응답)

shimdh 2025. 3. 1. 00:58
728x90

웹에서 클라이언트와 서버 간의 통신은 HTTP 상태 코드를 통해 요청 및 응답의 상태를 전달하며, 이들은 웹 개발 및 디버깅 과정에서 중요한 역할을 합니다. HTTP 상태 코드는 크게 1xx, 2xx, 3xx, 4xx, 5xx 그룹으로 분류되며, 1xx 상태 코드는 정보성 응답(Informational Responses) 으로 사용됩니다.

이 그룹에 속하는 상태 코드는 클라이언트에게 요청이 수신되었고 현재 처리 중임을 알리는 역할을 합니다. 즉, 요청이 최종적으로 완료되지 않았음을 의미하며, 클라이언트가 추가적인 작업을 수행할 수 있도록 중간 응답을 제공합니다. 이러한 코드는 특히 비동기 작업 처리 및 프로토콜 전환 시 유용하게 활용됩니다.


1xx 상태 코드 개요

1xx 상태 코드는 서버가 클라이언트의 요청을 이해했으며, 이를 처리하고 있음을 나타냅니다. 하지만 최종적인 응답은 아니며, 추가적인 요청 또는 처리가 필요합니다. 주로 긴 시간 동안 수행되는 작업이나 프로토콜 전환이 필요한 경우에 사용되며, 클라이언트가 불필요하게 연결을 종료하지 않도록 돕습니다.


주요 1xx 상태 코드

1. 100 Continue

  • 설명:
    100 Continue 상태 코드는 클라이언트가 서버로 대용량 데이터를 전송하는 과정에서 사용됩니다. 클라이언트가 요청 헤더를 먼저 보내면, 서버는 이를 확인한 후 100 Continue 응답을 반환하여 본문 데이터를 계속 전송하도록 허용합니다.
    이를 통해 클라이언트는 불필요한 데이터 전송을 방지할 수 있으며, 서버도 요청을 검토한 후 본문 데이터를 받을 수 있습니다.

  • 실용 예시:

    • 대용량 파일 업로드 시, 클라이언트는 먼저 요청 헤더를 전송하고 서버의 응답을 기다립니다.
    • 서버가 100 Continue를 반환하면 클라이언트는 본문 데이터를 전송합니다.
    • 만약 요청이 잘못되었거나 인증이 필요하다면 서버는 100 Continue 대신 4xx 또는 5xx 상태 코드로 응답할 수 있습니다.
  • 예제 요청 및 응답:

    POST /upload HTTP/1.1
    Host: example.com
    Content-Length: 5000000
    Expect: 100-continue

    서버 응답:

    HTTP/1.1 100 Continue

    이후 클라이언트가 본문 데이터를 전송합니다.


2. 101 Switching Protocols

  • 설명:
    클라이언트가 서버에 특정 프로토콜로 전환할 것을 요청했으며, 서버가 이를 승인했음을 의미합니다.
    이는 HTTP에서 다른 프로토콜(WebSocket, HTTP/2 등)로 변경할 때 사용됩니다.

  • 실용 예시:

    • 웹 브라우저가 서버와의 WebSocket 연결을 설정하기 위해 기존 HTTP 프로토콜에서 전환할 때 사용됩니다.
    • HTTP/1.1에서 HTTP/2 또는 HTTP/3 등 새로운 버전의 프로토콜로 변경하는 과정에서도 사용될 수 있습니다.
  • 예제 요청 및 응답:

    GET /chat HTTP/1.1
    Host: example.com
    Upgrade: websocket
    Connection: Upgrade

    서버 응답:

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade

    이후, 연결은 HTTP에서 WebSocket으로 변경됩니다.


3. 102 Processing (WebDAV)

  • 설명:
    클라이언트의 요청이 처리 중이지만 아직 완료되지 않았음을 나타내는 코드입니다.
    이는 특히 WebDAV(웹 기반 분산 저작 및 버전 관리) 프로토콜에서 사용됩니다.

  • 실용 예시:

    • 대용량 데이터 업데이트가 필요할 때, 서버는 102 Processing 응답을 보냄으로써 클라이언트가 연결을 닫지 않고 기다릴 수 있도록 유도합니다.
    • 복잡한 데이터베이스 트랜잭션이 실행 중일 때도 사용될 수 있습니다.
  • 예제 요청 및 응답:

    PROPFIND /files HTTP/1.1
    Host: example.com

    서버가 처리가 길어질 경우:

    HTTP/1.1 102 Processing

    이후, 처리가 완료되면 최종적인 응답을 클라이언트에 전송합니다.


1xx 상태 코드의 중요성

1xx 상태 코드는 HTTP 프로토콜에서 비동기 작업을 효율적으로 관리하는 데 중요한 역할을 합니다. 주요 장점은 다음과 같습니다.

1. 비동기 작업 지원

  • 클라이언트가 요청을 보낸 후 즉각적인 응답을 받지 못하는 경우, 1xx 응답을 통해 작업이 진행 중임을 알릴 수 있습니다.
  • 이는 특히 대기 시간이 긴 요청(대용량 데이터 처리, 복잡한 연산 등) 에서 유용하게 활용됩니다.

2. 프로토콜 확장성 지원

  • HTTP는 계속해서 발전하고 있으며, 새로운 프로토콜(WebSocket, HTTP/2, HTTP/3) 로의 전환이 필요할 수 있습니다.
  • 101 Switching Protocols 코드를 활용하면 이러한 전환이 원활하게 이루어질 수 있습니다.

3. 네트워크 효율성 향상

  • 100 Continue를 활용하면 클라이언트는 불필요한 데이터 전송을 방지할 수 있으며, 서버도 부담을 줄일 수 있습니다.
  • 이를 통해 대역폭 절약 및 성능 최적화가 가능해집니다.

요약 및 결론

HTTP 상태 코드 1xx는 정보 제공을 목적으로 하는 응답 그룹으로, 요청이 완전히 처리되기 전 중간 상태를 나타냅니다.
이러한 코드는 클라이언트가 요청을 지속해야 하는지, 프로토콜을 변경해야 하는지 등을 알려주며, 웹 애플리케이션에서 비동기 작업 최적화 및 네트워크 효율성을 개선하는 데 기여합니다.

핵심 정리

  • 100 Continue → 클라이언트가 본문 데이터를 전송할 준비가 되었음을 알림.
  • 101 Switching Protocols → 서버가 요청된 프로토콜 변경을 승인함.
  • 102 Processing → 요청이 처리 중이며, 완료되지 않았음을 알림.

이러한 상태 코드를 이해하고 활용하면 API 설계, 서버 최적화, 네트워크 관리 등의 다양한 영역에서 더욱 효율적인 웹 환경을 구축할 수 있습니다.

728x90

'네트워크 > HTTP' 카테고리의 다른 글

HTTP 상태 코드: 3xx (리다이렉션)  (0) 2025.03.01
HTTP 상태 코드: 2xx (성공)  (0) 2025.03.01
HTTP 메서드: OPTIONS  (0) 2025.03.01
HTTP 메서드: HEAD  (0) 2025.03.01
HTTP 메서드: DELETE 심층 분석  (0) 2025.03.01