HTTP
"HTTP is the language of the Web, and HTTPS is its polite version that whispers secrets instead of shouting them."
— 현대 인터넷 보안 교육에 자주 쓰이는 비유.
웹 브라우저와 웹 서버가 데이터를 주고받기 위해 사용하는 무상태(Stateless) 기반의 애플리케이션 계층 통신 프로토콜. 만약 HTTPS가 아닌 일반 HTTP로 로그인 비밀번호를 입력한다면, 동네 카페 와이파이 망을 공유하는 누군가가 당신의 비밀번호를 텍스트 파일로 읽을 수 있는 보안 대참사가 일어난다(...)
1. 개요
HTTP(Hypertext Transfer Protocol)는 텍스트 기반의 통신 규약으로, 클라이언트가 요청(Request)을 보내면 서버가 응답(Response)하는 구조로 이루어져 있다.
가장 핵심적인 특징은 Stateless(무상태성)인데, 서버는 클라이언트의 이전 상태를 기억하지 않는다. 즉, 1초 전에 로그인을 했어도 다음 페이지 요청 시 "나 로그인한 사람이야"라고 매번 쿠키나 토큰을 얹어서 증명해야 하는 번거로운 구조를 갖는다. 서버가 붕어 기억력을 가지고 있기 때문이라고 이해하면 편하다.
2. HTTP 상태 코드 (Status Code)
HTTP 응답에는 서버의 처리 결과를 3자리 숫자로 알려주는 상태 코드가 포함된다. 이 숫자의 백의 자리에 따라 대략적인 상태를 유추할 수 its
- 2xx (Success): 성공. 가장 보기 좋은 상태다. 특히
200 OK는 개발자들에게 마음의 평화를 가져다주는 마법의 단어다. - 3xx (Redirection): 요청을 완료하려면 브라우저가 다른 주소로 이동해야 함을 의미한다.
- 4xx (Client Error): 클라이언트가 요청을 잘못 보냈음(잘못된 주소, 권한 없음 등)을 뜻한다. 개발자들은 보통 "니(Client) 탓"이라며 책임을 회피할 때 쓴다.
- 5xx (Server Error): 서버 내부에서 에러가 발생했음을 뜻한다. 이는 빼도 박도 못하게 [백엔드](backend) 개발자와 인프라 담당자의 잘못이므로, 개발자들은 "내(Server) 탓"이라며 조용히 머리를 감싸 쥐게 된다.
3. 관련 밈 및 드립
3.1. I'm a teapot (나는 찻주전자다)
1998년 만우절 장난(RFC 2324)으로 제안된 HTTP 상태 코드다. 커피를 끓여달라는 요청을 받은 찻주전자가 "나는 커피 메이커가 아니라 찻주전자라서 커피를 못 끓인다"라며 거부하는 상황을 표현한 코드다.
원래는 장난이었으나, 전 세계 수많은 웹 라이브러리와 프레임워크가 이 코드를 정식 지원(?)하는 바람에, 현대 웹 생태계 최고의 이스터 에그이자 밈이 되었다. 실제로 구글에 https://www.google.com/teapot을 치면 찻주전자가 나오는 전용 페이지가 열린다.1
3.2. Not Found의 전설
존재하지 않는 페이지에 접근했을 때 나오는 이 에러는 너무나도 대중화되어, 현실 세계에서도 무언가를 잃어버렸거나 사람의 정신이 안드로메다로 날아갔을 때 "머릿속이 404 상태가 되었다"는 식으로 비유되곤 한다.
일부 어설픈 인터넷 루머에 의하면 CERN(유럽입자물리연구소)의 404호실에 웹 서버가 있었고 거기서 파일을 찾지 못해 유래했다는 그럴싸한 소문이 있으나, 이는 완벽한 도시전설이며 실제로는 단순한 분류 번호 체계에 불과하다.
4. 여담
- 절대 신뢰 HTTPS의 진화: HTTP의 보안 업그레이드 버전인 HTTPS는 데이터 전송 시 TLS/SSL 암호화를 수행한다. 요즘 크롬을 비롯한 브라우저들은 HTTPS가 적용되지 않은 사이트에 접속하면 주소창에 빨간색 경고 표시와 함께 "주의 요함 / 안전하지 않음"이라는 문구를 띄워 사이트 신뢰도를 순식간에 나락으로 보낸다.
- HTTP/2와 3의 로딩 혁명: HTTP/1.1은 한 번에 하나의 리소스만 순차적으로 다운로드받을 수 있어서 웹페이지 로딩 속도가 느렸지만, HTTP/2와 최신 HTTP/3(QUIC)2의 등장으로 하나의 커넥션에서 수십 개의 이미지를 동시에 다운로드받을 수 있게 되어 현대의 화려한 웹페이지들이 빠르게 열릴 수 있게 되었다.
- 헤더 오타 Referer의 전설: HTTP 헤더 중 Referer(이전 페이지 주소)는 원래 Referrer가 맞춤법상 맞지만, RFC 표준 제안 당시 오타가 난 채로 규격화가 완료되는 바람에 전 세계 개발자들은 오늘날까지도 철자가 틀린
Referer를 코드에 적어 넣고 있다.표준이 된 오타는 법보다 강력하다.