실시간 통신의 필요성
채팅, 실시간 알림, 온라인 게임, 주식 시세 등 즉시성이 요구되는 기능에는 전통적인 HTTP 요청-응답 방식이 비효율적입니다. 정보처리기사 시험에서는 WebSocket, SSE, Long Polling, Socket.IO의 특성과 적합한 사용 시나리오가 핵심 출제 범위입니다.
실시간 통신 방식 비교
- Short Polling: 주기적으로 서버에 HTTP 요청. 단순하지만 불필요한 요청 다수. 실시간성 낮음
- Long Polling: 서버가 응답을 보류하다가 새 데이터 발생 시 응답. HTTP 연결 재사용. 지연 없지만 연결 관리 복잡
- SSE(Server-Sent Events): 서버 → 클라이언트 단방향 스트리밍. HTTP 기반. 자동 재연결. 텍스트 전용. EventSource API
- WebSocket: 양방향 전이중 통신. HTTP 업그레이드로 시작. 낮은 오버헤드. 바이너리 지원
WebSocket 동작 원리
WebSocket은 HTTP 핸드셰이크로 연결을 시작해 TCP 소켓으로 업그레이드합니다.
- 핸드셰이크: HTTP GET 요청 + Upgrade: websocket + Sec-WebSocket-Key 헤더
- 101 Switching Protocols: 서버 응답으로 WebSocket 연결 수립
- 프레임(Frame): WebSocket 데이터 전송 단위. 텍스트/바이너리/Ping/Pong/Close 프레임
- ws:// vs wss://(TLS 암호화): 포트 80/443 사용. 방화벽 친화적
Socket.IO
WebSocket 위에 추가 기능을 제공하는 Node.js 라이브러리입니다.
- 네임스페이스(Namespace): 하나의 연결에서 논리적으로 분리된 채널
- 룸(Room): 네임스페이스 내 그룹. 특정 사용자 그룹에게 메시지 전송
- 폴백(Fallback): WebSocket 미지원 시 Long Polling으로 자동 전환
- 이벤트 기반: emit(전송), on(수신)으로 커스텀 이벤트 처리
WebRTC(Web Real-Time Communication)
브라우저 간 피어-투-피어(P2P) 실시간 오디오/비디오/데이터 통신 API입니다.
- ICE(Interactive Connectivity Establishment): P2P 연결 경로 탐색
- STUN 서버: 공인 IP 확인. NAT 통과
- TURN 서버: P2P 불가 시 릴레이 서버
- SDP(Session Description Protocol): 미디어 능력 교환 프로토콜
정보처리기사 기출 핵심 정리
- WebSocket = 양방향 전이중, HTTP 업그레이드(101), ws://wss://
- SSE = 서버→클라이언트 단방향, 텍스트 전용, 자동 재연결
- Long Polling = 서버가 응답 보류, 데이터 발생 시 응답
- Socket.IO = WebSocket + Fallback, 룸/네임스페이스
- WebRTC = P2P 미디어 통신, STUN(IP확인)/TURN(릴레이)