WebSocket 이란 ?

SEUNGJUN·2024년 3월 5일

Chat

목록 보기
1/4

웹소켓(WebSocket)

양방향 통신을 제공하는 컴퓨터 네트워크 기술로서 HTTP 프로토콜과 달리, 클라이언트와 서버 간에 지속적인 연결을 제공하여 실시간으로 데이터를 주고 받을 수 있다.

웹소켓 주요 특징

1. 양방향 통신

  • 클라이언트와 서버 간에 양방향으로 데이터를 주고받을 수 있다. 이것은 HTTP와는 달리 서버에서 요청을 기다릴 필요 없이 언제든지 양쪽에서 데이터를 보낼 수 있다.

2. 실시간성

  • 웹소켓을 사용하면 실시간 데이터 전송이 가능하다. 예를 들어, 온라인 게임, 주식 거래, 채팅 등 실시간 업데이트가 필요한 애플리케이션에 적합하다.

3. 간단한 프로토콜

  • 웹소켓은 상대적으로 간단한 프로토콜을 사용한다.
  • 연결설정 -> 메시지 전송 -> 연결 종료

4. 효율적인 데이터 전송

  • HTTP와 달리 웹소켓은 헤더 오버헤드가 적다. 이것은 웹소켓이 데이터를 전송할 때 더 적은 오버헤드를 가지고 있으며, 따라서 효율적인 통신이 가능하다는 것이다.

예를 들어, 실시간 채팅 애플리케이션을 생각해본다면, 애플리케이션은 웹소켓을 사용하여 클라이언트 간에 메시지를 실시간으로 전송할 수 있다. 클라이언트가 새로운 메시지를 입력하면 이를 서버로 전송하고, 서버는 다른 클라이언트에게 해당 메시지를 전달한다. 이 모든 과정은 웹소켓을 통해 이루어지며, 실시간으로 메시지를 주고 받을수 있다.

웹소켓 통신 과정

1. 핸드셰이크(Handshake)

  • 클라이언트가 서버에게 웹소켓 연결을 요청한다.
  • 이 요청은 HTTP 프로토콜을 사용하여 이루어지며, 클라이언트는 특정 헤더(Upgrade:websocket)를 포함한 요청을 서버에 보낸다.
  • 서버는 이 요청을 받고, 웹소켓 연결을 수락하기 위해 특정 응답 헤더(Upgrade:websocket, Connection:Upgrade, Sec-Websocket-Accept 등)와 함께 101 상태 코드(전환 프로토콜)를 클라이언트에게 반환한다.
  • 이러한 과정을 통해 클라이언트와 서버는 웹소켓 연결을 수립하게 된다.

2. 연결 수립(Connection Establishment)

  • 핸드셰이크가 완료되면 클라이언트와 서버 간에 양방향 통신이 가능한 웹소켓 연결이 설정된다.
  • 이 연결은 TCP 소켓을 기반으로 하며, HTTP와 다르게 연결을 유지하면서 데이터를 주고받을 수 있다.

3. 메시지 교환(Message Exchange)

  • 웹소켓 연결이 설정되면 클라이언트와 서버는 양방향으로 메시지를 주고받을 수 있다.
  • 클라이언트나 서버는 웹소켓 프레임 형식으로 메시지를 보내고 있다.
  • 이러한 메시지는 텍스트나 이진 데이터 형식으로 전송된다.

4. 연결 유지(Keep-Alive)

  • 웹소켓은 연결을 유지하면서 지속적으로 메시지를 주고받을 수 있다.
  • 따라서 클라이언트와 서버는 필요에 따라 언제든지 메시지를 전송할 수 있고, 연결이 끊어지지 않는 한 상시 대기 상태에 있다.

5. 연결 종료(Connection Termination)

  • 클라이언트나 서버가 연결을 종료하려면 특정 프로토콜 메시지를 사용하여 종료 요청을 보낼 수 있다.
  • 이러한 종료 요청은 양쪽 모두가 연결을 끊고 연결 상태를 해제할 때까지 수행된다.
profile
RECORD DEVELOPER

0개의 댓글