概要
Client(Browser) と Server で対話的な通信セッション = 双方向通信 を開くプロトコル Layer 7 / HTTP とは互換性があるものの、別プロトコル WebSocketのハンドシェイクはHTTP/1.1 Upgradeヘッダーを使用し、HTTPプロトコルをWebSocketプロトコルに変更するように実現
Point
サーバープッシュ(サーバーが起点となって、ブラウザにデータを配信する)ことが従来技術だと難しいところを解決 ハンドシェイクだけ、HTTPぽい通信だけど、その上はTCP上で独自のフレームになる これがない時代は HTTPセッションを長期間ポーリング
RFC rfc6455
https://tex2e.github.io/rfc-translater/html/rfc6455.html
WebSocket のセキュリティ
https://devcenter.heroku.com/ja/articles/websocket-security ws:/じゃなくて、SSL上の wss:/ ws使って、トンネリングしない。これをすると、DBなどの通信が XSSの対象となっちゃう WebSocket プロトコルでは、承認や認証が処理されません。
AWS的な話
- WebSocket は WAFでは対応不可ぽい
- WebSocket にUpgrade されるまでは HTTP なのでWAFの対象