"HTTP 는 인터넷 전체를 굴리는 그 지루한 protocol 이야. 줄줄 외우고 있어야 해."
인터넷의 우편 서비스
옛날 우체국 한번 그려봐. 주소랑 발신인 적힌 봉투를 직원한테 건네잖아. 직원 일은 편지 읽는 것도, 글씨 평가하는 것도, 받는 사람이 받을 자격 있나 판단하는 것도 아냐. 직원은 그냥 배달해. 받는 사람이 답장 쓰면? 그것도 배달해. 계약 끝.
그게 HTTP 야. Hypertext Transfer Protocol — TCP 위에서 도는 stateless request/response protocol. 브라우저, 폰 앱, 파이썬 스크립트, Stripe API 클라이언트, Claude SDK — 전부 다른 직원한테 봉투 건네는 직원이야. Stripe 결제, Slack DM, Claude API 호출, 지금 이 페이지 로딩 — 다 봉투야.
HTTP 를 정의하는 세 가지 속성
Stateless. 각 request 가 독립적으로 서. Server 는 request 사이에 너를 기억 안 해. Session, cookie, JWT token — 다 그 위에 얹어서 state 흉내내는 convention 들이야. Protocol 자체는 response 나가는 순간 너를 잊어.
Text-based (대체로). HTTP/2 전까진 request 가 글자 그대로 UTF-8 텍스트 줄들이었어 — TCP socket 에 손으로 칠 수도 있었지. HTTP/2 랑 3 는 효율 위해 binary frame 으로 갔는데 semantic shape — method, URI, header, status code — 는 그대로야. 같은 단어, 더 빠른 봉투.
Carrier-protocol. HTTP 는 body 에 어떤 JSON 넣을지, error format 뭐 쓸지, URL 어떻게 설계할지 안 알려줘. 그냥 배달만 해. REST, GraphQL, gRPC-over-HTTP, JSON-RPC, SOAP — 다 봉투에 뭘 쓸지 뭘 넣을지 약속한 convention 들이야.
이미 HTTP 로 말하고 있었어
웹사이트 열 때마다, npm install 칠 때마다, IDE 가 업데이트 확인할 때마다 — HTTP. cwkPippa WebUI 가 브라우저에서 backend 한테 대화 달라고 할 때, GET /api/conversations/abc123 보내고 8000번 포트 backend 가 JSON 봉투 돌려줘. 그게 전부야.
이 퀘스트 나머지는 결국: 더 좋은 봉투 쓰는 법 — 올바른 주소, 올바른 verb, 올바른 내용물, 누가 읽을지에 대한 올바른 기대치.