2012-02-11 9 views
15

¿Hay algún resumen del , diferencia de protocolo entre los distintos borradores de WebSockets?¿Cuáles son las diferencias de protocolo entre las versiones de WebSockets?

Los niveles de soporte del navegador todavía están por todas partes, por lo que no basta con considerar el RFC.

Obviamente, la versión Sec-WebSocket-Version cambia, y sé que el formato inicial era bastante radicalmente diferente. Sin embargo, me refiero a los cambios más sutiles en el protocolo. Por ejemplo, hybi-10 (v8), en el encuadre, sugiere que la longitud de la carga útil extendida se almacena como 16/63, en lugar de 16/64 en RFC 6455 (v13).

Entonces, ¿hay un resumen de los cambios en cualquier lugar?

Alternativamente (si ignoramos los primeros borradores y los números de versión), ¿es el caso que el protocolo es esencialmente el mismo, y que los borradores son principalmente correcciones al texto de la especificación?

Respuesta

19

La Wikipedia WebSocket enumera qué navegadores admiten qué protocolo.

Además, el IETF proporciona una herramienta de diferencias que se puede utilizar para comparar dos especificaciones de borrador de RFC. Por ejemplo, para comparar el proyecto WebSocket 15 y 17, entra aquí:

Ajuste el url1 y url2 direcciones para obtener un diff para las versiones arbitrarias. Tenga en cuenta que esto le mostrará las diferencias de texto a la especificación y grandes cambios a la especificación a menudo suceden sin diferencias correspondientes en el cable. Sugiero que busque en los diffs la sección "Descripción general del protocolo" y la sección "Protocolo de estructura base" que muestra el resumen del encabezado y el diagrama de encuadre respectivamente.

La mayor diferencia en el protocolo de cable entre Hixie-76/HyBi-00 (HyBi-00 era solo una copia de Hixie-76 para iniciar la nueva serie) y el resto de la serie HyBi comenzando con HyBi-04 (HyBi-17 se convirtió en IETF RFC 6455). Algunas de las principales diferencias con la serie Hixie a la serie hybi:

  • En el protocolo Hixie-76, hubo un apretón de manos de hash peculiar que sucedió después de las cabeceras de apretón de manos, pero antes de las tramas de datos reales.
  • En Hixie-76, los marcos tenían el prefijo 0x00 y sufijo con 0xff. No había forma de determinar la longitud del marco excepto mediante la recepción/almacenamiento en búfer hasta el final del cuadro. En la serie HyBi (después de HyBi-00), la longitud del cuadro es parte del prefijo/encabezado y no hay sufijo.
  • La serie HyBi admite tanto texto UTF-8 como datos binarios en la carga útil (Hixie solo es compatible con UTF-8). Esto se indica mediante un código de operación en el encabezado del marco.
+1

Ok, la herramienta de comparación de especificaciones es la verdadera ganadora aquí - déjame tener confianza. Aclamaciones. Era muy consciente de los 00 muy diferentes; eran las diferencias menores entre los borradores posteriores las que quería verificar. –

+0

Encontré un cambio interesante, re el encabezado de origen; más detalles en mi respuesta –

2

No tengo conocimiento de que muchas de las versiones de protocolo estén en uso actual. Tengo un servidor websocket que admite Hixie-76 y hybi-10 a 17 (solo cambios en Sec-WebSocket-Version) que funciona en Safari (escritorio + iOS), Firefox y Chrome.

(El más antiguo) Hixie-76 es útil para hablar con dispositivos iOS al menos.

hybi-10 en adelante son esencialmente lo mismo. Supuse que su ejemplo de la carga útil extendida anunciada como 63 bits en hybi-10 era un error tipográfico y era una de las muchas pequeñas correcciones realizadas cuando los borradores se movían rápidamente de 10 a 17.

Más tarde: editado para mostrar que algunas versiones de Safari realmente usan Hixie-76

+0

Esa fue mi conclusión también; usar 63 significaría que todo tenía una alineación incómoda, lo que sería una locura. Guay; Probaré el mimetismo de la versión del 10 al 17 y agregaré el soporte explícito de hybi-00. Gracias. –

+0

En realidad, hay un cambio - ver mi respuesta –

+0

Ah, lo siento. Me perdí eso ya que mi (simple) servidor websocket no usa el encabezado de origen. – simonc

4

Para agregar un cambio específico; en Sec-WebSocketVersion < = 8, el origen está en Sec-WebSocket-Origin; sin embargo, en 13 esto cambia al encabezado Origin. Esto cambia específicamente between hybi-10 and hybi-11, que son ambas implementaciones de la versión "8". También tenga en cuenta que es Origin en hixie-76/hybi-00, por lo que parece que pasó de Origin a Sec-WebSocket-Origin y luego de vuelta a Origin.

Cuestiones relacionadas