WebSocket은 HTTP로 문을 열고 101 이후에는 frame 통신으로 바뀐다
초기 handshake는 HTTP 헤더로 협상하지만, 전환이 끝나면 같은 연결에서 WebSocket frame이 오간다.
순서
Browser
Server
1
GET + Upgrade: websocket
Origin/Auth/Upgrade 헤더 검사
2
Sec-WebSocket-Key 전송
Key + magic string으로 Accept 계산
3
101 Switching Protocols 수신
프로토콜 전환 승인
4
WebSocket frame 송수신
ping/pong, close, message 처리
헤더/상태
의미
실패 시 증상
Upgrade
HTTP에서 WebSocket으로 전환 요청
프록시가 막으면 연결 실패
Sec-WebSocket-Accept
서버가 올바른 handshake임을 증명
브라우저가 연결 거부
101
이후 HTTP 요청/응답이 아님
서버가 frame loop로 전환하지 못함