frame anatomy

WebSocket 메시지는 opcode, mask, payload 길이를 가진 frame으로 흐른다

큰 메시지는 여러 frame으로 쪼개질 수 있고 ping, pong, close 같은 제어 frame도 같은 연결에서 섞여 처리된다.

필드
의미
운영 포인트
FIN
메시지의 마지막 frame 여부
분할 메시지 재조립
opcode
text, binary, close, ping, pong 구분
제어 frame은 빠르게 처리
mask
브라우저에서 서버로 보낼 때 필요
서버는 unmask 후 해석
payload length
본문 크기
최대 크기와 메모리 제한
메시지 경로
해야 할 일
놓치면 생기는 문제
receive
frame을 읽고 opcode 확인
ping/close 처리가 늦어짐
assemble
분할 frame을 메시지로 합침
큰 메시지 중간 상태 유실
send
queue와 backpressure 관측
느린 클라이언트가 메모리 증가
핵심WebSocket은 하나의 열린 관이 아니라 frame 단위 상태를 계속 판정하는 프로토콜이다.