HTTP 상태 코드 1xx(정보 응답) 는 클라이언트의 요청이 정상적으로 수신되었으며, 현재 서버에서 처리가 진행 중임을 나타내는 코드입니다.
이러한 상태 코드는 최종적인 응답(2xx, 3xx, 4xx, 5xx)이 준비되기 전에 클라이언트에게 요청의 진행 상황을 알리는 역할을 합니다.
1xx 상태 코드는 일반적으로 브라우저나 애플리케이션에 의해 자동으로 처리되며, 사용자가 직접 볼 일은 거의 없습니다.
이번 글에서는 1xx 상태 코드의 개념, 주요 특징, 각 코드별 설명 및 실생활 활용 사례를 자세히 살펴보겠습니다.
1. 1xx 상태 코드란?
1xx 상태 코드는 정보 제공을 목적으로 하며, 클라이언트가 요청을 보낸 후 서버에서 추가적인 응답을 제공할 때 사용됩니다.
이러한 응답은 최종적인 결과를 제공하지 않으며, 단지 클라이언트가 다음 단계를 수행할 수 있도록 안내하는 역할을 합니다.
📌 1xx 응답의 기본 개념:
- 클라이언트 요청이 정상적으로 수신됨 → 서버가 처리를 계속할 것임을 알림.
- 최종 응답이 아님 → 클라이언트는 이후의 응답을 기다려야 함.
- 비차단적 응답 → 클라이언트가 추가 작업을 수행할 수 있도록 안내.
📌 1xx 상태 코드를 사용할 때의 이점:
- 대기 시간(Latency) 감소: 서버가 요청을 인식했음을 빠르게 알릴 수 있음.
- 네트워크 성능 향상: 대용량 데이터 전송 시 불필요한 데이터 송신을 방지 가능.
- 프로토콜 변경 지원: 클라이언트와 서버 간에 새로운 프로토콜로 변경 가능(WebSocket 등).
2. 주요 1xx 상태 코드
1️⃣ 100 Continue
📌 설명:
- 클라이언트가 요청 헤더를 전송한 후, 서버가 이를 받아들였다는 신호를 보내는 상태 코드.
- 클라이언트는 100 Continue 응답을 받은 후, 본문(body) 데이터를 전송할 수 있음.
📌 사용 사례:
- 대용량 파일 업로드 시 헤더만 먼저 전송하고, 서버의 응답을 받은 후 본문을 업로드.
- 불필요한 데이터 전송 방지: 서버가 요청을 거부할 경우, 전체 데이터를 보낼 필요가 없음.
📌 예제:
POST /upload HTTP/1.1
Host: example.com
Expect: 100-continue
Content-Length: 10485760 # 10MB 파일
📌 서버 응답 (헤더 확인 후 본문 전송 허용)
HTTP/1.1 100 Continue
- 클라이언트는 100 Continue 응답을 받은 후 파일 데이터를 전송 시작.
💡 대용량 데이터 전송을 최적화하여 서버 자원을 효율적으로 활용 가능.
2️⃣ 101 Switching Protocols
📌 설명:
- 클라이언트가 서버에게 다른 프로토콜로 변경을 요청했으며, 서버가 이를 승인했음을 의미.
- 주로 HTTP에서 WebSocket과 같은 프로토콜로 업그레이드할 때 사용됨.
📌 사용 사례:
- WebSocket 연결 설정 → HTTP 연결을 WebSocket으로 변경.
- 기타 프로토콜 변경 (예: HTTP → HTTP/2, HTTP → TLS 등).
📌 예제 (WebSocket 프로토콜 변경 요청)
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
📌 서버 응답 (프로토콜 변경 승인)
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
- 클라이언트는 이후 WebSocket 프로토콜을 사용하여 실시간 데이터 교환 가능.
💡 실시간 채팅, 주식 거래 시스템, 온라인 게임 등에서 WebSocket 기반의 실시간 통신을 지원할 때 필수적.
3️⃣ 102 Processing (WebDAV 전용)
📌 설명:
- 클라이언트의 요청이 수락되었지만, 처리 시간이 오래 걸리는 경우 서버가 이를 알리는 상태 코드.
- 일반적인 HTTP 요청에서는 사용되지 않으며, WebDAV(Web Distributed Authoring and Versioning) 프로토콜에서 사용됨.
📌 사용 사례:
- 대량의 데이터베이스 업데이트, 파일 변환, 복잡한 트랜잭션 처리 등의 장기 실행 작업.
- 클라이언트가 타임아웃을 방지하고 요청이 정상적으로 처리 중임을 확인할 수 있도록 함.
📌 예제:
HTTP/1.1 102 Processing
- 클라이언트는 응답을 기다리면서 다른 작업을 수행할 수 있음.
💡 대용량 데이터 처리나 복잡한 요청을 실행하는 API에서 유용하게 사용 가능.
3. 실생활 적용 예시
1️⃣ 대량 데이터 업로드 최적화 (100 Continue 활용)
🔹 사용 사례: 클라이언트가 10GB 동영상을 업로드할 때 100 Continue를 활용하여 서버가 요청을 받아들였는지 확인한 후 데이터를 전송.
📌 효과:
✅ 불필요한 데이터 전송 방지 → 서버가 거부할 경우, 데이터 업로드 중단.
✅ 업로드 성능 향상 → 클라이언트가 적절한 응답을 기다린 후 전송 가능.
2️⃣ 실시간 채팅 애플리케이션 (101 Switching Protocols 활용)
🔹 사용 사례: 채팅 앱에서 WebSocket을 활용하여 서버와 클라이언트 간의 실시간 통신을 설정.
📌 효과:
✅ 지속적인 연결 유지 가능 → 일반 HTTP 요청보다 훨씬 빠른 응답 속도 제공.
✅ 실시간 데이터 전송 최적화 → 채팅 메시지, 알림, 게임 이벤트 등에 활용.
3️⃣ 장기 실행 작업을 위한 상태 표시 (102 Processing 활용)
🔹 사용 사례: 클라이언트가 대규모 데이터 변환 작업을 요청했을 때, 102 Processing을 활용하여 진행 상태를 알림.
📌 효과:
✅ 클라이언트가 요청이 정상적으로 처리 중임을 인식.
✅ 타임아웃 방지 → 대량 연산 및 데이터 처리 작업이 원활하게 수행될 수 있도록 함.
4. 1xx 상태 코드 vs. 다른 상태 코드 비교
상태 코드 | 의미 | 응답 본문 포함 여부 | 사용 사례 |
---|---|---|---|
1xx | 정보 제공 | ❌ 없음 | 요청 진행 상황 알림 |
2xx | 요청 성공 | ✅ 포함 가능 | GET, POST 요청 완료 |
3xx | 리다이렉트 | ✅ URL 제공 | 페이지 이동, 캐싱 |
4xx | 클라이언트 오류 | ✅ 오류 메시지 포함 | 잘못된 요청, 권한 없음 |
5xx | 서버 오류 | ✅ 오류 메시지 포함 | 서버 과부하, 내부 오류 |
💡 1xx 상태 코드는 정보 제공이 목적이며, 클라이언트의 요청 진행을 도와주는 역할을 함.
5. 결론
🔹 1xx 상태 코드는 클라이언트와 서버 간의 통신이 원활하게 이루어지도록 돕는 정보 응답 코드입니다.
🔹 100 Continue, 101 Switching Protocols, 102 Processing 등의 코드를 통해 네트워크 성능을 최적화하고, 불필요한 데이터 전송을 방지할 수 있습니다.
🔹 실시간 애플리케이션(WebSocket), 대량 데이터 업로드, 장기 실행 작업 등 다양한 상황에서 활용될 수 있습니다. 🚀
이러한 상태 코드를 적절히 활용하면 HTTP 기반 애플리케이션의 성능을 최적화하고, 보다 효율적인 네트워크 통신을 구현할 수 있습니다!
'네트워크 > HTTP' 카테고리의 다른 글
HTTP 상태 코드: 3xx (리다이렉션) (0) | 2025.03.03 |
---|---|
HTTP 상태 코드: 2xx (성공 응답) (0) | 2025.03.03 |
HTTP 메서드: PATCH (0) | 2025.03.03 |
HTTP 메서드: OPTIONS (0) | 2025.03.03 |
HTTP 메서드: HEAD (0) | 2025.03.03 |