본문 바로가기
IT지식

WebSocket(웹소켓)이란?

by cocogugu 2023. 5. 15.
반응형

웹 소켓은 두 프로그램 간의 메시지 교환을 위한 통신 방법 중 하나

  • 현재 인터넷 환경(HTML5)에서 많이 사용된다.
  • 웹 소켓을 지원하는 브라우저의 경우 웹 소켓 프로토콜을 지원
  • W3C와 IETF에 의해 자리잡은 표준 프로토콜 중 하나

웹 소켓의 특징

웹 소켓이 나온 이유는 특징과 연관이 된다

  1. 양방향 통신(Full-Duplex)
  • 데이터 송수신을 동시에 처리할 수 있는 통신 방법
  • 클라이언트와 서버가 서로에게 원할 때 데이터를 주고 받을 수 있다
  • 통상적인 Http 통신은 Client가 요청을 보내는 경우에만 Server가 응답을 하는 단방향 통신
  1. 실시간 네트워킹(Real Time-Networking)
  • 웹 환경에서 연속된 데이터를 빠르게 노출
  • ex) 채팅, 주식, 비디오 데이터

웹 소켓 동작 방법

웹 소켓도 핸드 쉐이킹이 필요하고, Socket프로토콜이 아닌 HTTP 또는 HTTPS 프로토콜을 통해 이루어 진다

웹 소켓 요청

  • HTTP 버전은 1.1이상
  • 반드시 GET메서드를 사용해야 한다
  • Upgrade정보는 서버, 전송, 프로토콜 연결에서 다른 프로토콜로 업그레이드 또는 변경하기 위한 규칙이다
  • Sec-Websocket-Key는 클라이언트가 요청하는 여러 서브 프로토콜을 의미한다

웹 소켓 응답
101 Switching Protocols가 Response로 오면 웹소켓이 연결 된 것이다

  • Sec-Websocket-Accept는 요청에서의 Key값을 계산한 값으로 신원 인증에 필요한 헤더이다

위와같이 핸드 쉐이크가 완료되면 프로토콜이 ws로 변경된다
또는 wss와 같이 데이터 보안을 위해 SSL을 적용한 프로토콜로 변경된다

 

Message : 여러 frame이 모여서 구성하는 하나의 논리적 메시지 단위
Frame : communication에서 가장 작은 단위의 데이터, 작은 헤더 + payload로 구성
웹소켓 통신에 사용되는 데이터 : UTF8 인코딩
0x00 - 보내고 싶은 데이터 - 0xff 의 구성으로 데이터가 오간다

 

웹 소켓 프로토콜 특징

  • 최초 접속시에만 http프로토콜 위에서 handshaking을 하기 때문에 http header를 사용한다
  • 웹소켓을 위한 별도의 포트는 없고, 기존 포트를 사용한다
  • 프레임으로 구성된 메시지라는 논리적 단위로 송수신 한다
  • 메시지에 포함될 수 있는 교환 가능한 메시지는 텍스트와 바이너리 뿐이다
반응형

댓글