웹소켓(WebSocket) 연결이 맺어질 때의 절차는 HTTP를 이용한 핸드셰이크를 통해 시작되고, 이후에는 양방향 실시간 통신이 가능한 TCP 연결로 전환됩니다. 다음은 그 과정을 단계별로 설명한 내용입니다:


---

✅ 1. 클라이언트의 연결 요청 (HTTP 핸드셰이크)

클라이언트(보통 브라우저)는 HTTP 프로토콜을 통해 WebSocket 연결 요청을 서버에 보냅니다.

요청에는 다음과 같은 특별한 헤더들이 포함됩니다:


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

주요 헤더 설명:

Upgrade: websocket: HTTP에서 WebSocket으로 프로토콜 변경 요청

Connection: Upgrade: 연결을 업그레이드하겠다는 의미

Sec-WebSocket-Key: 클라이언트가 제공하는 임의의 문자열 (서버가 응답할 때 사용)

Sec-WebSocket-Version: 사용하는 WebSocket 프로토콜 버전 (보통 13)




---

✅ 2. 서버의 응답 (핸드셰이크 수락)

서버는 위 요청을 확인한 후, 조건이 맞으면 다음과 같이 응답하여 WebSocket 업그레이드를 승인합니다:


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

Sec-WebSocket-Accept는 클라이언트의 Sec-WebSocket-Key를 기반으로 서버가 생성한 응답값 (SHA-1 해시 + Base64 인코딩)



---

✅ 3. WebSocket 연결 수립

위 응답까지 성공하면 HTTP에서 WebSocket 연결로 업그레이드됩니다.

이후부터는 프레임 단위의 양방향 통신이 가능해지며, 클라이언트와 서버는 실시간으로 메시지를 주고받을 수 있습니다.



---

✅ 4. 양방향 통신 시작

텍스트, 바이너리 데이터 등 다양한 형식의 메시지를 주고받을 수 있습니다.

연결은 닫을 때까지 지속되며, 하나의 TCP 연결 위에서 실시간으로 동작합니다.



---

✅ 요약

단계 설명

1 클라이언트가 HTTP 요청으로 Upgrade: websocket 핸드셰이크 시도
2 서버가 101 Switching Protocols로 응답하여 업그레이드 승인
3 WebSocket 프로토콜로 전환 후 연결 수립
4 양방향 통신 시작 (실시간 메시지 전송 가능)





LIST

+ Recent posts