SPDY - SPDY

SPDY (pronuncia-se "rápido") é um protocolo de comunicação de especificação aberta obsoleto que foi desenvolvido principalmente no Google para transportar conteúdo da web . O SPDY manipula o tráfego HTTP , com objetivos específicos de reduzir a latência de carregamento da página da web e melhorar a segurança da web . O SPDY atinge latência reduzida por meio de compactação , multiplexação e priorização, embora isso dependa de uma combinação de condições de implantação de rede e site. O nome "SPDY" é uma marca comercial do Google e não um acrônimo .

SPDY tornou-se a base para a especificação HTTP / 2. No entanto, o HTTP / 2 divergiu do SPDY e, eventualmente, o HTTP / 2 incluiu todos os casos de uso do SPDY. Depois que o HTTP / 2 foi ratificado como um padrão, os principais implementadores, incluindo Google, Mozilla e Apple, descontinuaram o SPDY em favor do HTTP / 2. Em 2021, nenhum navegador moderno oferece suporte a SPDY.

História

O HTTP / 2 foi discutido pela primeira vez quando se tornou aparente que o SPDY estava ganhando força com implementadores (como Mozilla e nginx) e estava mostrando melhorias significativas em relação ao HTTP / 1.x. Após uma chamada de propostas e um processo de seleção, o SPDY foi escolhido como base para o HTTP / 2. Desde então, houve uma série de mudanças, com base na discussão no Grupo de Trabalho e no feedback dos implementadores.

Em julho de 2012, o grupo que desenvolveu o SPDY declarou publicamente que estava trabalhando em direção à padronização (disponível como um rascunho da Internet ). O primeiro rascunho de HTTP / 2 usou o SPDY como base de trabalho para seu rascunho e edição de especificações.

Ao longo do processo, os principais desenvolvedores do SPDY estiveram envolvidos no desenvolvimento do HTTP / 2 , incluindo Mike Belshe e Roberto Peon.

Chromium , Mozilla Firefox , Opera , Amazon Silk , Internet Explorer e Safari expressaram apoio ao SPDY na época.

Em fevereiro de 2015, o Google anunciou que após a ratificação do padrão HTTP / 2, o suporte para SPDY seria suspenso e o suporte para SPDY seria retirado. Em 15 de maio de 2015, HTTP / 2 foi oficialmente ratificado como RFC  7540 .

Em 11 de fevereiro de 2016, o Google anunciou que o Chrome não suportaria mais SPDY após 15 de maio de 2016, o aniversário de um ano do RFC  7540 que padronizou o HTTP / 2 .

Em 25 de janeiro de 2019, a Apple anunciou que o SPDY seria preterido em favor do HTTP / 2 e seria removido em versões futuras.

O Google removeu o suporte SPDY no Google Chrome 51. A Mozilla removeu-o no Firefox 50. A Apple suspendeu o uso da tecnologia no macOS 10.14.4 e iOS 12.2.

Projeto

O objetivo do SPDY é reduzir o tempo de carregamento da página da web. Isso é conseguido priorizando e multiplexando a transferência de sub-recursos da página da web para que apenas uma conexão por cliente seja necessária. A criptografia TLS é quase onipresente em implementações SPDY, e os cabeçalhos de transmissão são compactados por gzip - ou DEFLATE - por design (em contraste com HTTP, onde os cabeçalhos são enviados como texto legível). Além disso, os servidores podem sugerir ou até mesmo enviar conteúdo em vez de aguardar solicitações individuais para cada recurso de uma página da web.

O SPDY requer o uso de SSL / TLS (com extensão TLS ALPN ) para segurança, mas também oferece suporte à operação em TCP simples . O requisito para SSL é para segurança e para evitar incompatibilidade quando a comunicação é através de um proxy .

Relação com HTTP

SPDY não substitui HTTP; ele modifica a maneira como as solicitações e respostas HTTP são enviadas pela rede . Isso significa que todos os aplicativos existentes do lado do servidor podem ser usados ​​sem modificação se uma camada de tradução compatível com SPDY for colocada em prática.

SPDY é efetivamente um túnel para os protocolos HTTP e HTTPS. Quando enviadas por SPDY, as solicitações HTTP são processadas, tokenizadas, simplificadas e compactadas. Por exemplo, cada ponto de extremidade SPDY controla quais cabeçalhos foram enviados em solicitações anteriores e pode evitar reenviar os cabeçalhos que não foram alterados; aqueles que devem ser enviados são compactados.

