본문 바로가기

CS

[CS] Connection & Connectionless

 

 


 

 

 

Connection

정의 : 통신 중에 상태(State)를 유지합니다. 서로 계속 연결된 상태에서 데이터를 주고받습니다.

  • 서버는 클라이언트와 연결을 유지하기 위해서 자원을 소모합니다.
  • 하지만, 수많은 사람들이 서비스를 이용해도 실제 서버에서 동시에 처리하는 요청은 작습니다.
    • 클라이언트 2, 3이 아무런 요청이 없어도 연결을 유지합니다. (자원 낭비)

 

대표 예시 :

  • 웹소켓 (WebSocket) : 한 번 연결되면 지속적으로 메시지 송수신
  • SSH, Telnet : 로그인 후 세션을 유지
  • DB 커넥션 풀 : 연결을 재사용하며 유지

 

 

특징 :

  • 지속적인 연결 유지
  • 서버가 클라이언트 상태를 기억 (Stateful)
  • 처리 속도는 느릴 수 있으나 연속적인 작업에 적합

 

장점 :

  • 새로운 연결 과정 ❌
  • 그만큼 요청에 대한 응답 속도가 빨라짐 ✅

 

단점 :

  • 오버헤드(연결 설정 및 유지)
  • 즉, 연결을 위한 자원이 낭비된다.

 

 


 

 

 

Connectionless(비연결)

정의 : 매 요청마다 새로운 연결을 열고, 작업이 끝나면 바로 연결을 종료합니다.

  • 클라이언트와 서버는 연결을 유지하지 않는다.
  • 서버는 최소한의 자원만을 사용한다.

 

대표 예시 :

  • HTTP/1.0 (기본적으로 요청마다 연결 새로 열고 닫음)
  • REST API 설계 : 요청 간 상태 없이 독립적 처리
  • DNS 조회 : 요청-응답 후 종료

 

특징 :

  • 요청마다 연결 생성 → 처리 → 종료
  • 서버는 클라이언트의 상태를 기억하지 않음 (Stateless)
  • 확장성과 단순성이 높음

 

장점 :

  • 서버 자원을 효율적으로 사용 ✅
  • 브라우저가 켜진 상태에서 인터넷이 종료되어도 새로고침하기 전까지 홈페이지가 정상적으로 노출 ✅

 

단점 :

  • 요청이 추가적으로 오게되면 연결(3 way handshake)을 새로 해야함
    → 요청에 대한 응답 시간이 증가
  • 웹 사이트의 HTML, CSS, JS, 이미지 등의 정적 자원 모두를 다시 다운로드
    → 캐시, 브라우저 캐싱로 해결한다. 쉽게 말해 임시저장
  • HTTP 지속연결(Persistent Connections)을 통해 문제를 해결

 

 

 


 

 

 

 

https://kimyongjun0129.tistory.com/149

 

[CS] 서버 상태 관리의 두 방식: Stateless와 Stateful

목차Stateful (상태 유지)Stateless (무상태) Stateful (상태 유지)정의 : 클라이언트의 이전 상태(로그인 여부, 장바구니 정보 등)를 서버가 기억합니다. 예시 : 수강 신청 예수강생 : 수강 신청합니다. →

kimyongjun0129.tistory.com