-
네트워크 - HTTP의 특징과 속성네트워크 2026. 7. 20. 20:28
HTTP의 기본 구조와 특징, 그리고 HTTP 메서드가 갖는 세 가지 속성(안전, 멱등성, 캐시 가능)을 정리해보려고 합니다.
1. HTTP는 클라이언트-서버 구조
HTTP(HyperText Transfer Protocol)는 기본적으로 클라이언트가 요청을 보내고, 서버가 응답을 돌려주는 단방향 요청-응답 구조로 동작합니다. 브라우저(클라이언트)가 서버에 요청하면, 서버는 그에 맞는 데이터를 응답으로 돌려주는 방식입니다.
2. HTTP의 두 가지 핵심 특징
무상태 프로토콜 (Stateless)
서버가 클라이언트의 이전 요청 상태를 기억하지 않는다는 뜻입니다. 각 요청은 독립적으로 처리되며, 서버 입장에서는 매번 처음 보는 요청처럼 취급됩니다.
예시: 온라인 쇼핑몰에서 로그인을 한 뒤 상품 목록 페이지로 이동했다고 가정해봅시다. 만약 HTTP가 완전히 무상태라면, 서버는 상품 목록을 요청받는 순간 이 사람이 아까 로그인한 사람이라는 사실을 전혀 알지 못합니다. 그래서 매 요청마다 로그인 여부를 다시 증명해야 하는데, 이를 해결하기 위해 실무에서는 쿠키나 세션, 토큰(JWT) 같은 별도의 방법으로 클라이언트 상태를 서버 혹은 클라이언트 쪽에 저장해서 활용합니다.
무상태의 장점은 서버가 클라이언트 상태를 신경 쓰지 않아도 되기 때문에 서버를 자유롭게 늘리거나 줄이는 확장(스케일 아웃)이 쉬워진다는 점입니다.
비연결성 (Connectionless)
클라이언트와 서버가 요청-응답을 주고받은 뒤에는 연결을 유지하지 않고 바로 끊어버리는 특징입니다.
예시: 하나의 웹페이지를 열 때 HTML 문서, CSS 파일, 이미지 여러 장 등 수십 개의 리소스를 요청해야 합니다. 원칙적으로 비연결성을 따르면 이 리소스 하나하나를 요청할 때마다 매번 새로 연결을 맺고, 응답을 받은 뒤 바로 연결을 끊는 것을 반복해야 합니다. 이렇게 되면 매번 TCP 연결(3-way handshake)을 새로 맺어야 하니 자원 낭비가 심해지는데, 이 문제를 완화하기 위해 실제로는 HTTP의 Keep-Alive 같은 기법으로 일정 시간 동안 연결을 유지하며 여러 요청을 처리하도록 보완하고 있습니다.
3. HTTP 메서드가 갖는 세 가지 속성
HTTP 메서드(GET, POST, PUT, PATCH, DELETE 등)는 각각 안전(Safe), 멱등(Idempotent), 캐시 가능(Cacheable) 이라는 세 가지 속성을 기준으로 구분할 수 있습니다.
안전(Safe)
요청을 보내도 서버의 상태(데이터)를 변경하지 않는 성질을 말합니다. 즉, 조회만 할 뿐 아무것도 바꾸지 않는다는 뜻입니다.
- GET, HEAD → 안전함 (단순 조회이므로 리소스를 변경하지 않음)
- POST, PUT, PATCH, DELETE → 안전하지 않음 (리소스를 생성/수정/삭제하므로 상태가 변경됨)
멱등(Idempotent)
같은 요청을 한 번 보내든 여러 번 반복해서 보내든 결과가 동일하게 유지되는 성질입니다. 여기서 결과가 같다는 것은 서버에 저장된 리소스의 최종 상태가 같다는 의미이며, 요청 중간에 발생할 수 있는 동시성 문제(다른 사용자의 요청이 끼어드는 것 등 외부 요인)는 고려하지 않습니다.
- GET, PUT, DELETE → 멱등함
- GET: 여러 번 조회해도 결과는 동일
- PUT: 특정 리소스를 통째로 같은 값으로 덮어쓰는 것이므로, 여러 번 반복해도 최종 상태는 같음
- DELETE: 같은 리소스를 여러 번 삭제 요청해도 결과적으로 리소스가 없는 상태는 동일
- POST → 멱등하지 않음
- 예를 들어 게시글을 작성하는 POST 요청을 두 번 보내면 게시글이 두 개 생성되므로, 요청할 때마다 결과(서버 상태)가 달라짐
캐시 가능(Cacheable)
응답 결과를 캐시(임시 저장)해서 재사용할 수 있는지를 나타내는 속성입니다. 캐시가 가능하면 매번 서버에 요청을 보내지 않고 저장해둔 응답을 재활용할 수 있어 성능상 이점이 큽니다.
- 주로 GET, HEAD 메서드에 캐시가 사용. 조회 요청의 응답은 자주 재사용될 가능성이 높기 때문임
- POST, PATCH도 스펙상으로는 캐시가 가능하도록 정의되어 있지만, 응답 내용이 매번 달라지는 경우가 많고 실제로 이를 지원하는 형태로 구현하는 경우는 많지 않음.
4. 정리
메서드 안전 멱등 캐시가능 GET O O O HEAD O O O POST X X 조건부(실무에서는 거의 사용 안 함) PUT X O X PATCH X X 조건부(실무에서는 거의 사용 안 함) DELETE X O X '네트워크' 카테고리의 다른 글
네트워크 - 쿠키(Cookie) (0) 2026.07.20 네트워크 - HTTP 헤더 정리 (1) 2026.07.20 네트워크 - IP(Internet Protocol) 그리고 TCP와 UDP (0) 2026.07.20