{"id":52181,"date":"2019-11-02T00:00:00","date_gmt":"2019-11-01T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/http-3-razrushenie-osnov-i-divnyj-novyj-mir"},"modified":"2020-02-18T13:59:51","modified_gmt":"2020-02-18T10:59:51","slug":"http-3-razrushenie-osnov-i-divnyj-novyj-mir","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/http-3-razrushenie-osnov-i-divnyj-novyj-mir","title":{"rendered":"HTTP\/3: a destrui\u00e7\u00e3o de fundamentos e um novo mundo maravilhoso","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>H\u00e1 mais de 20 anos, observamos p\u00e1ginas da web pelo protocolo HTTP. A maioria dos usu\u00e1rios nem sequer se pergunta o que isso significa e como funciona. Outros sabem que sob o HTTP est\u00e1 o TLS, e abaixo dele est\u00e1 o TCP, sob o qual est\u00e1 o IP, e assim por diante. E h\u00e1 aqueles \u2013 hereges \u2013 que acreditam que o TCP \u00e9 coisa do passado, desejando algo mais r\u00e1pido, confi\u00e1vel e seguro. Mas em suas tentativas de inventar um novo protocolo ideal, eles voltaram \u00e0s tecnologias dos anos 80 e est\u00e3o tentando construir seu novo mundo maravilhoso sobre elas.<br \/>\n<img decoding=\"async\" alt=\"HTTP\/3: a destrui\u00e7\u00e3o de fundamentos e um novo mundo maravilhoso\" src=\"\/wp-content\/uploads\/2019\/11\/869bd86cc0b47c6c42f315cf20640018.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Um pouco de hist\u00f3ria: HTTP\/1.1<\/h2>\n<p>\nEm 1997, o protocolo de troca de informa\u00e7\u00f5es textuais HTTP vers\u00e3o 1.1 obteve seu RFC. Naquela \u00e9poca, o protocolo j\u00e1 era utilizado por navegadores h\u00e1 v\u00e1rios anos, e o novo padr\u00e3o durou mais quinze. O protocolo funcionava apenas no princ\u00edpio de pedido-resposta e era destinado, principalmente, \u00e0 transfer\u00eancia de informa\u00e7\u00f5es textuais.<\/p>\n<p>O HTTP foi projetado para funcionar sobre o protocolo TCP, que garante a entrega confi\u00e1vel de pacotes ao destinat\u00e1rio. O funcionamento do TCP baseia-se no estabelecimento e manuten\u00e7\u00e3o de uma conex\u00e3o confi\u00e1vel entre os pontos finais e na divis\u00e3o do tr\u00e1fego em segmentos. Os segmentos possuem seu pr\u00f3prio n\u00famero sequencial e uma soma de verifica\u00e7\u00e3o. Se algum dos segmentos n\u00e3o chegar ou chegar com uma soma de verifica\u00e7\u00e3o incorreta, a transmiss\u00e3o ser\u00e1 interrompida at\u00e9 que o segmento perdido seja recuperado.<\/p>\n<p>No HTTP\/1.0, a conex\u00e3o TCP era fechada ap\u00f3s cada pedido. Isso era extremamente dispendioso, pois o estabelecimento de uma conex\u00e3o TCP (3-Way-Handshake) \u00e9 um processo demorado. No HTTP\/1.1, foi apresentado o mecanismo keep-alive, que permite reutilizar uma \u00fanica conex\u00e3o para v\u00e1rios pedidos. No entanto, como isso pode facilmente se tornar um gargalo, em diferentes implementa\u00e7\u00f5es do HTTP\/1.1 \u00e9 permitido abrir v\u00e1rias conex\u00f5es TCP para um \u00fanico host. Por exemplo, no Chrome e nas vers\u00f5es mais recentes do Firefox, s\u00e3o permitidas at\u00e9 seis conex\u00f5es.<br \/>\n<img decoding=\"async\" alt=\"HTTP\/3: a destrui\u00e7\u00e3o de fundamentos e um novo mundo maravilhoso\" src=\"\/wp-content\/uploads\/2019\/11\/b1c131da8e62ace741f3064f2fb96c60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA criptografia tamb\u00e9m deveria ser deixada a outros protocolos, e para isso o protocolo TLS foi utilizado sobre o TCP, que protegia os dados de forma bastante confi\u00e1vel, mas aumentava ainda mais o tempo necess\u00e1rio para estabelecer a conex\u00e3o. No final, o processo de handshake passou a ser assim:<br \/>\n <img decoding=\"async\" alt=\"HTTP\/3: a destrui\u00e7\u00e3o de fundamentos e um novo mundo maravilhoso\" src=\"\/wp-content\/uploads\/2019\/11\/2fdccf56e0ed29444557836fdc65351b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ilustra\u00e7\u00e3o Cloudflare<\/i><\/p>\n<p>Assim, o HTTP\/1.1 tinha uma s\u00e9rie de problemas:<\/p>\n<ul>\n<li>Instala\u00e7\u00e3o de conex\u00e3o lenta.<\/li>\n<li>Os dados s\u00e3o transmitidos em formato de texto, o que significa que a transmiss\u00e3o de imagens, v\u00eddeos e outras informa\u00e7\u00f5es n\u00e3o textuais \u00e9 ineficaz.<\/li>\n<li>Uma conex\u00e3o TCP \u00e9 usada para uma \u00fanica solicita\u00e7\u00e3o, o que significa que as demais solicita\u00e7\u00f5es devem encontrar outra conex\u00e3o ou esperar que a conex\u00e3o atual a libere.<\/li>\n<li>Apenas o modelo pull \u00e9 suportado. O padr\u00e3o n\u00e3o menciona nada sobre server-push.<\/li>\n<li>Os cabe\u00e7alhos s\u00e3o transmitidos em texto.<\/li>\n<\/ul>\n<p>\nSe o server-push \u00e9 razoavelmente implementado atrav\u00e9s do protocolo WebSocket, as outras quest\u00f5es precisaram ser resolvidas de maneira mais radical.<\/p>\n<h2>Um pouco de modernidade: HTTP\/2<\/h2>\n<p>\nEm 2012, nas profundezas do Google, come\u00e7ou o trabalho no protocolo SPDY (pronuncia-se 'spidi'). O protocolo foi criado para resolver os principais problemas do HTTP\/1.1 e ao mesmo tempo deveria manter a compatibilidade retroativa. Em 2015, o grupo de trabalho IETF apresentou a especifica\u00e7\u00e3o HTTP\/2, baseada no protocolo SPDY. Aqui est\u00e3o as diferen\u00e7as no HTTP\/2:<\/p>\n<ul>\n<li>Serializa\u00e7\u00e3o bin\u00e1ria.<\/li>\n<li>Multiplexa\u00e7\u00e3o de v\u00e1rias solicita\u00e7\u00f5es HTTP em uma \u00fanica conex\u00e3o TCP.<\/li>\n<li>Server-push embutido (sem WebSocket).<\/li>\n<\/ul>\n<p>\nO protocolo foi um grande avan\u00e7o. Ele melhorou significativamente <noindex><a rel=\"nofollow\" href=\"https:\/\/http2.akamai.com\/demo\">em velocidade em rela\u00e7\u00e3o \u00e0 primeira vers\u00e3o<\/a><\/noindex> e n\u00e3o requer a cria\u00e7\u00e3o de v\u00e1rias conex\u00f5es TCP: todas as solicita\u00e7\u00f5es para um \u00fanico host s\u00e3o multiplexadas em uma. Ou seja, em uma \u00fanica conex\u00e3o existem v\u00e1rios chamados streams, cada um com seu ID. Como b\u00f4nus, vem o server-push embutido.<\/p>\n<p>No entanto, a multiplexa\u00e7\u00e3o leva a outro problema crucial. Imagine que estamos executando 5 solicita\u00e7\u00f5es de forma ass\u00edncrona a um \u00fanico servidor. Ao usar HTTP\/2, todas essas solicita\u00e7\u00f5es ser\u00e3o executadas dentro de uma \u00fanica conex\u00e3o TCP, o que significa que, se um dos segmentos de qualquer solicita\u00e7\u00e3o se perder ou chegar de forma incorreta, a transmiss\u00e3o de todas as solicita\u00e7\u00f5es e respostas ser\u00e1 interrompida at\u00e9 que o segmento perdido seja recuperado. \u00c9 evidente que quanto pior a qualidade da conex\u00e3o, mais lento o HTTP\/2 funcionar\u00e1. <noindex><a rel=\"nofollow\" href=\"https:\/\/http3-explained.haxx.se\/en\/why-tcphol.html\">De acordo com Daniel Steinberg,<\/a><\/noindex>em condi\u00e7\u00f5es onde os pacotes perdidos representam 2% do total, o HTTP\/1.1 se sai melhor no navegador do que o HTTP\/2, pois abre 6 conex\u00f5es, em vez de uma.<\/p>\n<p>Esse problema \u00e9 chamado de 'head-of-line blocking' e, infelizmente, n\u00e3o parece poss\u00edvel resolv\u00ea-lo ao utilizar TCP.<br \/>\n<img decoding=\"async\" alt=\"HTTP\/3: a destrui\u00e7\u00e3o de fundamentos e um novo mundo maravilhoso\" src=\"\/wp-content\/uploads\/2019\/11\/234a6dc218a9acf8d2212fbdf28f2188.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ilustra\u00e7\u00e3o de Daniel Steinberg<\/i><\/p>\n<p>Como resultado, os desenvolvedores do padr\u00e3o HTTP\/2 fizeram um enorme trabalho e realizaram praticamente tudo o que poderia ser feito no n\u00edvel de aplica\u00e7\u00e3o do modelo OSI. Chegou a hora de descer para o n\u00edvel de transporte e inventar um novo protocolo de transporte.<\/p>\n<h2>Precisamos de um novo protocolo: UDP vs TCP<\/h2>\n<p>\nFicou bastante claro que implementar um protocolo de transporte totalmente novo \u00e9 uma tarefa imposs\u00edvel nas condi\u00e7\u00f5es atuais. A quest\u00e3o \u00e9 que os dispositivos ou middle-boxes (roteadores, firewalls, servidores NAT...) conhecem o n\u00edvel de transporte, e ensin\u00e1-los algo novo \u00e9 uma tarefa extremamente dif\u00edcil. Al\u00e9m disso, o suporte a protocolos de transporte est\u00e1 embutido no n\u00facleo dos sistemas operacionais, e esses n\u00facleos tamb\u00e9m n\u00e3o mudam com frequ\u00eancia.<\/p>\n<p>E a\u00ed, poder\u00edamos simplesmente desistir e dizer: \"Claro, n\u00f3s iremos inventar o novo HTTP\/3 com pref\u00e1cio e cortes\u00e3s, mas sua implementa\u00e7\u00e3o levar\u00e1 de 10 a 15 anos (aproximadamente esse tempo ser\u00e1 necess\u00e1rio para substituir a maioria dos dispositivos)\", mas h\u00e1 outra op\u00e7\u00e3o, n\u00e3o t\u00e3o \u00f3bvia: utilizar o protocolo UDP. Sim, aquele mesmo protocolo com o qual troc\u00e1vamos arquivos em rede local no final dos anos 90 e in\u00edcio dos anos 2000. Quase todos os dispositivos atuais conseguem trabalhar com ele.<\/p>\n<p>Quais s\u00e3o as vantagens do UDP em compara\u00e7\u00e3o ao TCP? Em primeiro lugar, n\u00e3o temos uma sess\u00e3o de n\u00edvel de transporte, da qual o hardware tem conhecimento. Isso nos permite definir a sess\u00e3o nos pontos finais e resolver os conflitos que surgirem l\u00e1 mesmo. Ou seja, n\u00e3o estamos limitados a uma ou v\u00e1rias sess\u00f5es (como no TCP), mas podemos criar tantas quantas precisarmos. Em segundo lugar, a transmiss\u00e3o de dados via UDP ocorre mais rapidamente do que via TCP. Assim, na teoria, podemos superar o atual teto de velocidade atingido no HTTP\/2. <\/p>\n<p>No entanto, o UDP n\u00e3o garante a confiabilidade da transmiss\u00e3o de dados. Na pr\u00e1tica, apenas enviamos pacotes, esperando que sejam recebidos do outro lado. N\u00e3o foi recebido? Bem, n\u00e3o tivemos sorte\u2026 Isso foi suficiente para transmitir v\u00eddeos para adultos, mas para coisas mais s\u00e9rias \u00e9 necess\u00e1rio confiar, e isso significa que teremos que adicionar algo mais sobre o UDP.<\/p>\n<p>Assim como no caso do HTTP\/2, o trabalho na cria\u00e7\u00e3o de um novo protocolo come\u00e7ou no Google em 2012, ou seja, aproximadamente ao mesmo tempo em que o trabalho no SPDY come\u00e7ava. Em 2013, Jim Roskind apresentou ao p\u00fablico em geral <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/document\/d\/1RNHkx_VvKWyWg6Lr8SZ-saqsQx7rFV-ev2jRFUoVD34\/edit\">o protocolo QUIC (Quick UDP Internet Connections)<\/a><\/noindex>, e em 2015 foi submetido um Internet Draft para a padroniza\u00e7\u00e3o no IETF. Naquela \u00e9poca, o protocolo desenvolvido por Roskind no Google j\u00e1 diferia significativamente da vers\u00e3o proposta para padroniza\u00e7\u00e3o, ent\u00e3o a vers\u00e3o do Google passou a ser chamada de gQUIC.<\/p>\n<h4>O que \u00e9 QUIC<\/h4>\n<p>\nPrimeiramente, como j\u00e1 mencionado, \u00e9 um encapsulamento sobre o UDP. Sobre o UDP \u00e9 estabelecida uma conex\u00e3o QUIC, onde, semelhante ao HTTP\/2, podem existir m\u00faltiplos fluxos. Esses fluxos existem apenas nos pontos finais e s\u00e3o gerenciados de forma independente. Se um pacote se perder em um fluxo, os outros n\u00e3o ser\u00e3o afetados.<br \/>\n<img decoding=\"async\" alt=\"HTTP\/3: a destrui\u00e7\u00e3o de fundamentos e um novo mundo maravilhoso\" src=\"\/wp-content\/uploads\/2019\/11\/0a64aa26d9b8216db56d389fa48578a5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ilustra\u00e7\u00e3o de Daniel Steinberg<\/i><\/p>\n<p>Em segundo lugar, a criptografia agora \u00e9 implementada n\u00e3o como um n\u00edvel separado, mas inclu\u00edda no protocolo. Isso permite estabelecer conex\u00f5es e trocar chaves p\u00fablicas em uma \u00fanica negocia\u00e7\u00e3o, al\u00e9m de possibilitar o uso do mecanismo inteligente de 0-RTT handshake, evitando assim atrasos na negocia\u00e7\u00e3o. Al\u00e9m disso, agora \u00e9 poss\u00edvel criptografar pacotes de dados individuais. Isso permite que n\u00e3o se aguarde a conclus\u00e3o da recep\u00e7\u00e3o de dados de um fluxo e que os pacotes recebidos sejam descriptografados de forma independente. Esse modo de opera\u00e7\u00e3o era completamente imposs\u00edvel no TCP, pois o TLS e o TCP operavam de forma independente, e o TLS n\u00e3o sabia como os dados seriam fragmentados pelo TCP. Portanto, n\u00e3o conseguia preparar seus segmentos de forma que corressem um a um nos segmentos TCP e pudessem ser descriptografados de forma independente. Todas essas melhorias permitem que o QUIC reduza a lat\u00eancia em compara\u00e7\u00e3o ao TCP.<br \/>\n<img decoding=\"async\" alt=\"HTTP\/3: a destrui\u00e7\u00e3o de fundamentos e um novo mundo maravilhoso\" src=\"\/wp-content\/uploads\/2019\/11\/cb3c522636f7a052a0f5988fe7ea3a65.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEm terceiro lugar, o conceito de fluxos leves permite desvincular a conex\u00e3o do endere\u00e7o IP do cliente. Isso \u00e9 importante, por exemplo, quando o cliente troca de um ponto de acesso Wi-Fi para outro, mudando seu IP. Nesse caso, ao usar TCP, ocorre um longo processo onde as conex\u00f5es TCP existentes se encerram por timeout e novas conex\u00f5es s\u00e3o estabelecidas com o novo IP. No caso do QUIC, o cliente simplesmente continua enviando pacotes ao servidor a partir do novo IP enquanto mant\u00e9m o antigo ID do fluxo. Como o ID do fluxo agora \u00e9 \u00fanico e n\u00e3o \u00e9 reutilizado, o servidor entende que o cliente mudou de IP, retransmite os pacotes perdidos e continua a comunica\u00e7\u00e3o no novo endere\u00e7o.<\/p>\n<p>Em quarto lugar, o QUIC \u00e9 implementado no n\u00edvel da aplica\u00e7\u00e3o, e n\u00e3o do sistema operacional. Isso, por um lado, permite que as mudan\u00e7as no protocolo sejam realizadas mais rapidamente, uma vez que para obter uma atualiza\u00e7\u00e3o, basta atualizar a biblioteca, ao inv\u00e9s de esperar por uma nova vers\u00e3o do SO. Por outro lado, isso leva a um grande aumento no consumo de CPU.<\/p>\n<p>E por \u00faltimo, os cabe\u00e7alhos. A compress\u00e3o de cabe\u00e7alhos \u00e9 um dos pontos que diferem entre QUIC e gQUIC. N\u00e3o vejo sentido em dedicar muito tempo a isso, apenas direi que na vers\u00e3o submetida \u00e0 padroniza\u00e7\u00e3o, a compress\u00e3o de cabe\u00e7alhos foi feita para ser o mais semelhante poss\u00edvel \u00e0 compress\u00e3o de cabe\u00e7alhos no HTTP\/2. Pode-se ler mais <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/the-road-to-quic\/\">aqui<\/a><\/noindex>.<\/p>\n<h4>Qu\u00e3o mais r\u00e1pido \u00e9?<\/h4>\n<p>\nEssa \u00e9 uma pergunta complexa. O fato \u00e9 que, como ainda n\u00e3o temos um padr\u00e3o, n\u00e3o h\u00e1 muito o que medir. Provavelmente, os \u00fanicos dados estat\u00edsticos que temos s\u00e3o as estat\u00edsticas do Google, que utiliza gQUIC desde 2013 e em 2016 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ietf.org\/proceedings\/96\/slides\/slides-96-quic-3.pdf\">reportou ao IETF<\/a><\/noindex>, que cerca de 90% do tr\u00e1fego enviado para seus servidores a partir do navegador Chrome agora utiliza QUIC. Nessa mesma apresenta\u00e7\u00e3o, eles relatam que atrav\u00e9s do gQUIC, as p\u00e1ginas carregam aproximadamente 5% mais r\u00e1pido, e em v\u00eddeo streaming, h\u00e1 30% menos travamentos em compara\u00e7\u00e3o com TCP. <\/p>\n<p>Em 2017, um grupo de pesquisadores liderado por Arash Molavi Kakhki publicou <noindex><a rel=\"nofollow\" href=\"https:\/\/conferences.sigcomm.org\/imc\/2017\/papers\/imc17-final39.pdf\">, que serviu de base para o artigo atual. Agrade\u00e7o pela aten\u00e7\u00e3o.<\/a><\/noindex> um estudo sobre o desempenho do gQUIC em compara\u00e7\u00e3o com o TCP. <br \/>\nA pesquisa revelou v\u00e1rias fraquezas do gQUIC, como a instabilidade ao misturar pacotes de rede, a gan\u00e2ncia (unfairness) em rela\u00e7\u00e3o \u00e0 largura de banda do canal e a transmiss\u00e3o mais lenta de objetos pequenos (at\u00e9 10 kb). Este \u00faltimo, no entanto, pode ser compensado pelo uso do 0-RTT. Em todos os outros casos analisados, o gQUIC mostrou aumento de velocidade em compara\u00e7\u00e3o com o TCP. \u00c9 dif\u00edcil falar sobre n\u00fameros exatos aqui. \u00c9 melhor ler <noindex><a rel=\"nofollow\" href=\"https:\/\/conferences.sigcomm.org\/imc\/2017\/papers\/imc17-final39.pdf\">o pr\u00f3prio estudo<\/a><\/noindex> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.apnic.net\/2018\/01\/29\/measuring-quic-vs-tcp-mobile-desktop\/\">um post curto<\/a><\/noindex>.<\/p>\n<p>Aqui deve-se mencionar que esses dados dizem respeito especificamente ao gQUIC, e n\u00e3o s\u00e3o atuais para o padr\u00e3o em desenvolvimento. O que ser\u00e1 para QUIC: ainda \u00e9 um mist\u00e9rio, mas h\u00e1 esperan\u00e7a de que as fraquezas identificadas no gQUIC sejam levadas em conta e corrigidas.<\/p>\n<h2>Um pouco sobre o futuro: e quanto ao HTTP\/3?<\/h2>\n<p>\nAqui tudo est\u00e1 cristalino: a API n\u00e3o vai mudar. Tudo permanecer\u00e1 exatamente como era no HTTP\/2. E se a API permanece a mesma, a transi\u00e7\u00e3o para o HTTP\/3 deve ser feita utilizando uma vers\u00e3o atualizada da biblioteca no backend, que suporte o transporte via QUIC. No entanto, ainda teremos que manter o fallback para vers\u00f5es antigas do HTTP por um bom tempo, pois a internet atualmente n\u00e3o est\u00e1 pronta para uma transi\u00e7\u00e3o completa para o UDP.<\/p>\n<h4>Quem j\u00e1 suporta<\/h4>\n<p>\nAqui <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quicwg\/base-drafts\/wiki\/Implementations\">uma lista<\/a><\/noindex> implementa\u00e7\u00f5es existentes do QUIC. Apesar da falta de um padr\u00e3o, a lista \u00e9 boa. <\/p>\n<p>Nenhum navegador atualmente suporta QUIC na vers\u00e3o est\u00e1vel. Recentemente, houve informa\u00e7\u00f5es de que o Chrome ativou o suporte ao HTTP\/3, mas apenas na vers\u00e3o Canary. <\/p>\n<p>No backend, apenas o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/caddyserver\/caddy\">Caddy<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/http3-the-past-present-and-future\/\">Cloudflare<\/a><\/noindex>suporta HTTP\/3, mas ainda de forma experimental. O NGINX, no final da primavera de 2019, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/nginx-1-16-1-17-released\/\">foi anunciado<\/a><\/noindex>anunciou que estava trabalhando no suporte ao HTTP\/3, mas ainda n\u00e3o terminou.<\/p>\n<h4>Quais s\u00e3o os problemas<\/h4>\n<p>\nVivemos em um mundo real, onde nenhuma grande tecnologia pode avan\u00e7ar para as massas sem encontrar resist\u00eancia, e o QUIC n\u00e3o \u00e9 uma exce\u00e7\u00e3o.<\/p>\n<p>O mais importante \u00e9 que precisamos explicar ao navegador que \"https:\/\/\" agora n\u00e3o \u00e9 garantido que leva \u00e0 porta TCP 443. Pode at\u00e9 n\u00e3o haver TCP. Para isso, utiliza-se o cabe\u00e7alho Alt-Svc. Ele permite informar ao navegador que este site tamb\u00e9m est\u00e1 dispon\u00edvel em um determinado protocolo em um determinado endere\u00e7o. Em teoria, isso deve funcionar perfeitamente, mas na pr\u00e1tica, nos deparamos com o fato de que o UDP pode, por exemplo, estar bloqueado no firewall para evitar ataques DDoS.<\/p>\n<p>Mas mesmo que o UDP n\u00e3o esteja bloqueado, o cliente pode estar atr\u00e1s de um roteador NAT, que est\u00e1 configurado para manter a sess\u00e3o TCP pelo endere\u00e7o IP, e como estamos usando UDP, que n\u00e3o possui uma sess\u00e3o de hardware, o NAT n\u00e3o manter\u00e1 a conex\u00e3o, e a sess\u00e3o QUIC <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/the-road-to-quic\/\">continuar\u00e1 caindo constantemente.<\/a><\/noindex>. <\/p>\n<p>Todos esses problemas est\u00e3o relacionados ao fato de que o UDP n\u00e3o foi utilizado anteriormente para a transmiss\u00e3o de conte\u00fado na internet, e os fabricantes de hardware n\u00e3o puderam prever que isso poderia acontecer um dia. Da mesma forma, os administradores ainda n\u00e3o entendem muito bem como configurar corretamente suas redes para trabalhar com QUIC. Essa situa\u00e7\u00e3o mudar\u00e1 lentamente e, de qualquer forma, tais mudan\u00e7as levar\u00e3o menos tempo do que a implementa\u00e7\u00e3o de um novo protocolo de transporte. <\/p>\n<p>Al\u00e9m disso, como j\u00e1 foi mencionado, o QUIC aumenta significativamente o uso da CPU. Daniel Stenberg <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=idViw4anA6E\">avaliou<\/a><\/noindex> um aumento na CPU de at\u00e9 tr\u00eas vezes.<\/p>\n<h4>Quando o HTTP\/3 chegar<\/h4>\n<p>\nPadr\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/datatracker.ietf.org\/wg\/quic\/about\/\">querem adotar<\/a><\/noindex> At\u00e9 maio de 2020, mas, considerando que os documentos programados para julho de 2019 ainda est\u00e3o pendentes, pode-se dizer que a data provavelmente ser\u00e1 adiada.<\/p>\n<p>O Google utiliza sua implementa\u00e7\u00e3o do gQUIC desde 2013. Se analisarmos a solicita\u00e7\u00e3o HTTP que \u00e9 enviada ao mecanismo de busca do Google, podemos ver o seguinte:<br \/>\n<img decoding=\"async\" alt=\"HTTP\/3: a destrui\u00e7\u00e3o de fundamentos e um novo mundo maravilhoso\" src=\"\/wp-content\/uploads\/2019\/11\/af422268eb85b488c7be1b70c6d33fad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Como resultado, obtemos um servi\u00e7o de \"monitoramento como servi\u00e7o\", automatizado na linha de produ\u00e7\u00e3o de integra\u00e7\u00e3o cont\u00ednua. O desenvolvedor ou testador precisa apenas definir a lista de m\u00e9tricas em um arquivo JSON, e tudo o mais acontece automaticamente. Obtemos um controle de qualidade transparente dos lan\u00e7amentos: todas as notifica\u00e7\u00f5es sobre desempenho, consumo de recursos ou regress\u00f5es arquitet\u00f4nicas.<\/h2>\n<p>\nAtualmente, o QUIC parece uma tecnologia bastante crua, mas com grande potencial. Considerando que, nos \u00faltimos 20 anos, todas as otimiza\u00e7\u00f5es de protocolos de n\u00edvel de transporte se concentraram principalmente no TCP, o QUIC, que geralmente ganha em desempenho, j\u00e1 parece bastante promissor. <\/p>\n<p>No entanto, ainda existem problemas n\u00e3o resolvidos que precisar\u00e3o ser enfrentados nos pr\u00f3ximos anos. O processo pode se arrastar devido \u00e0 presen\u00e7a de hardware que ningu\u00e9m gosta de atualizar, mas todas as quest\u00f5es parecem ser resolv\u00edveis e, cedo ou tarde, todos n\u00f3s teremos HTTP\/3. <\/p>\n<p>O futuro est\u00e1 chegando rapidamente!<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/473930\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 20 \u043b\u0435\u0442 \u043c\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 HTTP. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438 \u043a\u0430\u043a \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0414\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u043f\u043e\u0434 HTTP \u0435\u0441\u0442\u044c TLS, \u0430 \u043f\u043e\u0434 \u043d\u0438\u043c TCP, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c IP \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0410 \u0442\u0440\u0435\u0442\u044c\u0438 \u2013 \u0435\u0440\u0435\u0442\u0438\u043a\u0438 \u2013 \u0441\u0447\u0438\u0442\u0430\u044e\u0442, \u0447\u0442\u043e TCP \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0432\u0435\u043a, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-52181","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 20 \u043b\u0435\u0442 \u043c\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 HTTP. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438 \u043a\u0430\u043a \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/http-3-razrushenie-osnov-i-divnyj-novyj-mir\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47HTTP\/3: \u0440\u0430\u0437\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432 \u0438 \u0434\u0438\u0432\u043d\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 \u043c\u0438\u0440 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 20 \u043b\u0435\u0442 \u043c\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 HTTP. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438 \u043a\u0430\u043a \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/http-3-razrushenie-osnov-i-divnyj-novyj-mir\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-11-01T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T10:59:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47HTTP\/3: a destrui\u00e7\u00e3o das bases e um mundo novo maravilhoso | ProHoster","description":"J\u00e1 faz mais de 20 anos que acessamos p\u00e1ginas da web pelo protocolo HTTP. A maioria dos usu\u00e1rios nem sequer pensa no que isso significa e como funciona.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/http-3-razrushenie-osnov-i-divnyj-novyj-mir","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47HTTP\/3: \u0440\u0430\u0437\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432 \u0438 \u0434\u0438\u0432\u043d\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 \u043c\u0438\u0440 | ProHoster","og:description":"\u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 20 \u043b\u0435\u0442 \u043c\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 HTTP. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438 \u043a\u0430\u043a \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/http-3-razrushenie-osnov-i-divnyj-novyj-mir","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-11-01T21:00:00+00:00","article:modified_time":"2020-02-18T10:59:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52181","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 02:46:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:48:31","updated":"2026-01-24 02:46:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/52181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=52181"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/52181\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=52181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=52181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=52181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}