웹 소켓이란?
Web Socket은 클라이언트와 서버간의 지속적인 양방향 통신을 가능하게하는 통신 프로토콜 입니다.
핵심적인 특징이 여러가지 있습니다. 그 전에 이해해야 할 부분은 통신 프로토콜이라는 부분입니다.
대표적인 통신 프로토콜의 예시로 Http 프로토콜이 있습니다. 그것과 다른 개념의 통신 프로토콜이라고 이해를 해야 그 다음으로 넘어갔을 때 이해가 쉽습니다.
웹 소켓의 특징
- 양방향 통신(Bidirectional Communication): 서버와 클라이언트가 서로 자유롭게 데이터 송신 수신이 가능합니다.
- 지속적 연결(Persistent Connection): 한 번 연결되면 계속 유지되며 통신이 가능합니다. Http는 매 요청마다 새로 연결을 맺어야 합니다. 하지만 웹 소켓은 한 번 연결하면 지속되며, 재연결 과정이 필요하지 않습니다.
- 실시간 통신(Real-time Communication): 연결이 유지되는 특성이 있기 때문에, 데이터를 즉시 송신 수신 하는것이 가능합니다. 이러한 특성 때문에, 소켓 통신이 채팅 프로그램에 많이 사용됩니다.웹 소켓의 연결과정?웹 소켓은 프로토콜이고 그렇기 때문에 Http에 종속되지 않는 연결과정을 거친다 라고 생각할 수 있습니다.
하지만 웹 소켓도 Http 프로토콜을 사용해서 연결합니다. 첫 연결을 Http로 진행하고 그 이후에 웹 소켓으로 전환하는, 업그레이드 하는 과정을 거쳐서 비로소 웹 소켓이 연결됩니다.
1. HTTP 핸드셰이크 요청
httpGET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
핵심 헤더
- Upgrade: websocket → 웹소켓으로 프로토콜 업그레이드 요청
- Connection: Upgrade → 연결 업그레이드 명시
- Sec-WebSocket-Key → 보안을 위한 랜덤 키
- Sec-WebSocket-Version → 웹소켓 버전 (현재 13)
2. HTTP 핸드셰이크 응답
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
핵심 응답
101 Switching Protocols → 프로토콜 전환 승인
Sec-WebSocket-Accept → 클라이언트 키 기반 응답 키
3. 프로토콜 전환
- HTTP 요청-응답 모델 → WebSocket 양방향 통신
- 텍스트 기반 → 바이너리/텍스트 프레임 기반
- 상태 없음(Stateless) → 상태 유지(Stateful)
반응형
'CS' 카테고리의 다른 글
| 운영체제란? 운영체제의 역할 (0) | 2025.11.24 |
|---|---|
| [CS] 컴퓨터와 문자 인코딩 (2) | 2024.12.21 |
| [System Design] 서버 확장, 로드밸런서, 그리고 무상태 아키텍처로 성능 최적화를 하는 방법 (0) | 2024.12.16 |
