Поверх какого протокола работает WebSocket

Ответ

Протокол WebSocket работает поверх TCP (Transmission Control Protocol). Однако для установления соединения (handshake) он использует HTTP.

Этот процесс позволяет WebSocket "маскироваться" под обычный веб-трафик и проходить через стандартные порты (80, 443), что упрощает работу с файрволами.

Процесс установления соединения:

  1. HTTP Upgrade Request: Клиент отправляет стандартный HTTP-запрос, но с особыми заголовками Upgrade: websocket и Connection: Upgrade.
  2. Server Response: Сервер, если он поддерживает WebSocket, отвечает кодом 101 Switching Protocols.
  3. Connection Established: После этого HTTP-соединение "обновляется" до постоянного двунаправленного WebSocket-соединения, которое работает уже напрямую поверх TCP, обеспечивая быструю передачу данных с низкими задержками.

Пример Handshake:

# 1. Запрос от клиента
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

# 2. Ответ от сервера
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

# 3. Далее обмен данными идет по протоколу WebSocket поверх TCP