네트워크/HTTP

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

shimdh 2025. 3. 5. 10:08
728x90

웹에서 클라이언트와 서버 간의 원활한 통신을 위해 HTTP 상태 코드는 중요한 역할을 합니다. 그중에서도 1xx(정보) 상태 코드는 클라이언트가 보낸 요청이 정상적으로 수신되었으며, 처리가 진행 중이라는 정보를 제공하는 중간 응답(interim response) 입니다.

이러한 코드들은 최종적인 응답을 의미하는 것이 아니라, 클라이언트가 요청을 계속 진행할 수 있도록 안내하는 역할을 합니다. 주로 비동기 처리, 프로토콜 전환, 대용량 데이터 전송과 같은 특정 상황에서 사용됩니다.


1. 1xx 상태 코드란?

1xx 상태 코드는 HTTP 통신에서 요청이 정상적으로 수신되었음을 알리며, 추가적인 처리가 필요함을 의미하는 응답 코드입니다.

1xx 상태 코드의 주요 목적

  • 처리 진행 안내: 클라이언트가 보낸 요청을 서버가 인식했으며, 요청을 계속 진행할 수 있음을 알립니다.
  • 비동기 작업 지원: 일부 요청은 시간이 오래 걸릴 수 있는데, 1xx 응답을 통해 클라이언트에게 처리가 진행 중임을 알릴 수 있습니다.
  • 효율적인 리소스 관리: 대량의 데이터를 전송하기 전에 서버가 이를 받을 준비가 되었는지 확인할 수 있습니다.

📌 1xx 상태 코드는 최종 응답이 아니며, 이후에 반드시 2xx, 3xx, 4xx, 5xx 상태 코드 중 하나가 따라와야 합니다.


2. 주요 1xx 상태 코드

1) 100 Continue

💡 클라이언트가 대용량 데이터를 전송하기 전에 서버로부터 전송 가능 여부를 확인하는 용도

📌 설명:

  • 클라이언트가 Expect: 100-continue 헤더를 포함하여 요청을 보낼 경우, 서버가 이를 수락하면 100 Continue 응답을 보냅니다.
  • 이후 클라이언트는 본문(body) 데이터를 전송할 수 있습니다.
  • 이를 통해 불필요한 데이터 전송을 방지하고 네트워크 효율성을 높일 수 있습니다.

📌 사용 사례:

  • 대용량 파일 업로드 시, 서버가 업로드를 수락할 준비가 되었는지 확인 후 전송 진행.
  • API 요청 시 본문이 포함된 PUT, POST 요청의 사전 확인 과정.

📌 요청 예시:

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

📌 서버 응답:

HTTP/1.1 100 Continue

📌 클라이언트가 본문을 전송:

(binary file data...)

📌 효과: 서버가 업로드를 수락할 준비가 되었는지 확인 후 데이터를 전송하므로, 불필요한 대역폭 낭비를 방지할 수 있습니다.


2) 101 Switching Protocols

💡 클라이언트가 사용 중인 프로토콜을 변경하고자 할 때 서버가 승인할 경우 반환되는 응답 코드

📌 설명:

  • HTTP/1.1에서는 기본적으로 텍스트 기반 요청/응답이 이루어지지만, WebSocket과 같은 실시간 프로토콜로 변경이 필요할 경우 사용됩니다.
  • 클라이언트가 Upgrade 헤더를 사용하여 새로운 프로토콜을 요청하면, 서버가 이를 승인하면 101 Switching Protocols 응답을 보냅니다.

📌 사용 사례:

  • WebSocket 연결을 설정하여 실시간 채팅이나 스트리밍 서비스를 제공할 때.
  • SPDY 또는 HTTP/2로의 프로토콜 전환.

📌 요청 예시:

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

📌 서버 응답:

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

📌 효과: 클라이언트는 이제 WebSocket 프로토콜을 사용할 수 있으며, 실시간 양방향 통신이 가능해집니다.


