어플리케이션

웹 소켓(Web Socket) 에 대해 알아보겠습니다.

forward error correction Circle 2025. 8. 8. 08:09
반응형

Ⅰ. 웹 소켓(Web Socket) 이란?

 웹 브라우저와 서버 간에 지속적이고 실시간으로 양방향 통신을 가능하게 해주는 통신 프로토콜입니다. 일반적인 HTTP 통신이 클라이언트의 요청에 대한 서버의 응답이라는 단방향 구조라면, 웹 소켓은 한 번 연결이 이루어지면 양측이 자유롭게 데이터를 주고받을 수 있는 구조를 가지고 있습니다.
웹 소켓(Web Socket)은 HTML5의 일부로 도입되어, 웹 애플리케이션에서 실시간 기능을 구현할 수 있게 해줍니다.

Ⅱ. 웹 소켓(Web Socket) 특징

항목 설명
양방향 통신 (Full Duplex) 클라이언트와 서버가 실시간으로 데이터를 주고받을 수 있음
지속적인 연결 (Persistent Connection) 연결이 성립되면 별도의 요청 없이도 계속해서 통신 가능
낮은 오버헤드 HTTP의 헤더 구조에 비해 훨씬 가볍고 빠름
브라우저 지원 크롬, 파이어폭스, 엣지, 사파리 등 대부분의 최신 브라우저에서 지원
사용 용도 실시간 채팅, 게임, 주식 시세, IoT 기기 통신, 실시간 협업 도구 등

Ⅲ. 웹 소켓(Web Socket) 동작 원리 및 방식

 처음에는 HTTP 프로토콜을 통해 서버와 연결을 시도하고, 이후에는 웹 소켓 전용 프로토콜로 전환하여 통신을 지속합니다. 이 과정을 웹 소켓 핸드셰이크(Handshake)라고 부릅니다.

ⅰ. 웹 소켓(Web Socket) 연결 흐름

1. 클라이언트 → 서버 : HTTP 요청 + Upgrade 헤더 포함
2. 서버 → 클라이언트 : HTTP 101 응답 + WebSocket 승인 키
3. 이후 : WebSocket 프로토콜(ws:// 또는 wss://)로 양방향 통신

ⅱ. 요청 헤더 예시 (Client → Server)

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

ⅲ. 응답 헤더 예시 (Server → Client)

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

ⅳ. 통신 이후

클라이언트와 서버는 텍스트 혹은 바이너리 형식으로 실시간 메시지를 주고받을 수 있음
연결을 유지한 상태에서 중간에 HTTP 요청 없이도 데이터 전송 가능
일반적으로 JSON 형식이나 문자열로 데이터를 주고받음

Ⅳ. 웹 소켓(Web Socket) 과 소켓(Socket) 비교

항목 웹 소켓(Web Socket) 소켓(Socket)
정의 웹 환경에서 양방향 통신을 구현한 프로토콜 운영체제 수준에서 제공하는 네트워크 통신 인터페이스
동작 계층 전송 계층 (4계층, TCP/UDP 기반) 애플리케이션 계층 (7계층)
연결 대상 일반 애플리케이션 (CLI, 데스크탑 등) 웹 브라우저 ↔ 웹 서버
전송 데이터 메시지 단위 (텍스트, 바이너리) 바이트 스트림 (비정형 데이터) 
사용 용도 웹 채팅, 주식 시세, 실시간 알림 등 실시간 서버-서버 통신, 게임 서버, DB 통신 등
보안 TLS 기반의 wss:// 지원 (보안 가능) TCP에 의존. 추가 암호화 필요
프로그래밍 접근성 비교적 쉬움 (JavaScript API 지원) 복잡 (소켓 프로그래밍 필요)


웹 소켓은 소켓 기술을 웹 애플리케이션에서 손쉽게 사용할 수 있도록 HTTP 환경에 맞게 추상화한 기술입니다.

Ⅴ. 웹 소켓(Web Socket) 실사용 예시

ⅰ. 카카오톡, WhatsApp, Slack과 같은 채팅 서비스
ⅱ. 구글 문서, 노션 등 동시 편집 기능이 있는 협업 툴
ⅲ. 온라인 게임의 실시간 사용자 위치 동기화
ⅳ. 주식, 암호화폐 거래소의 시세 스트리밍
ⅴ. IoT 장비 통신에서의 저지연 제어

반응형