이것저것

Web Socket 본문

Web

Web Socket

nays111 2021. 1. 18. 14:39

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