반응형
Ⅰ. 웹 소켓(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 장비 통신에서의 저지연 제어
반응형
'어플리케이션' 카테고리의 다른 글
| 검색엔진 최적화(Search Engine Optimization, SEO)에 대해 알아보겠습니다. (0) | 2025.10.13 |
|---|---|
| SAML(Security Assertion Markup Language)에 대해 알아보겠습니다. (2) | 2025.08.15 |
| HTTP(Hyper Text Transfer Protocol)에 대해 알아보겠습니다. (1) | 2025.08.04 |
| 가비지 컬렉션(Garbage Collection, GC)에 대해 알아보겠습니다. (2) | 2025.07.28 |
| 자바 개발을 위한 SQL 매퍼 프레임워크인 MyBatis 에 대해 알아보겠습니다. (1) | 2025.07.07 |