3) 102 Processing (WebDAV)

💡 WebDAV(Web Distributed Authoring and Versioning) 요청이 시간이 오래 걸릴 경우, 클라이언트에게 진행 중임을 알리는 응답 코드

📌 설명:

  • WebDAV 확장 기능을 사용하는 애플리케이션에서 파일 이동, 복사, 대량 업데이트 등의 작업이 장시간 걸릴 경우 클라이언트가 타임아웃 없이 기다릴 수 있도록 응답합니다.
  • 이는 서버가 요청을 처리하고 있으며, 최종 응답이 도착하기 전에 클라이언트가 연결을 끊지 않도록 도와줍니다.

📌 사용 사례:

  • 대용량 파일 이동 또는 삭제 요청.
  • 복잡한 쿼리를 실행하는 API 요청.

📌 요청 예시:

PROPFIND /resource HTTP/1.1
Host: example.com

📌 서버 응답:

HTTP/1.1 102 Processing

📌 효과: 클라이언트는 서버가 요청을 수락하고 처리 중임을 알 수 있으며, 연결을 유지하며 기다릴 수 있습니다.


3. 1xx 상태 코드의 활용 사례

1) 대규모 데이터 전송 최적화 (100 Continue 활용)

  • 클라이언트가 대용량 데이터를 업로드하기 전에 서버가 요청을 수락할 준비가 되었는지 확인하는 데 사용.
  • 불필요한 데이터 전송을 방지하여 네트워크 리소스를 절약할 수 있음.

2) 실시간 통신(WebSocket) 지원 (101 Switching Protocols 활용)

  • WebSocket, HTTP/2와 같은 새로운 프로토콜을 지원하는 경우 클라이언트와 서버 간의 원활한 전환을 보장.
  • 채팅, 스트리밍, 금융 트랜잭션과 같은 실시간 서비스에 필수적.

3) 장시간 요청 처리 중단 방지 (102 Processing 활용)

  • 파일 이동, 대량 데이터 연산과 같은 작업이 장시간 소요될 경우 클라이언트가 타임아웃 없이 대기할 수 있도록 지원.

4. 1xx 상태 코드 사용 시 주의사항

1) 1xx 응답은 최종 응답이 아님

  • 이후에 반드시 2xx(성공), 3xx(리다이렉트), 4xx(클라이언트 오류), 5xx(서버 오류) 상태 코드 중 하나가 뒤따라야 함.

2) 모든 서버가 1xx 상태 코드를 지원하는 것은 아님

  • 일부 오래된 서버나 프록시 환경에서는 1xx 상태 코드를 지원하지 않을 수도 있으므로, 사용 여부를 테스트해야 함.

3) 클라이언트가 1xx 응답을 처리할 준비가 되어 있어야 함

  • 브라우저나 API 클라이언트가 100 Continue를 올바르게 처리할 수 있는지 확인해야 함.

5. 결론

1xx(정보) 상태 코드는 클라이언트와 서버 간의 비동기적 요청 처리 및 프로토콜 전환을 원활하게 하는 데 중요한 역할을 합니다.
100 Continue는 대용량 데이터 전송 최적화에 도움을 줍니다.
101 Switching Protocols는 WebSocket과 같은 실시간 프로토콜 전환을 지원합니다.
102 Processing은 장시간 실행되는 작업에서 클라이언트의 타임아웃을 방지합니다.

💡 1xx 상태 코드를 이해하고 적절히 활용하면, 더욱 효율적이고 최적화된 웹 애플리케이션을 구축할 수 있습니다! 🚀

728x90

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

HTTP 상태 코드: 3xx (리다이렉션)  (0) 2025.03.05
HTTP 상태 코드: 2xx (성공)  (0) 2025.03.05
HTTP 메서드: HEAD 메서드  (0) 2025.03.05
HTTP 메서드: OPTIONS 메서드  (0) 2025.03.05
HTTP 메서드: PATCH 메서드  (0) 2025.03.05