🔙뒤로가기

웹소켓(WebSocket)은 클라이언트와 서버 간에 개방된 연결을 유지하고, 양방향 통신을 가능하게 하는 통신 프로토콜이다. 이는 실시간 어플리케이션 (예: 채팅 애플리케이션, 실시간 게임 등)에 유용하다.

역사

웹소켓 프로토콜은 처음에 HTMl5 사양의 일부로 제안되었다. 이전에는 웹에서 실시간 통신을 하려면 AJAX 풀링, 롱 풀링, Flash 기반의 솔루션 등 복잡하고 비효율적인 방법을 사용해야 했다.

웹 소켓은 이러한 문제를 해결하고자 2008년에 처음 제안되었고, 2011년에 IETF에 의해 RFC6455로 표준화되었다. 웹소켓 프로토콜은 TCP에 기반하며, HTTP와 동일한 기본 포트(80과 443)를 사용한다.

프로토콜 종류와 쓰임새

웹소켓 프로토콜에는 크게 두 가지 종류가 있다.

  1. wss(WebSocket Secure) : HTTPS와 비슷하게 SSL/TLS를 통해 암호화된 웹 소켓 연결을 제공한다. 민감한 데이터를 전송하는 경우 또는 중간자 공격(man-in-the-middle attacks)을 방지하기 위해 사용된다.

HTTP와 웹소켓 비교

  1. ws(WebSocket) : 기본 웹소켓 프로토콜로, 일반적인 HTTP 연결과 같이 암호화되지 않은 연결을 제공한다.

웹소켓의 작동 원리를 이해하려면, 먼저 HTTP와 웹 소켓이라는 두 가지 프로토콜의 차이점을 알아야 한다.

웹소켓의 작동 원리

  1. Handshake: 웹 소켓 연결이 처음 맺어질 때, 클라이언트와 서버는 웹 소켓 Handshake를 진행한다. 이는 HTTP 업그레이드 요청을 통해 이루어지며, 클라이언트와 서버가 통신 방법을 웹 소켓으로 변경하는 것이다.
  2. 데이터 전송: 한번 연결이 성공적으로 수립되면, 클라이언트와 서버는 양방향 통신을 시작할 수 있다. 이 데이터는 프레임으로 나누어 전송되며, 각 프레임은 작은 데이터 조각으로 구성된다.
  3. 연결 종료: 웹 소켓 연결은 클라이언트 또는 서버 중 어느 쪽이든 연결을 종료할 수 있다.

추가적인 정보