[웹 기초] 8. HTTP가 비연결성이고 무상태성이라는 말의 의미

2026. 3. 29. 13:23·Web/Web Basics

 

HTTP는 request/response를 주고받는 프로토콜이다.
그런데 HTTP에는 웹을 이해할 때 반드시 짚고 넘어가야 하는 특징이 있다.

  • 비연결성(connectionless)
  • 무상태성(stateless)

이 두 가지 때문에 웹은 “가볍게 많은 요청을 처리할 수 있는 구조”가 되었고,
동시에 “로그인 상태 같은 걸 유지하기 어려운 구조”가 되었다.

 

 

비연결성: 요청과 응답이 끝나면 연결을 끊는다

비연결성은 말 그대로 연결을 계속 붙잡고 있지 않는다는 의미이다.

HTTP 통신은 기본적으로 이런 흐름이다.

  1. 브라우저가 서버에 요청(request)을 보낸다
  2. 서버가 처리한 뒤 응답(response)을 보낸다
  3. 이 요청/응답 처리가 끝나면 연결을 종료한다

즉, 서버 입장에서는

  • 한 요청 처리하고
  • 응답 보내고
  • 연결을 정리하고
  • 다음 요청을 받을 준비를 한다

이런 방식으로 동작한다.

 

 

왜 굳이 연결을 끊는가

웹의 특성상 수많은 사용자가 동시에 서버를 호출한다.
만약 서버가 사용자 한 명당 연결을 계속 유지해야 한다면
서버 자원이 금방 고갈된다.

비연결성은 다음 장점을 만든다.

  • 요청 하나를 빨리 처리하고 연결을 정리한다
  • 같은 자원으로 더 많은 요청을 처리할 수 있다
  • 서버가 동시에 많은 사용자를 상대하기 쉬워진다

즉 비연결성은 “서버 확장성”을 위해 선택된 특성이다.

 

 

무상태성: 서버는 이전 요청을 자동으로 기억하지 않는다

무상태성은 한마디로 이런 뜻이다.

서버는 이전 요청이 무엇이었는지 기억하지 않는다

 

 

HTTP는 기본적으로 요청/응답이 한 번 끝나면 관계도 끝난다.
그래서 다음 요청이 들어왔을 때 서버는 “새로운 요청”으로 취급한다.

예를 들어 이런 요청이 연속으로 들어온다고 해보자.

  • 첫 요청: 로그인 페이지 요청
  • 두 번째 요청: 로그인 성공
  • 세 번째 요청: 마이페이지 요청

사람 입장에서는 “같은 사람의 연속 행동”처럼 보이지만,
HTTP만 놓고 보면 서버는 기본적으로 다음을 보장하지 않는다.

  • “이 요청이 아까 로그인한 사용자 요청인지”
  • “이 사용자가 이전에 무슨 요청을 했는지”

즉, HTTP 자체만으로는 사용자 상태를 자동으로 이어붙여주지 않는다.

 

 

새로고침이 왜 이런 식으로 동작하는가

브라우저에서 새로고침을 누르면
브라우저는 보통 “마지막으로 성공한 요청”을 다시 보낸다.

여기서 중요한 포인트는 이것이다.

  • 새로고침은 “무조건 GET부터 다시 시작”이 아니다
  • 브라우저는 “현재 화면을 만들었던 마지막 요청”을 재실행하려고 한다

그래서 마지막 요청이 POST였다면
새로고침 시 POST 재전송 경고가 뜨는 경우가 생긴다.

이 문제를 해결하기 위해 POST-Redirect-GET(PRG) 패턴 같은 흐름이 등장한다.

 

 

비연결성/무상태성이 만들어내는 현실적인 문제

이 특성 때문에 웹에서는 이런 문제가 생긴다.

  • 로그인 상태를 유지하기 어렵다
  • 사용자가 누군지 매번 다시 확인해야 한다
  • 장바구니처럼 “사용자별 상태”를 기억해야 하는 기능이 어렵다

그래서 웹에서는 상태 유지를 위해 별도의 메커니즘을 사용한다.

대표적인 방식이 다음이다.

  • 쿠키(cookie)
  • 세션(session)

이게 바로 “세션 트래킹”이라는 주제로 이어진다.

 

 

정리

  • 비연결성: request/response 처리가 끝나면 연결을 종료한다
  • 무상태성: 서버는 이전 요청을 자동으로 기억하지 않는다
  • 장점: 같은 자원으로 많은 요청을 처리할 수 있다
  • 단점: 로그인 같은 상태 유지를 별도로 구현해야 한다

이제 웹의 기본 동작 구조는 완성됐다.

 

'Web > Web Basics' 카테고리의 다른 글

[서블릿과 JSP] 1. 서블릿이란?  (0) 2026.03.29
[웹 기초] 9. 개발자 도구(Network)로 request/response를 눈으로 확인하는 방법  (0) 2026.03.29
[웹 기초] 7. HTTP 메시지는 왜 Header와 Body로 나뉘는가  (0) 2026.03.29
[웹 기초] 6. 프로토콜과 HTTP/HTTPS  (0) 2026.03.29
[웹 기초] 5. 웹 서버와 WAS  (0) 2026.03.29
'Web/Web Basics' 카테고리의 다른 글
  • [서블릿과 JSP] 1. 서블릿이란?
  • [웹 기초] 9. 개발자 도구(Network)로 request/response를 눈으로 확인하는 방법
  • [웹 기초] 7. HTTP 메시지는 왜 Header와 Body로 나뉘는가
  • [웹 기초] 6. 프로토콜과 HTTP/HTTPS
sqaxe1
sqaxe1
woojoo-devlog 님의 블로그 입니다.
  • sqaxe1
    Woojoo's Devlog
    sqaxe1
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Backend (9)
        • Servlet (7)
        • Spring (2)
      • Frontend (1)
      • CS (0)
      • Book (33)
        • 자바 웹 프로그래밍 Next Step (30)
        • 테스트 주도 개발: 고품질 쾌속개발을 위한 TDD.. (1)
        • 성공과 실패를 결정하는 1%의 네트워크 원리 (2)
      • Engineering (0)
        • Testing (0)
      • Infra (6)
        • AWS (6)
      • Java (4)
      • Network (1)
      • 김영한 (28)
        • 자바 입문 (8)
        • 실전 자바 - 기본편 (6)
        • 실전 자바 - 중급편 (10)
        • 실전 자바 - 고급편 (4)
      • Web (39)
        • Web Basics (39)
      • Project (24)
        • NeoSquare (0)
        • Memo Evolution (24)
      • 정보처리기사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java
    aws
    개발서적
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sqaxe1
[웹 기초] 8. HTTP가 비연결성이고 무상태성이라는 말의 의미
상단으로

티스토리툴바