O grupo de trabalho IETF para HTTPbis lançou o rascunho do HTTP / 2 . SPDY (draft-mbelshe-httpbis-spdy-00) foi escolhido como ponto de partida.

Versões de protocolo

SPDY é um protocolo com versão. Em seus quadros de controle existem 15 bits dedicados para indicar a versão do protocolo da sessão.

  • Versão 1: a versão 1 do protocolo SPDY não é mais utilizada.
  • Versão 2: em breve será descontinuada. Nginx oferece suporte a SPDY / 2 em versões anteriores a 1.5.10. O Firefox 28 e as versões recentes do Chrome abandonam o suporte para ele. OpenLiteSpeed ​​1.1 e superior suportam SPDY / 2.
  • Versão 3: SPDY v3 introduziu suporte para controle de fluxo, atualizou o dicionário de compressão e removeu o espaço desperdiçado de certos quadros, junto com outras pequenas correções de bugs. O Firefox suporta SPDY v3 no Firefox 15. OpenLiteSpeed ​​1.1 e superior suportam SPDY / 3.
  • Versão 3.1: SPDY v3.1 introduziu suporte para controle de fluxo de camada de sessão e removeu o quadro CREDENCIAIS (e códigos de erro associados). O Firefox 27 adicionou suporte a SPDY 3.1. OpenLiteSpeed ​​1.2.7 apresenta suporte a SPDY / 3.1. O Nginx 1.5.10 oferece suporte a SPDY / 3.1. F5 BIGIP 11.6 suporta SPDY / 3.1.
  • Versão 4.0: SPDY v4 alpha3 está mais alinhado com o rascunho HTTP / 2; ele tem um novo controle de fluxo de fluxo e códigos de erro unificados com o rascunho HTTP / 2.

Suporte de protocolo

Para uso em HTTPS , o SPDY requer a extensão TLS Next Protocol Negotiation (NPN) ou Application-Layer Protocol Negotiation (ALPN), portanto, o suporte do navegador e do servidor depende da biblioteca HTTPS.

OpenSSL 1.0.1 ou superior introduz NPN. Patches para adicionar suporte a NPN também foram escritos para NSS e TLSLite.

A Security Support Provider Interface (SSPI) da Microsoft não implementou a extensão NPN em sua implementação TLS. Isso impediu a inclusão do SPDY nas versões mais recentes do .NET Framework. Como a especificação SPDY está sendo refinada e espera-se que o HTTP / 2 inclua a implementação do SPDY, pode-se esperar que a Microsoft libere o suporte após a conclusão do HTTP / 2 .

Suporte e uso do cliente (navegador)

  • Google Chrome / Chromium . Sessões SPDY no Chrome podem ser inspecionados através da URI : chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active. Há uma opção de linha de comando para o Google Chrome ( ) que permite uma implementação experimental inicial do WebSocket sobre SPDY. A funcionalidade do protocolo SPDY pode ser (des) ativada alternando a configuração "Habilitar SPDY / 4" na página local . Espera-se que o Chromium remova o suporte para SPDY e Next Protocol Negotiation no início de 2016, em favor de HTTP / 2 e ALPN . A partir da versão 40.x em fevereiro de 2015, o Chrome já abandonou o suporte para SPDY / 3 e só oferece suporte para SPDY / 3.1 daqui para frente. Isso fez com que os sites do Apache ficassem sem suporte SPDY quando visitados a partir do Google Chrome.--enable-websocket-over-spdychrome://flags
  • O Firefox suporta SPDY 2 a partir da versão 11 e está habilitado por padrão desde a 13 e posterior. (Também SeaMonkey versão 2.8+.) A funcionalidade do protocolo SPDY pode ser (des) ativada alternando a network.http.spdy.enabledvariável em about:config. O Firefox 15 adicionou suporte para SPDY 3. O Firefox 27 adicionou suporte para SPDY 3.1. O Firefox 28 removeu o suporte ao SPDY 2. about:networking(ou o complemento do indicador HTTP / 2 e SPDY) mostra se um site usa SPDY.
  • O navegador Opera adicionou suporte para SPDY a partir da versão 12.10.
  • O Internet Explorer 11 adicionou suporte para SPDY versão 3, mas não para a versão do Windows 7. Um problema experimentado por alguns usuários do Windows 8.1 e Internet Explorer 11 é que no carregamento inicial, o Google diz "Página não encontrada", mas ao recarregar, está tudo bem. Uma correção para isso é desativar o SPDY / 3 em Opções da Internet> Avançado. Após a versão 11, o IE deixará de ter suporte ao SPDY, pois adotará o HTTP / 2 .
  • O navegador Silk da Amazon para Kindle Fire usa o protocolo SPDY para se comunicar com seu serviço EC2 para renderização de páginas da web.
  • Safari 8 e aplicativos de terceiros no OS X 10.10 e iOS 8 adicionam suporte para SPDY 2, 3 e 3.1.

