HTTP: Stateful, Stateless, 비연결성

otter·2022년 2월 11일
0
post-thumbnail

- 모든 것이 HTTP, HTTP로 거의 모든 형태의 데이터를 전송할 수 있다.


HTTP 특징

클라이언트 서버 구조

  • 클라이언트가 서버에 request 하면, 서버는 클라이언트에 resopnse 하는 구조.
  • 클라이언트와 서버의 개념을 분리했다는 점에서 의의가 있다.
    - 시스템 로직이나, 대용량 데이터는 서버에 두고,
    - 클라이언트에는 UI를 두는 식으로 운용할 수 있다.

stateful

  • 서버가 클라이언트의 상태를 보존한다.
    - 서버가 바뀔때마다 클라이언트의 내용을 기록해서 상태를 유지해야 하는데 이러한 방식이 쉽지 않다.

Stateless

  • 서버가 클라이언트의 상태를 보존하지 않는다.
    - 서버의 확장성이 높다.
    - 미리 연결되어진 내용이 존재하지 않기 때문에 클라이언트 요청에도 서버를 대거 투입할 수 있다.
    - 아무 서버나 호출해도 되기 때문이다.
  • 스케일아웃(수평확장)에 유리하다.

stateful / stateless

  • 기본적으로 stateless로 설계하고, 상태유지는 최소한으로 사용한다.
  • 하지만, 모든 것을 stateless로 설계할 수 없다.
    - 로그인 유지 기능 등은 상태유지가 필수적이다.

비연결성

  • 연결을 유지한다면, 서버와 클라이언트의 연결은 서로의 네트워킹이 없다고 하더라도 계속해서 유지된다. - 자원이 계속해서 사용된다.
  • 이러한 점 때문에, HTTP는 기본적으로 연결을 유지하지 않는 모델이다.
  • 연결을 유지하지 않는다면, 자원을 효율적으로 사용할 수 있다.
  • 다만, 클라이언트가 연결을 계속 끊는 다는 것은 TCP/IP 연결을 매번 새롭게 맺어야 한다는 것을 뜻한다.
    - TCP 3 wqy handshake를 매번 해야하고, 이는 시간이 걸린다.
    - 이러한 문제는 지금 HTTP 지속 연결로 해결하고 있다.

UDP

  • UDP는 User Datagram Protocol의 준말이다.
  • UDP는 가지고 있는 기능이 거의 없다.
    - TCP가 가지고 있던 기능-순서보장-등이 없다.
    - 오히려 가지고 있는 기능 자체가 거의 없다는 점에서 빠르다.
  • 애플리케이션의 추가 작업을 통해서, 최적화를 다양하게 할 수 있다.
  • HTTP3에서 사용된다.

이 문서는 인프런의 모든 개발자를 위한 HTTP 웹 기본지식 강의를 듣고 정리한 내용입니다.

profile
http://otter-log.world 로 이사했어요!

0개의 댓글