클라이언트 서버 구조
- Request Response 구조
- 클라이언트가 서버에 요청을 보내고 응답을 대기
- 서버가 요청에 대한 결과를 응답
- 로직/ 데이터는 서버가 처리하고 UI 등은 클라이언트가 처리한다.
- 클라이언트와 서버의 분리를 통해 클라이언트와 서버가 각각의 성장이 가능하다.
Stateless (무상태 프로토콜)
- 서버가 클라이언트의 상태를 보존하지 않는다
- 진행 중 오류가 발생하면 클라이언트는 처음부터 다시 요청을 시작해야한다.
- 장점 : 데이터를 저장하지 않아도 되기 때문에 응답 서버를 쉽게 바꿀 수 있어 서버의 확장성이 높다.
- 단점 : 클라이언트가 많은 데이터를 보내야 한다.
비연결성
- http는 기본이 연결을 유지하지 않는다.
- 많은 사람이 서비스를 한번에 이용하더라도 실제 서버에서 동시에 처리하는 요청은 적다.
- 서버의 자원을 효율적으로 사용할 수 있다.
- 요청마다 TCP/IP 연결을 새로 맺어야하기 때문에 비효율 적이다. ⇒ 해결방법은?
HTTP 지속연결
http 지속연결 ?
연결 ⇒ 요청 ⇒ 응답 ⇒ 종료 ==⇒ 연결 ⇒ 요청 …
-
이러한 구조로 응답마다 종료해서 매번 새로운 요청이 필요했는데
-
이 구조는 클라이언트가 요청을 안하더라도 계속 연결을 유지한다.
- 일정 시간 동안 사용하지 않는다면 TCP 연결 해제
-
하지만 사용하지 않는 시간 동안 자원(소켓 자료구조) 낭비가 된다.