O livro "Rede para navegadores de alto desempenho" da Ilya Grigorik responde exatamente isso. Há um capítulo inteiro (7) dedicado às redes móveis. O livro afirma que o problema do alto desempenho está quase sempre associado à latência; geralmente temos muita largura de banda, mas os protocolos atrapalham. Seja o TCP slow start , o Radio Resource Controller (RRC) ou configurações abaixo do ideal. Se você estiver com baixa latência apenas em redes móveis, é assim que elas são projetadas.
Há uma tabela no livro sobre latências típicas:
Tabela 7-2. Taxas de dados e latência para uma conexão móvel ativa
Geração | Taxa de dados | Latência
2G 100–400 Kbit / s | 300–1000 ms
3G 0,5-5 Mbit / s | 100–500 ms
4G 1–50 Mbit / s | <100 ms
Embora muito relevante para a latência, o handshake de três vias da característica TCP ou o início lento não respondem à pergunta, pois afetam igualmente as conexões com fio. O que realmente afeta a latência nas redes móveis é a camada sob IP. Se a camada sob IP tiver uma latência de meio segundo, uma conexão TCP com um servidor levará aproximadamente 1,5 segundos (0,5s * 3), conforme você vê os números se somando rapidamente. Como dito anteriormente, suponha que o celular não esteja ocioso. Se o aparelho estiver ocioso, primeiro será necessário "conectar-se" à rede, o que exige negociar uma reserva de recursos com a torre (simplificada) e leva entre 50-100ms em LTE, até vários segundos em 3G e muito mais em redes anteriores.
Figura 7-12. Latências de fluxo de solicitação LTE
- Latência do plano de controle : custo fixo fixo de latência incorrido nas negociações e transições de estado do RRC: <100 ms para inativo para ativo e <50 ms para inativo para ativo.
- Latência do plano do usuário : custo fixo para cada pacote de aplicativos transferido entre o dispositivo e a torre de rádio: <5 ms.
- Latência da rede principal: custo dependente da operadora para transportar o pacote da torre de rádio para o gateway de pacote: na prática, 30 a 100 ms.
- Latência de roteamento da Internet: custo variável da latência entre o gateway de pacote da operadora e o endereço de destino na Internet pública.
Na prática, a latência de ponta a ponta de muitas redes 4G implantadas tende a estar na faixa de 30 a 100 ms quando o dispositivo está conectado.
Então, você tem uma solicitação (Figura 8-2. Componentes de uma solicitação HTTP "simples"):
- Negociação RRC 50-2500 ms
- Pesquisa de DNS 1 RTT
- Handshake TCP 1 RTT (conexão preexistente) ou 3 RTT (nova conexão)
- TLS handshake 1-2 RTTs
- RTTs de 1 n de solicitação HTTP
E com dados reais:
Tabela 8-1. Sobrecarga de latência de uma única solicitação HTTP
| 3G 4G
Avião de controle | 200–2,500 ms | 50–100 ms
Pesquisa de DNS | 200 ms | 100 ms
Aperto de mão TCP | 200 ms | 100 ms
Aperto de mão TLS | 200–400 ms | 100–200 ms
Solicitação HTTP | 200 ms | 100 ms
Sobrecarga de latência total | 200–3500 ms | 100-600 ms
Além disso, se você tem um aplicativo interativo que deseja executar moderadamente ok em uma rede móvel, experimente desabilitar o algoritmo Nagle (o kernel aguarda a coalescência dos dados em pacotes maiores em vez de enviar vários pacotes menores) e procure maneiras de testá-lo em https://stackoverflow.com/a/17843292/869019 .
Existe a opção de ler o livro inteiro gratuitamente por todos em https://hpbn.co/, patrocinado pela Velocity Conference. Este é um livro altamente recomendado, não apenas para as pessoas que desenvolvem sites, mas é útil para todos que veiculam bytes em alguma rede para um cliente.