예시
입력 (상태 코드)
418
출력
418 I'm a teapot 분류: 4xx 클라이언트 오류 (장난성) 설명: RFC 2324 (1998 만우절) 의 농담 코드. "나는 찻주전자라 커피를 끓일 수 없다." Google 등에서 easter egg 로 종종 사용.
사용법 / 자주 묻는 질문
이런 경우 사용하세요
- 낯선 HTTP 상태 코드의 의미와 분류 확인
- REST API 응답 코드 선택 시 의미 정확성 검증
- 코드 리뷰에서 401 vs 403 같은 헷갈리는 코드 정리
- 5xx 가 서버 오류인지 4xx 가 클라이언트 오류인지 학습
- 418 같은 농담 코드의 출처 확인 (Easter egg)
자주 묻는 질문
- Q.401 과 403 차이는?
- A.401 Unauthorized 는 "누군지 모릅니다" — 인증 필요. 403 Forbidden 은 "누군지 알지만 권한 없습니다". 이름이 헷갈리지만 메시지로 외우면 쉬워요.
- Q.404 와 410 차이는?
- A.404 Not Found 는 "지금은 없습니다" — 일시적일 수도. 410 Gone 은 "있었지만 영구 제거됨" — 검색엔진이 색인 빠르게 빼는 데 도움.
- Q.204 No Content 와 304 Not Modified 는?
- A.204 는 "성공했지만 응답 본문이 없음" (DELETE 후 등). 304 는 "클라이언트 캐시가 최신이라 본문 안 보냄" — 두 코드 모두 body 없지만 의미 완전히 다름.
재미있는 사실
HTTP 상태 코드는 2022년 RFC 9110 이 RFC 7231 등 여러 RFC 를 통합해 갱신한 표준입니다. 1xx 정보 / 2xx 성공 / 3xx 리다이렉트 / 4xx 클라이언트 에러 / 5xx 서버 에러 — 첫 자리가 카테고리, 나머지는 세부 분류라는 단순한 규칙이 30년간 살아남았습니다.
RFC 9110 (2022)418 'I'm a teapot' 은 1998년 만우절 RFC 2324 (Hyper Text Coffee Pot Control Protocol) 에서 농담으로 정의됐습니다. 그런데 의외로 살아남아 Cloudflare·Node.js 등 일부 시스템이 실제 구현 — '진지하지 않게 코드를 거부' 할 때 자주 쓰입니다.
RFC 2324 (April Fools 1998)451 'Unavailable For Legal Reasons' 는 Ray Bradbury 의 소설 'Fahrenheit 451' (책 검열을 다룸) 에서 따왔습니다. 2015년 RFC 7725 로 표준화됐고, 법적 검열로 차단된 콘텐츠에 사용 — 코드 번호 자체가 작가 헌사인 보기 드문 경우.
RFC 7725 (2015)
관련 가이드
- HTTP 상태 코드 — 401·403·422·500 언제 쓸까 (전체 가이드)
HTTP 상태 코드 분류 의미, REST API 에서 자주 쓰는 코드, 헷갈리는 쌍 (401 vs 403, 400 vs 422), 올바른 선택 기준까지.
- CORS 완벽 정리 — 프리플라이트 트리거·자주 보는 에러·해결법
Same-origin 정책부터 simple/preflight 분기, Access-Control-* 헤더, 쿠키 전송, 자주 마주치는 디버깅 함정까지.
- Idempotency Key — Stripe 가 재시도를 안전하게 만든 방법과 구현 가이드
재시도가 왜 중복 결제를 만드는지, Stripe·PayPal 의 idempotency key 동작, 서버 상태 머신, 키 생성 전략, 저장소 TTL.
- Content Security Policy — XSS 차단을 위한 CSP 헤더 정복
CSP 가 XSS 를 어떻게 막는지, 실제로 필요한 디렉티브, nonce / hash / strict-dynamic 선택, report-only 점진 도입, AdSense/GA 호환성.
- HTTP 캐싱 — Cache-Control·ETag 와 자산별 올바른 헤더 조합
max-age vs s-maxage·immutable·stale-while-revalidate·ETag vs Last-Modified·CDN과 브라우저 캐시·정적 자산·HTML·API 응답에 맞는 헤더 조합.
- Webhook · Polling · SSE · WebSocket — 실시간 패턴 선택 가이드
지연·비용·복잡도·실패 모드로 4 가지 실시간 패턴 비교. Webhook·Polling·SSE·WebSocket 의 적절한 선택 기준과 fallback 전략.
- SameSite 쿠키와 CSRF — Lax·Strict·None 의 진짜 의미
SameSite 가 2020 년 CSRF 방어를 어떻게 바꿨는지, Lax/Strict/None 의 차이, Secure 가 필요한 시점, 3rd-party 쿠키 폐기, SameSite 외에 여전히 필요한 것.
- Rate Limiting 전략 — Token Bucket·Sliding Window 와 429 Retry-After 계약
rate limit 의 이유, 4 가지 고전 알고리즘 (fixed/sliding/token/leaky), IP·사용자·API key 별 스코프, 클라이언트가 기대하는 헤더.
- HTTP 요청 안에는 뭐가 들었을까?
HTTP 요청을 wire 수준에서 풀어본다 — request line, header, body, GET·POST 뒤의 대화 패턴. content negotiation, conditional request, cookie, preflight, 다들 잊는 헤더들.
- 네트워크 프로그래밍은 어떻게 동작할까?
socket · TCP vs UDP, C10K 문제와 epoll/kqueue/IOCP 가 만들어진 이유, blocking vs non-blocking vs async, file descriptor 추상화, Node.js 가 single-thread 인데 10,000 connection 처리 가능한 이유.
- CDN 은 어떻게 동작할까?
edge POP 과 BGP anycast, cache miss 시 실제 흐름, 중요한 Cache-Control 헤더 (s-maxage / stale-while-revalidate), origin shield, tag vs URL 단위 purge, CDN 이 DDoS 방어인 이유.
- REST 는 어떻게 동작할까?
Roy Fielding 이 원래 정의한 REST — resource·representation·stateless·uniform interface, Richardson Maturity level 0-3, HATEOAS, 그리고 'REST' 라고 불리는 대부분의 API 가 사실 'HTTP 위의 JSON' 일 뿐인 이유.
- gRPC 는 어떻게 동작할까?
gRPC 의 동작 원리 — HTTP/2 multiplexing, protobuf wire format, 4 가지 RPC 모드(unary·server·client·bidirectional streaming), 코드 생성, 내부 서비스에서 REST 를 이기는 이유, 그리고 브라우저는 왜 여전히 gRPC-Web 이 필요한가.
관련 도구
- Base64 인코딩 / 디코딩
텍스트를 Base64로 인코딩하거나 디코딩합니다. 브라우저에서 즉시 실행되며 서버로 데이터가 전송되지 않습니다.
- URL 인코딩 / 디코딩
URL에 사용할 수 있도록 텍스트를 퍼센트 인코딩하거나 인코딩된 URL을 디코딩합니다. 브라우저에서 즉시 실행됩니다.
- UUID / ULID 생성기
UUID v4(랜덤) · UUID v7(시간 순서, RFC 9562) · ULID를 브라우저에서 생성합니다.
- JWT 디코더
JWT(JSON Web Token)의 header와 payload를 디코딩하여 표시합니다. 서명 검증은 수행하지 않으며(공개키 필요), 토큰은 브라우저에서만 처리됩니다.
- JWT 생성기 (HMAC)
HS256/HS384/HS512(HMAC-SHA) 알고리즘으로 서명된 JWT를 생성합니다. payload·secret 모두 브라우저에서만 처리 — Web Crypto API 기반.
- SHA 해시
텍스트의 SHA-1·SHA-256·SHA-384·SHA-512 해시를 계산합니다. 브라우저의 Web Crypto API를 사용하며 데이터가 서버로 전송되지 않습니다.
- Hex 인코딩 / 디코딩
텍스트를 16진수로 인코딩하거나 디코딩합니다. UTF-8을 자동 처리하며 공백을 무시합니다.
- HTML 엔티티 인코딩 / 디코딩
HTML 특수 문자(&, <, >, ", ')를 엔티티로 인코딩하거나, 이름/숫자 엔티티를 텍스트로 디코딩합니다.
- 비밀번호 생성기
암호학적으로 안전한 비밀번호·토큰·랜덤 문자열·패스프레이즈를 생성하고 엔트로피를 표시합니다.
- 진수 변환기
BigInt 기반으로 큰 정수까지 2/8/10/16/36진수 변환. 0b/0o/0x 자동 감지.
- URL 파서
URL을 프로토콜·호스트·경로·쿼리·해시로 분해해 한눈에 보여줍니다 (읽기 전용).
- HMAC 생성기
Web Crypto API로 SHA-1/256/384/512 HMAC을 계산합니다. 서명·검증 키 기반.
- HMAC 검증기
주어진 HMAC 서명이 message + secret 으로 만든 값과 일치하는지 검증합니다. Web Crypto API + constant-time 비교.
- MD5 해시
텍스트의 MD5 해시를 계산합니다. 주의: MD5는 보안용으로 부적합 — 체크섬·레거시 호환에만 사용.
- Punycode (국제화 도메인)
한글·다국어 도메인을 Punycode(xn-- ASCII)로 상호 변환합니다. 브라우저 native URL 사용.
- User-Agent 파서
User-Agent 문자열을 브라우저·OS·기기·엔진별로 분해합니다.
- Bcrypt 해시
Bcrypt로 비밀번호를 해시하거나 기존 해시와 평문을 검증합니다. salt rounds 조정 가능.
- 쿠키 파서
Cookie 또는 Set-Cookie 문자열을 표로 분해합니다. percent-encoded 값 복원 + Set-Cookie 속성(Path/Domain/Max-Age/SameSite/HttpOnly/Secure) 인식.
- IP / CIDR 계산기
IPv4 주소와 CIDR로 네트워크 주소·브로드캐스트·호스트 범위·서브넷 마스크·호스트 수를 계산합니다.
- cURL 빌더
URL·method·헤더·본문으로 cURL 명령을 만듭니다. JSON content-type 자동.