Suporte e uso do servidor

Em maio de 2021, aproximadamente 0,1% de todos os sites oferecem suporte a SPDY, em parte devido à transição para HTTP / 2 . Em 2016, NGINX e Apache foram os principais fornecedores de tráfego SPDY. Em 2015, o NGINX 1.9.5 abandonou o suporte SPDY em favor do HTTP / 2.

Alguns serviços do Google (por exemplo , Pesquisa do Google , Gmail e outros serviços habilitados para SSL ) usam SPDY quando disponível. Os anúncios do Google também são veiculados em servidores habilitados para SPDY.

Uma breve história do suporte SPDY entre os principais jogadores da web:

  • Em novembro de 2009, o Google anunciou o SPDY como um projeto interno para aumentar a velocidade da web.
  • Em setembro de 2010, o Google lançou o SPDY no Chrome 6 em todas as plataformas.
  • Em janeiro de 2011, o Google implantou o SPDY em todos os serviços do Google.
  • Em março de 2012, o Twitter habilitou o SPDY em seus servidores, na época o segundo maior site conhecido a implantar o SPDY.
  • Em março de 2012, o Jetty Web Server de código aberto anunciou suporte para SPDY na versão 7.6.2 e 8.1.2, enquanto outros projetos de código aberto estavam trabalhando na implementação de suporte para SPDY, incluindo Node.js , Apache (mod_spdy), curl e Nginx .
  • Em abril de 2012, o Google começou a fornecer pacotes SPDY para servidores Apache, o que levou alguns sites menores a fornecer suporte SPDY.
  • Em maio de 2012, a F5 Networks anunciou suporte para SPDY em seus controladores de entrega de aplicativos BIG-IP.
  • Em junho de 2012, o servidor da web de código aberto Nginx anunciou o suporte para SPDY.
  • Em julho de 2012, o Facebook anunciou planos de implementação para o SPDY. Em março de 2013, o SPDY foi implementado por alguns de seus servidores web públicos.
  • Em agosto de 2012, o WordPress.com anunciou suporte para SPDY (usando Nginx) em todos os seus blogs hospedados.
  • Em junho de 2013, a LiteSpeed ​​Technologies anunciou o suporte para SPDY / 2 e SPDY / 3 no OpenLiteSpeed, seu servidor HTTP de código aberto. O suporte para SPDY / 3.1 foi anunciado em novembro de 2013.
  • Em janeiro de 2014, a Synology anunciou que o SPDY estava incluído no novo DSM 5.0.
  • Em fevereiro de 2014, CloudFlare usando nginx anunciou suporte automático para SPDY v3.1 para todos os clientes com certificados SSL / TLS.
  • Em maio de 2014, MaxCDN usando nginx anunciou suporte para SPDY v3.1 por meio das configurações de Pull Zone dos clientes e sua API.
  • Em outubro de 2014, o Yahoo mostra apoio ao SPDY na página inicial do Yahoo - www.yahoo.com
  • Em setembro de 2015, a versão mais recente do servidor da web Nginx abandonou o suporte SPDY em favor do HTTP / 2
  • Em maio de 2016, a CloudFlare lança patches para o servidor web Nginx, os patches suportam HTTP / 2 e SPDY simultaneamente.

De acordo com a W3Techs, em maio de 2021, a maioria dos sites habilitados para SPDY usam o nginx, com o servidor da Web LiteSpeed ​​vindo em segundo lugar.

Veja também

Referências

links externos