네트워크 (IP, 통신)

100~500 상태코드

Queen Julia 2024. 6. 20. 15:09

1xx 상태 코드는 요청이 수신되어 처리 중임을 나타내는 정보 응답 코드입니다. 주로 다음과 같은 경우에 사용됩니다.

1xx 상태 코드 사용 사례

100 Continue

  • 클라이언트가 서버에 큰 데이터를 전송하기 전, 서버가 요청을 받아들일 준비가 되었는지 확인하는 경우 사용됩니다.
  • 클라이언트는 먼저 요청 헤더만 보내고, 서버로부터 100 Continue 응답을 받으면 본문 데이터를 전송합니다.

101 Switching Protocols

  • 클라이언트가 프로토콜 전환을 요청했을 때 서버가 전환에 동의함을 나타내는 경우 사용됩니다.
  • 예를 들어 HTTP에서 WebSocket 프로토콜로 전환할 때 사용할 수 있습니다.

102 Processing (WebDAV)

  • WebDAV 프로토콜에서 서버가 요청을 받아 처리 중임을 알리는 경우 사용됩니다.

103 Early Hints (HTTP/2)

  • HTTP/2에서 서버가 요청 처리 전에 미리 응답 헤더를 보내는 경우 사용됩니다.
  • 클라이언트는 이 정보를 활용하여 리소스 로딩을 미리 준비할 수 있습니다.

1xx 상태 코드는 주로 HTTP 프로토콜 자체에서 사용되며, 실제 웹 애플리케이션에서는 거의 사용되지 않습니다. 그래서 잘 알려지지 않은 편입니다.

 

 


2xx 상태 코드는 클라이언트의 요청이 성공적으로 처리되었음을 나타냅니다. 

200 OK

  • 가장 일반적인 성공 상태 코드입니다.
  • 클라이언트의 요청을 성공적으로 처리했으며, 요청한 리소스를 응답 본문에 포함하고 있습니다.

201 Created

  • 새로운 리소스가 성공적으로 생성되었음을 나타냅니다.
  • POST 요청 등으로 새 리소스를 생성한 경우 사용됩니다.

202 Accepted

  • 요청은 유효하지만 아직 처리되지 않았음을 나타냅니다.
  • 비동기 처리를 위해 사용되며, 처리 완료 시점에 별도의 응답이 전송됩니다.

204 No Content

  • 요청은 성공했지만 응답 본문에 포함할 데이터가 없음을 나타냅니다.
  • 리소스 삭제 등의 작업 후 사용될 수 있습니다.
2xx 상태 코드는 클라이언트 요청이 정상적으로 처리되었음을 알려주므로, 웹 애플리케이션에서 가장 많이 사용되는 상태 코드입니다.
 
특히 200 OK 코드가 가장 일반적으로 사용됩니다.

3xx 상태 코드는 리다이렉션(redirection)을 의미하며,

클라이언트의 요청을 완료하기 위해 추가 작업이 필요함을 나타냅니다.

 

주요 3xx 상태 코드와 사용 사례는 다음과 같습니다.

301 Moved Permanently

  • 리소스의 URI가 영구적으로 변경되었음을 나타냅니다.
  • 예를 들어 웹사이트 주소가 변경되었을 때 사용됩니다.

302 Found (HTTP 1.1 이전 버전)

  • 리소스가 임시적으로 다른 URI로 이동했음을 나타냅니다.
  • 예를 들어 로그인 후 리디렉션되는 경우 사용됩니다.

303 See Other (HTTP 1.1)

  • 클라이언트가 다른 URI에서 응답을 검색해야 함을 나타냅니다.
  • POST 요청에 대한 응답으로 사용되어 중복 제출을 방지합니다(PRG 패턴).

304 Not Modified

  • 클라이언트에 의해 요청된 리소스가 변경되지 않았음을 나타냅니다.
  • 캐시 유효성 검사 시 사용되어 불필요한 데이터 전송을 줄입니다.

307 Temporary Redirect

  • 리소스가 임시적으로 다른 URI로 이동했음을 나타냅니다.
  • 302와 유사하지만 HTTP 1.1에서 추가된 상태 코드입니다.

308 Permanent Redirect

  • 리소스가 영구적으로 다른 URI로 이동했음을 나타냅니다.
  • 301과 유사하지만 HTTP 1.1에서 추가된 상태 코드입니다.

