Questão de Redes de Computadores — HTTP — CESPE / CEBRASPE 2024
- Código
- ce403998
- Banca
- CESPE / CEBRASPE
- Órgão
- BACEN
- Ano
- 2024
- Cargo
- Ana ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ❌ ERRADO. A afirmativa inverte a realidade dos dois protocolos: as conexões persistentes (keep-alive) foram introduzidas no HTTP/1.1, e não no HTTP/2; e é o HTTP/2 que permite o atendimento simultâneo de várias solicitações, por meio da multiplexação de streams em uma única conexão TCP. O HTTP/1.1, por sua vez, atende solicitações em sequência (uma após a outra), mesmo com conexão persistente.
O HTTP é um protocolo de aplicação que define como clientes e servidores trocam mensagens de requisição e resposta na Web. Ao longo de sua evolução, uma das principais mudanças foi a forma de gerenciar a conexão TCP subjacente. No HTTP/0.9 e no HTTP/1.0, cada requisição abria uma nova conexão TCP, que era encerrada após a resposta — o chamado modelo não persistente. Isso gerava um overhead enorme: para carregar uma página com várias imagens, o navegador precisava estabelecer uma conexão TCP para cada objeto, repetindo o handshake de três vias a cada vez.
O HTTP/1.1 (RFC 2616, de 1999) introduziu as conexões persistentes (keep-alive): uma única conexão TCP poderia ser reutilizada para múltiplas requisições, reduzindo a latência e o overhead. No entanto, mesmo com a conexão persistente, o HTTP/1.1 atende as requisições de forma sequencial — uma requisição por vez, aguardando a resposta antes de enviar a próxima (a menos que se use pipelining, que ainda assim exige respostas em ordem). O texto de apoio confirma: "No HTTP/1.1, um cliente abre uma conexão TCP com um servidor, envia uma solicitação como texto, espera uma resposta e, em muitos casos, fecha a conexão em seguida."
O HTTP/2 (RFC 7540, de 2015) foi criado para melhorar o desempenho, e uma de suas principais inovações é a multiplexação: várias requisições e respostas podem trafegar simultaneamente em uma única conexão TCP, divididas em streams independentes. Isso elimina o bloqueio de cabeçalho (head-of-line blocking) do HTTP/1.1 e permite que o servidor envie respostas fora de ordem. O texto de apoio lista entre os objetivos do HTTP/2: "Melhorar o desempenho com multiplexação, pipelining, compactação, etc."
Portanto, a afirmativa está duplamente errada: atribui ao HTTP/2 as conexões persistentes (que são do HTTP/1.1) e ao HTTP/1 as solicitações simultâneas (que são do HTTP/2). A banca inverteu os papéis de cada versão — uma pegadinha clássica de troca de características.
A banca adora inverter as inovações de cada versão do HTTP. Aqui, ela atribuiu ao HTTP/2 as conexões persistentes (que são do HTTP/1.1) e ao HTTP/1 as solicitações simultâneas (que são do HTTP/2). Lembre-se: HTTP/1.1 = persistente + sequencial; HTTP/2 = multiplexado + simultâneo. Com treino, você enxerga essas trocas de longe 💪
Característica | HTTP/1.1 | HTTP/2 |
|---|---|---|
Conexão persistente (keep-alive) | Sim (introduzida nesta versão) | Sim (herdada) |
Atendimento de solicitações | Sequencial (uma por vez) | Simultâneo (multiplexação de streams) |
Inovação principal | Conexões persistentes | Multiplexação, compactação de cabeçalho |
A afirmativa está incorreta porque inverte as características dos dois protocolos. As conexões persistentes foram introduzidas no HTTP/1.1, não no HTTP/2. E é o HTTP/2 que permite o atendimento simultâneo de várias solicitações, por meio da multiplexação de streams em uma única conexão TCP. O HTTP/1.1, mesmo com conexão persistente, atende as solicitações de forma sequencial (uma após a outra). O texto de apoio confirma que o HTTP/1.1 "envia uma solicitação como texto, espera uma resposta" e que o HTTP/2 tem como objetivo "melhorar o desempenho com multiplexação".
Gabarito: ❌ ERRADO.
Link permanente: /questoes/ce403998