WEB - HTTP 프로토콜의 특징(Conectionless , Stateless)

컴퓨터/WEB

728x90
반응형

서론

오늘날 HTTP 프로토콜을 기반으로 하는 수많은 서비스들이 존재합니다.

HTTP를 이용하여 서버와 클라이언트가 통신을 하게 되면 몇 가지 특징들이 존재하게 됩니다.

이러한 특징과 단점들을 보완하고자 쿠키, 세션 등 다양한 기술들이 발전하게 되었습니다.

본문에서는 HTTP 프로토콜의 특징을 조금 더 자세히 알아보는 시간을 가져봅시다.

 

비연결성(Conectionless)과 무상태(Stateless) - HTTP 프로토콜의 가장큰 특징 

본질적으로 HTTP 프로토콜은 하나의 서버와 다수의 클라이언트와의 효율적인 통신을 위한 통신규약입니다.

  • 비연결성
    • 클라이언트와 서버가 한번의 요청과 응답을 한 후 연결이 끊어집니다(유지하지 않습니다.)
  • 무상태
    • 비연결성의 특징 때문에 서버는 클라이언트의 상태를 식별할 수 없습니다.

이런 2가지의 특징을 가지는 이유는 수많은 클라이언트가 하나의 서버에 요청을 하는 과정에서 계속해서 연결을 유지하고 있다면, 서버 입장에서는 엄청난 부담이 되기 때문에 이런 특징을 가지게 됩니다.

좀 더 세분화하여 각각의 특징에 대하여 알아보도록 합시다.

 

비연결성(Conectionless)

서버는 수많은 클라이언트의 요청을 효율적으로 처리하게 위해 클라이언트의 요청에 응답을 마친 후 연결을 끊어 버리게 됩니다. 이러한 특성을 비연결성이라고 하며, 이로 인한 장, 단점을 가지게 됩니다.

  • 장점
    • 다수의 클라이언트의 요청에 효율적인 자원관리가 가능하다.
  • 단점
    • 서버는 클라이언트를 기억하거나 연결하고 있지 않으므로 매번 새로운 연결을 해야 된다.

 

무상태(Stateless)

비연결성의 특징으로 인해 서버는 요청을 하는 클라이언트들의 각각을 식별할 수 없습니다.

이로 인해서 하나의 큰 단점이 발생하게 됩니다.

  • 요청하는 클라이언트의 상태를 알 수 없다.

만약 예를 들어서 어떤 사용자가 어떠한 서비스에 로그인한다고 가정합시다. 이 과정을 세분화하여 설명하면..

  • 클라이언트가 서버에 로그인 시도를 요청한다.
  • 서버는 로그인 데이터를 확인하고 결과를 응답해준다.
  • 로그인 성공 or 실패

만약 로그인이 성공한 이후에 다른 서비스를 요청하면 어떻게 될까요?

이런 경우 HTTP 프로토콜의 가지는 특성 때문에 클라이언트를 식별할 수 없기 때문에 다시 로그인을 해야 되는 문제가 발생할 수 있습니다.

 

 

어떻게 극복해야 되는가?

HTTP 프로토콜을 이용하면 위와 같은 특징들로서 몇몇 불편한 점이 발생하게 됩니다.

하지만, 다수의 클라이언트의 요청에 효율적인 서버 관리를 하기 위해서는 당연한 방법이기도 합니다.

따라서 오늘날 WEB 서비스에서는 HTTP 프로토콜의 한계를 다양한 방법으로 극복하고 있습니다.

 

  • 비연결성으로 인한 연속된 새로운 연결
    • KeepAlive 등등.... 
  • 무상태에 대한 클라이언트를 식별하기 위한 방법
    • 쿠키, 세션, 토큰 등등...

쿠키나 세션 같은 경우는 일반 사용자들도 인터넷을 사용하면 많이 들었을 내용 중 하나입니다. 

본문을 통해 조금이나마 쿠키와 세션을 사용하는 근본적인 이유에 대해서 이해하셨으면 좋겠습니다.

 

 

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :