참고
HTTP
NOTE
Client의 요청이 있을때만, Server가 응답해서 정보를 전송하고 곧바로 연결을 끊는 방식!
한쪽에서만 요청하고 반대쪽에서 응답함
•
Clinet Server(Request), Clinet Sever(Resposne) 형식의 단방향통신.
•
연결상태를 유지하지 않음 stateless
•
매 요청마다 대량의 정보를 만들어서 통신해야한다.
HTTP의 실시간 통신 방식
•
Polling
•
Long Polling
•
Streaming
Polling
NOTE
브라우저가 일정한 주기마다 서버에 HTTP 요청을 보내주는 방식
•
실시간 데이터의 업데이트 주기는 예측 불가능하므로, 불필요한 요청에 따른 서버 및 네트워크 과부하가 발생한다
•
실시간 야구 문자 중계같이 5~10초마다 주기로 계속 업데이트 한다.
•
이벤트가 없어도 요청 → 서버 클라 부담
단점
•
time interval을 어떻게 잡냐에 따라 서버의 부하가 올라가거나 실시간성이 떨어지는 trade off 관계를 갖는다
long Polling
NOTE
HTTP 요청 시 서버는 해당 연결을 바로 해제하지 않고, 일정시간 대기하는 방식
•
polling의 서버 부하를 줄이면서 실시간 성을 높이기 위한 방식
•
서버에 연결 요청을 보내놓고 서버는 이벤트가 발생하면 응답, 다시 연결
•
이벤트가 발생하면 모든 클라이언트에게 동시에 응답을 보내고, 연결을 끊고 새로운 요청을 받는다 → 서버부담
단점
•
여러 클라이언트와 잦은 데이터 변경이 일어나면 서버의 부담이 크다.
Streaming
NOTE
요청에 대한 응답을 완료하지 않은 상태에서 계속해서 데이터를 받는 방식이다.
•
long polling의 연결구축에 대한 부하를 해결하는 방식이다.
•
서버는 무한정 혹은 일정 시간동안 요청을 대기시키고, chunked 메시지를 이용해서 응답 시 연결을 계속 유지한다.
•
서버에 연결 요청을 보내놓고 계속해서 응답 데이터를 다운받는다. 서버는 이벤트가 발생하면 응답을 보낸다( 클라이언트 → 서버 데이터 전송이 힘들다.)
단점
•
클라이언트에서 서버로 데이터를 보내는게 힘들다.
Socket 통신
NOTE
Client와 Server가 특정port를 통해 연결을 성립하고 있어, 실시간으로 양방향 통실을 하는 방식!
화살표가 양쪽으로 자유롭게 요청, 응답
•
Clinet Server 형식의 양방향 통신 (Server도 Clinet에게 요청을 보낼 수 있다)
•
연결상태를 유지한다 stateful
•
최초의 hansshake 과정에서는 HTTP 프로토콜을 이용하기 떄문에, 기존의 HTTP와 비슷하게 데이터를 주고 받지만, 이후에는 간단한 데이터만 오고 간다.
웹 소켓
NOTE
7계층에서 양방향 통신을 위해서 만들어진 protocol 기술!
•
일반 소켓(TCP 기반 소켓) 처럼 양방향 실시간 통신이 가능하며, IP와 포트를 사용한 통신을 한다는 점에서 공통점이 있다
•
하지만, 웹 소켓은 기본적으로 HTTP 기반(7 계층)에서 작동하며, 일반 소켓은 TCP기반(4계층)에서 작동한다.
웹 소켓 통신
•
웹 소켓은 WebSocket 프로토콜이라는 새로운 규약에서 이루어진다.
•
웹 소켓 통신을 위한 별도의 port는 없으며 port 80, 443을 사용하도록 설계되었다.
◦
HTTP - 80, HTTPS - 443에서 이루어지므로 HTTP, HTTPS와 호환된다!
HTTP vs Socket
NOTE
HTTP vs 웹소켓 짤비교