토픽 115 / 147·네트워크 응용 및 고급 프로토콜
WebSocket
WebSocket
클라이언트와 서버 간 단일 TCP 연결을 통해 전이중(Full-Duplex) 양방향 통신을 제공하는 프로토콜(RFC 6455)로, HTTP 핸드셰이크로 연결을 업그레이드하며 실시간 웹 애플리케이션(채팅, 게임, 주식)에 활용
목적: 실시간 양방향 통신, 낮은 지연, 서버 푸시, 지속 연결, HTTP 폴링 대체
특징: 전이중 통신, 단일 TCP 연결, HTTP 업그레이드, 낮은 오버헤드, 프레임 기반
구성요소
- •핸드셰이크: HTTP Upgrade 요청, 101 Switching Protocols 응답, Sec-WebSocket-Key
- •프레임: 데이터 단위, Opcode(텍스트/바이너리/Ping/Pong/Close), Payload
- •연결: ws://(80) 또는 wss://(443, TLS), 지속 연결
핸드셰이크 과정
프레임 구조: FIN(1비트), Opcode(4비트), Mask(1비트), Payload Length, Payload Data
Opcode: 0x1(텍스트), 0x2(바이너리), 0x8(Close), 0x9(Ping), 0xA(Pong)
장점: 실시간 양방향, 낮은 오버헤드(2바이트 헤더), 서버 푸시, 지속 연결, 표준 프로토콜
단점: 상태 유지 필요(스케일 어려움), 프록시/방화벽 호환성, 재연결 로직 필요, HTTP/2와 중복
HTTP 폴링 비교
- •Polling: 주기적 요청, 지연 높음, 비효율
- •Long Polling: 대기 후 응답, 연결 반복
- •SSE: 서버→클라이언트 단방향, 텍스트만
- •WebSocket: 양방향, 낮은 지연, 효율적
적용사례: 채팅(Slack, Discord), 실시간 협업(Google Docs), 주식/가상화폐 시세, 온라인 게임, IoT
기술요소: HTTP Upgrade, Frame, Ping/Pong(하트비트), ws/wss, Socket.io
비교: WebSocket(양방향/지속) vs SSE(단방향/HTTP) vs HTTP/2 Push(제한적) vs gRPC Streaming
연관: HTTP, TCP, 실시간 통신, Socket.io, SSE, 채팅, 게임