HTTP의 특징을 말할 때 자주 붙는 키워드가 두 개 있다.
- 무상태(Stateless)
- 비연결성(Connectionless)
무상태가 “서버가 상태를 저장하지 않는다”라면
비연결성은 요청/응답이 끝나면 연결을 유지하지 않는 방식을 말한다.
1) 비연결성 한 문장 정의
HTTP는 기본적으로 요청을 처리하고 응답을 주면 연결을 계속 붙잡아두지 않는다.
(클라이언트-서버가 계속 연결된 상태로 유지되는 구조가 아니다)
2) 왜 비연결성이 필요할까? (서버 자원 관점)
서버는 동시에 수많은 클라이언트를 상대한다.
만약 모든 클라이언트와 연결을 계속 유지하면 서버 자원이 빠르게 고갈된다.
비연결성의 장점
- 서버 자원 절약: 요청 처리 끝나면 연결을 닫아 다른 요청 처리에 집중
- 대규모 트래픽에 유리: 동시에 접속자가 많아도 “항상 연결 유지” 부담이 작음
3) 비연결성의 단점(현실에서 바로 부딪힘)
비연결성이 “가볍다”는 장점이 있는 대신 다음 문제가 생긴다.
단점 1) 매 요청마다 연결(Handshake) 비용
연결을 새로 열면 그만큼 오버헤드가 생긴다.
특히 HTTPS면 TLS까지 얹혀서 비용이 더 커진다.
단점 2) 웹은 요청이 한 번이 아니다
브라우저가 페이지 하나를 띄우려면:
- HTML 1개
- CSS/JS 여러 개
- 이미지 여러 개
…처럼 요청이 수십~수백 개일 수 있다.
연결을 매번 새로 열면 비효율적이다.
4) 그래서 나온 해결책: Keep-Alive(지속 연결)
HTTP/1.1부터는 기본적으로 지속 연결(Keep-Alive) 을 사용해서 단점을 완화한다.
핵심 아이디어
- “요청 하나 끝났다고 바로 끊지 말고”
- 같은 TCP 연결을 잠깐 유지하면서 여러 요청을 처리하자
(기존) 요청1 끝 -> 연결 종료
(개선) 연결 유지 -> 요청1/요청2/요청3... 처리 -> 일정 시간 후 종료
이렇게 하면:
- 연결 재수립 비용 감소
- 페이지 로딩이 빨라짐
참고: 용어로는 “Persistent Connection(지속 연결)”이라고도 부른다.
5) HTTP/1.1의 한계와 HTTP/2의 개선
HTTP/1.1의 문제(대표)
- Head-of-Line Blocking: 하나의 요청이 지연되면 뒤 요청들이 묶이는 느낌(구현/상황에 따라)
- 다수 리소스 요청 시 비효율
HTTP/2의 개선 포인트
- 한 TCP 연결에서 여러 요청/응답을 동시에(멀티플렉싱) 처리 가능
- 헤더 압축 등으로 효율 개선
HTTP/2는 “비연결성의 장점(가볍게)”을 유지하면서도
“연결 재사용 효율”을 크게 올린 버전이라고 보면 이해가 쉽다.
6) Stateless vs Connectionless 차이
둘은 비슷해 보이지만 포인트가 다르다.
- Stateless(무상태): “서버가 클라이언트 상태를 저장하지 않는다” (데이터/설계 관점)
- Connectionless(비연결성): “요청/응답 후 연결을 유지하지 않는다” (연결/자원 관점)
둘이 합쳐지면:
- 서버는 상태도 안 들고
- 연결도 계속 붙잡지 않아서
→ 대규모 서비스에 유리한 구조가 된다.
7) 면접에서 자주 나오는 질문 포인트
- HTTP가 비연결성이라는 말은 무슨 뜻인가요?
- 비연결성의 장점/단점은 무엇인가요?
- Keep-Alive는 왜 필요하고 어떤 효과가 있나요?
- HTTP/1.1과 HTTP/2는 “연결 재사용” 관점에서 어떤 차이가 있나요?
마무리 요약
- HTTP는 기본적으로 비연결성이라 서버 자원을 효율적으로 쓴다.
- 대신 매 요청마다 연결 비용이 생길 수 있어 Keep-Alive(지속 연결) 로 보완한다.
- HTTP/2는 한 연결에서 더 효율적으로 여러 요청을 처리하도록 발전했다.
'HTTP·Network' 카테고리의 다른 글
| HTTP API란? (0) | 2026.02.11 |
|---|---|
| HTTP 메시지 구조 정리 (0) | 2026.02.10 |
| Stateful vs Stateless (0) | 2026.02.10 |
| HTTP: 클라이언트 - 서버 구조 (0) | 2026.02.10 |
| HTTP 기본 개념 (0) | 2026.02.09 |