따라서 3xx 상태 코드는 리소스의 위치 변경, 캐시 유효성 검사, 중복 제출 방지 등의 상황에서 사용됩니다. 클라이언트는 이 상태 코드를 받으면 추가 작업(리디렉션 등)을 수행

 


4xx 상태 코드는 클라이언트 오류를 나타내며, 다음과 같은 경우에 사용됩니다:

  • 클라이언트의 요청이 잘못되었거나 유효하지 않은 경우
  • 요청 메시지의 구문이 잘못되었거나 필수 파라미터가 누락된 경우
  • 요청한 리소스가 존재하지 않는 경우
  • 클라이언트가 인증되지 않은 요청을 보낸 경우
  • 클라이언트에게 권한이 없어 요청을 거부해야 하는 경우

주요 4xx 상태 코드

400 Bad Request

클라이언트가 잘못된 요청을 보냈을 때 사용됩니다.

요청 구문 오류, 잘못된 파라미터, API 스펙 불일치 등의 경우에 해당합니다.

401 Unauthorized

클라이언트가 인증되지 않은 요청을 보냈을 때 사용됩니다.

403 Forbidden

클라이언트에게 요청 자원에 대한 권한이 없어 요청을 거부할 때 사용됩니다.

404 Not Found

요청한 리소스가 서버에 존재하지 않을 때 사용됩니다.

4xx 상태 코드를 받으면 클라이언트 측에서 요청을 수정하여 재전송해야 합니다.

동일한 요청을 반복해도 실패할 것이기 때문입니다.


5xx 상태 코드는 서버 측에 문제가 있을 때 사용됩니다. 주요 5xx 상태 코드와 그 의미는 다음과 같습니다.

500 Internal Server Error

  • 서버에 예기치 못한 상황이 발생하여 요청을 처리할 수 없는 경우입니다.
  • 서버 사용량 폭주, 백엔드 스크립트 오류 등이 원인일 수 있습니다.
  • 서버 스크립트 오류, 데이터베이스 문제, 서버 과부하 등 다양한 원인

502 Bad Gateway

  • 서버가 게이트웨이나 프록시 등 중간 서버로부터 유효하지 않은 응답을 받은 경우입니다.

503 Service Unavailable

  • 서버가 과부하나 유지보수로 인해 현재 서비스를 제공할 수 없는 상태입니다.
  • 일시적인 상황이므로 잠시 후 재시도하면 정상 응답할 수 있습니다.

504 Gateway Timeout

  • 서버가 게이트웨이 시간 초과 때문에 응답을 받지 못한 경우입니다.

511 Network Authentication Required

  • 클라이언트가 네트워크 액세스를 위해 인증이 필요한 경우입니다.
5xx 상태 코드는 클라이언트 요청 자체는 유효하지만, 서버 측 문제로 인해 요청을 처리하지 못했음을 나타냅니다. 이런 경우 서버 로그를 점검하여 원인을 파악하고 적절한 조치를 취해야 합니다.
 
 

"게이트웨이"

"게이트웨이"라는 단어는 주로 502 Bad Gateway 상태 코드와 관련이 있습니다.

502 Bad Gateway 상태 코드는 다음과 같은 상황을 의미합니다:

  • 웹 서버가 게이트웨이나 프록시 서버 역할을 하면서 업스트림 서버(웹 애플리케이션 서버 등)로부터 유효하지 않은 응답을 받은 경우입니다.
  • 게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 잘못된 응답을 받았다는 의미입니다.

즉, 게이트웨이

클라이언트와 웹 애플리케이션 서버 사이에서 중개자 역할을 하는 서버를 말합니다.

 

클라이언트의 요청을

웹 애플리케이션 서버로 전달하고,

그 응답을 다시 클라이언트에게 전달하는 역할을 합니다.

 

(클라이언트 요청 > 웹 애플리케이션 > 웹 애플리케이션 응답 > 클라이언트 ) 

 

500 Internal Server Error는 웹 애플리케이션 서버 자체에서 발생한 오류이므로,

게이트웨이와는 직접적인 관련이 없습니다.

 

500 에러는 서버 스크립트 오류, 데이터베이스 문제, 서버 과부하 등 다양한 원인으로 인해 발생할 수 있습니다