Study/인터넷 & 네트워크 기초

웹소켓(WebSocket)의 원리와 동작 방식

sowon02 2025. 11. 10. 13:30

웹소켓이란?

웹소켓(WebSocket)은 클라이언트와 서버가 실시간으로 양방향 통신을 할 수 있도록 도와주는 기술이다.

기존의 HTTP 통신은 요청(Request)과 응답(Response) 구조로만 이루어져 있어,

클라이언트가 새 데이터를 원할 때마다 매번 서버에 요청을 보내야 했다.

하지만 웹소켓은 한 번 연결이 맺어지면 서버와 클라이언트가 자유롭게 데이터를 주고받을 수 있다.


등장 배경

소켓(Socket) 개념이 등장하게 된 배경에는 HTTP의 구조적 한계가 있다.
HTTP는 기본적으로 비연결형(stateless) 프로토콜로, 클라이언트가 서버에 요청을 보내면 응답을 받은 뒤 즉시 연결이 종료된다.

 

예를 들어 채팅 애플리케이션을 만든다고 가정하면,

클라이언트는 새로운 메시지가 있는지 확인하기 위해 매번 서버에 “새 메시지가 있나요?”라는 요청을 반복적으로 보내야 한다. 이런 방식은 네트워크 자원을 불필요하게 소모하고, 실시간성이 크게 떨어진다.

HTTP vs Socket communication

이러한 문제를 해결하기 위해 등장한 기술이 바로 웹소켓(WebSocket) 프로토콜이다. 웹소켓은 처음에는 HTTP를 이용해 연결(handshake) 을 맺지만, 연결이 성립된 이후에는 소켓 기반의 지속적인 통신 채널로 전환된다. 즉, 한 번 연결되면 서버와 클라이언트가 실시간으로 양방향 데이터 통신을 수행할 수 있는 상태가 된다.


동작 과정

웹소켓 동작 과정

1. Handshake (초기 연결)

  • 클라이언트가 HTTP 요청 헤더에 Upgrade: websocket을 포함해 서버에 보낸다.
  • 서버가 이를 승인하면 연결이 웹소켓 프로토콜로 “업그레이드”된다.

2. 지속적인 연결 유지

  • 이제 TCP 기반의 연결이 유지된다.
  • 서버와 클라이언트는 모두 언제든 메시지를 보낼 수 있다.

3. 실시간 데이터 전송

  • 예를 들어 실시간 주식 시세, 채팅 메시지, 알림 데이터 등을
    지연 없이 주고받을 수 있다.

사용 예시

웹소켓은 실시간성이 중요한 서비스에서 많이 사용된다.

  • 실시간 채팅
  • 주식 차트나 코인 시세 알림
  • 온라인 게임 서버 통신
  • 알림(push) 서비스

정리 및 요약

구분 HTTP Socket
연결 방식 요청 - 응답 후 종료 연결 유지
통신 방향 단방향 양방향
실시간성 낮음 높음
사용 예 웹페이지 요청 채팅, 알림, 실시간 데이터

웹소켓은 단순한 웹 통신 이상의 기능을 제공한다. HTTP로는 불가능했던 실시간 양방향 데이터 송수신을 가능하게 하며,
오늘날의 채팅, 게임, 스트리밍 서비스의 기반 기술로 자리 잡았다.

앞으로 웹소켓을 직접 코드로 구현해 보면, 서버와 클라이언트가 “끊기지 않는 대화”를 어떻게 주고받는지 더 쉽게 이해할 수 있을 것이다.