이것저것
Web Socket 본문
Web Socket이란?
두 프로그램 간의 메시지를 교환하기 위한 통신 방법 중 하나
W3C와 IETF에 의해 자리잡은 표준 프로토콜 중 하나
- W3C : 월드 와이드 웹을 위한 표준을 개발하고 장려하는 조직
- IETF : 인터넷의 운영, 관리, 개발에 대해 협의하고 프로토콜과 구조적인 사안들을 분석하는 인터넷 표준화 작업 기구
현재 인터넷 환경(HTML5) 에서 많이 사용된다.
Web Socket을 지원하는 브아주어의 경우 (Internet Explorer, Chrome 등) 은 Web Socket 프로토콜을 지원
Web Socket의 특징
양방향 통신 (Full-Duplex)
- 데이터 송수신을 동시에 처리할 수 있는 통신 방법
- 클라이언트와 서버가 서로에게 원할 때 데이터를 주고 받을 수 있다.
- 통상적인 HTTP 통신은 Client가 요청을 보내는 경우에만 Server가 응답하는 단방향 통신
실시간 네트워킹
- 웹 환경에서 연속된 데이터를 빠르게 노출
- Ex) 채팅, 주식, 비디오 데이터
- 여러 단말기에 빠르게 데이터를 교환
Web Socket 이전의 비슷한 기술
Polling
- 서버로 일정 주기 요청 송신
- real-time 통신에서는 언제 통신이 발생할지 예측이 불가능, 불필요한 request와 connection을 생성
- real-time 통신이라고 부르기 애매할 정도의 실시간성
Long Polling
- 서버에 요청 보내고 이벤트가 생겨 응답 받을 때까지 연결 종료 X
- 응답 받으면 끊고 다시 재요청
Streaming
- 서버에 요청 보내고 끊기지 않은 연결상태에서 끊임없이 데이터 수신
- 클라이언트에서 서버로의 데이터 송신이 어렵다.
위 기술들을 HTTP 통신을 하다보니, Request, Response 둘 다 Header가 불필요하게 큼,,,
웹 소켓 동작 방법 - 핸드 쉐이킹
- 서버와 클라이언트 간 웹 소켓 연결은 HTTP 프로콜을 통해 이루어진다.
- 연결이 정상적으로 이루어진다면 서버와 클라이언트 간에 웹 소켓 연결(TCP/IP 기반) 이 이루어지고, 일정 시간이 지나면 HTTP 연결은 자동으로 끊긴다.
웹 소켓 프로토콜 특징
- 최초 접속에서만 http 프로토콜 위에서 hanshaking을 하기 때문에 http header를 사용한다.
- 웹 소켓을 위한 별도의 포트는 없으며, 기존 포트 (http - 80, https -443) 을 사용한다.
- 프레임으로 구성된 메시지라는 논리적 단위로 송수신
- 메시지에 포함될 수 있는 교환 가능한 메시지는 텍스트와 바이너리이다.
6. 웹소켓의 한계 - Socket.io, SockJS
- HTML 5이전의 기술로 구현된 서비스에서 웹소켓처럼 사용할 수 있도록 도와주는 기술
- JS를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현 가능
- 즉, 브라우저와 웹 서버의 종류와 버전을 파악하여 가장 적합한 기술(WebSocket, FlashSocket, AJAX Long Polling, IFrame, JSONP Polling 등)을 선택하여 사용하는 방식
- Web Socket은 문자열들을 주고 받을 수 있게 해줄 뿐 그 이상의 일을 하지 않는다.
STOMP
- 채팅 통신을 하기 위한 형식을 정의
'Web' 카테고리의 다른 글
HTTPS - SSL / TLS (0) | 2021.02.17 |
---|---|
Session, Cookie 에 관하여 (0) | 2021.02.17 |
Request, Response 흐름 과정 (0) | 2021.01.16 |
Proxy (0) | 2021.01.07 |
Web Server vs WAS (0) | 2021.01.07 |
Comments