Alguém poderia me dar uma breve visão geral das diferenças entre HTTP 1.0 e HTTP 1.1? Passei algum tempo com os dois RFCs, mas não consegui fazer muita diferença entre eles. A Wikipedia diz o seguinte:
HTTP / 1.1 (1997-1999)
Versão Atual; conexões persistentes ativadas por padrão e funcionam bem com proxies. Também oferece suporte ao pipelining de solicitação, permitindo que várias solicitações sejam enviadas ao mesmo tempo, permitindo que o servidor se prepare para a carga de trabalho e potencialmente transfira os recursos solicitados mais rapidamente para o cliente.
Mas isso não significa muito para mim. Sei que esse é um assunto um pouco complicado, por isso não estou esperando uma resposta completa, mas alguém pode me dar uma breve visão geral das diferenças em um nível um pouco mais baixo?
Com isso, quero dizer que estou procurando as informações que eu precisaria saber para implementar um servidor HTTP ou aplicativo. Estou principalmente procurando um empurrão na direção certa, para que eu possa descobrir sozinho.
Respostas:
Suporte de proxy e o campo Host:
O HTTP 1.1 possui um cabeçalho de host necessário por especificação.
O HTTP 1.0 não exige oficialmente um cabeçalho de host, mas não é necessário adicionar um, e muitos aplicativos (proxies) esperam ver o cabeçalho do host, independentemente da versão do protocolo.
Exemplo:
Esse cabeçalho é útil porque permite rotear uma mensagem através de servidores proxy e também porque o servidor da Web pode distinguir entre sites diferentes no mesmo servidor.
Portanto, isso significa que se você tem blahblahlbah.com e helohelohelo.com, ambos apontando para o mesmo IP. Seu servidor da web pode usar o campo Host para distinguir qual site a máquina cliente deseja.
Conexões persistentes:
O HTTP 1.1 também permite que você tenha conexões persistentes, o que significa que você pode ter mais de uma solicitação / resposta na mesma conexão HTTP.
No HTTP 1.0, era necessário abrir uma nova conexão para cada par de solicitação / resposta. E após cada resposta a conexão seria fechada. Isso levou a alguns grandes problemas de eficiência devido ao TCP Slow Start .
Método OPÇÕES:
O HTTP / 1.1 introduz o método OPTIONS. Um cliente HTTP pode usar esse método para determinar as habilidades do servidor HTTP. É usado principalmente para o compartilhamento de recursos entre origens em aplicativos da web.
Armazenamento em cache:
O HTTP 1.0 tinha suporte para armazenamento em cache através do cabeçalho: If-Modified-Since.
O HTTP 1.1 expande muito o suporte ao armazenamento em cache usando algo chamado 'tag de entidade'. Se 2 recursos forem iguais, eles terão as mesmas tags de entidade.
O HTTP 1.1 também adiciona os cabeçalhos condicionais If-Unmodified-Since, If-Match, If-None-Match.
Também há outras adições relacionadas ao cache, como o cabeçalho Cache-Control.
100 Continuar status:
Há um novo código de retorno no HTTP / 1.1 100 Continue. Isso evita que um cliente envie uma solicitação grande quando esse cliente não tem certeza se o servidor pode processar a solicitação ou está autorizado a processar a solicitação. Nesse caso, o cliente envia apenas os cabeçalhos e o servidor informa ao cliente 100 Continue, vá em frente com o corpo.
Muito mais:
fonte
HTTP 1.0 (1994)
HTTP 1.1 (1996-2015)
O HTTP 1.1 é um aprimoramento do HTTP 1.0. A seguir, estão listadas as quatro principais melhorias:
Uso eficiente de endereços IP, permitindo que vários domínios sejam atendidos a partir de um único endereço IP.
Resposta mais rápida, permitindo que um navegador da web envie várias solicitações por uma única conexão persistente.
fonte
Para aplicações triviais (por exemplo, recuperar esporadicamente um valor de temperatura de um termômetro ativado pela Web), o HTTP 1.0 é bom tanto para um cliente quanto para um servidor. Você pode escrever um cliente ou servidor HTTP 1.0 baseado em soquete básico em cerca de 20 linhas de código.
Para cenários mais complicados, o HTTP 1.1 é o caminho a percorrer. Espere um aumento de 3 a 5 vezes no tamanho do código para lidar com os meandros do protocolo HTTP 1.1 mais complexo. A complexidade vem principalmente, porque no HTTP 1.1 você precisará criar, analisar e responder a vários cabeçalhos. Você pode proteger seu aplicativo dessa complexidade solicitando que um cliente use uma biblioteca HTTP ou que um servidor use um servidor de aplicativos da web.
fonte
Um problema importante de compatibilidade é o suporte para conexões persistentes . Recentemente, trabalhei em um servidor que "suportava" o HTTP / 1.1, mas não conseguiu fechar a conexão quando um cliente enviou uma solicitação HTTP / 1.0. Ao escrever um servidor que suporte HTTP / 1.1, verifique se ele também funciona bem com clientes somente HTTP / 1.0.
fonte
Uma das primeiras diferenças que me lembro da cabeça são vários domínios em execução no mesmo servidor, recuperação parcial de recursos, isso permite recuperar e acelerar o download de um recurso (é o que quase todo acelerador de download faz).
Se você deseja desenvolver um aplicativo como um site ou similar, não precisa se preocupar muito com as diferenças, mas deve saber a diferença entre
GET
ePOST
pelo menos verbos.Agora, se você deseja desenvolver um navegador, sim, precisará conhecer o protocolo completo e se está tentando desenvolver um servidor HTTP.
Se você está interessado apenas em conhecer o protocolo HTTP, recomendo que você comece com HTTP / 1.1 em vez de 1.0.
fonte
O HTTP 1.1 é a versão mais recente do Hypertext Transfer Protocol, o protocolo de aplicativo da World Wide Web que roda em cima do conjunto de protocolos TCP / IP da Internet. comparado ao HTTP 1.0, o HTTP 1.1 fornece entrega mais rápida de páginas da Web do que o HTTP original e reduz o tráfego na Web.
Tráfego na Web Exemplo: por exemplo, se você estiver acessando um servidor. Ao mesmo tempo, muitos usuários estão acessando o servidor para obter os dados. Há uma chance de travar o servidor. Este é o tráfego da Web.
fonte
O HTTP 1.1 vem com o cabeçalho do host em sua especificação, enquanto o HTTP 1.0 não possui oficialmente um cabeçalho de host, mas não se recusa a adicioná-lo.
O cabeçalho do host é útil porque permite ao cliente rotear uma mensagem por todo o servidor proxy, e a principal diferença entre as versões 1.0 e 1.1 das HTTP são:
fonte
Comparado com o 1.0, 1.1 reduz o tráfego na web
fonte