Documentação técnica do NetQuickCheck

Fontes de dados, cálculos e métodos de monitoramento usados no NetQuickCheck, abrangendo análise sem fio, tráfego de aplicativos, sondagens de rede e relatórios.

Atualizado

Fontes de dados e seleção de interface

NetQuickCheck combina amostragem do sistema, sondagens de rede ativas e estatísticas derivadas. A amostragem do sistema fornece informações de interface, conexão sem fio e de processo. As sondagens ativas capturam a resposta de um alvo a uma solicitação. As estatísticas derivadas transformam as observações em taxas, percentis e gráficos.

Principais fontes de dados
DadosMétodo de coletaUsado para
Interfaces de redeinterface macOS e configuração de rede e contadores de roteamentoStatus da interface, endereços, rotas, DNS, bytes transferidos e contagens de erros
Redes sem fioLeituras de conexão CoreWLAN e resultados de verificaçãoRSSI, ruído, canal, largura do canal, detalhes do ponto de acesso e cobertura de frequência
Conexões de processoEstatísticas do nettop e informações dos processosApp responsável, endereços remotos, estados de conexão, contadores de bytes e suas variações
Respostas alvoICMP, TCP, DNS, HTTP e transferências de dados de testeLatência, resultados de DNS, status do serviço, rotas e taxa de transferência

Tarefas com uma interface selecionada vinculam suas solicitações a ela. Solicitações TCP, UDP e HTTP diretas usam ligação de interface Network.framework; as sondagens ICMP usam o argumento de interface do comando do sistema. O roteamento automático permite que o macOS escolha o caminho, e as solicitações HTTP automáticas seguem a sessão do sistema e as políticas de proxy. A interface selecionada é salva com os resultados para suportar comparações entre Wi-Fi, Ethernet e outras interfaces disponíveis.

Rede atual e verificações rápidas

Leituras de interface e taxas de transferência

A Rede Atual lê o status da interface, endereços, gateway e DNS, juntamente com leituras sem fio da rede Wi-Fi conectada. Os bytes transferidos vêm de contadores de interface de roteamento do sistema de 64 bits. Erros de recebimento, erros de envio e quedas de fila de recebimento são retidos separadamente.

Taxa de recepção (B/s) = Aumento em bytes recebidos entre amostras ÷ Intervalo de amostragem (segundos)
Taxa de envio (B/s) = Aumento em bytes enviados entre amostras ÷ Intervalo de amostragem (segundos)
Taxa de bits (Mbps) = Taxa de bytes × 8 ÷ 1.000.000

As taxas descrevem o volume médio de transferência durante o intervalo de amostragem. MiB/s usa 1.048.576 bytes por unidade; Mbps usa um milhão de bits por segundo. Os contadores de interface e os contadores agregados por aplicativo cobrem diferentes conjuntos de tráfego.

A sequência de uma verificação rápida

A verificação rápida confirma a conexão local, investiga o gateway, consulta o DNS, verifica a conectividade com a Internet, solicita HTTPS e, em seguida, verifica as informações de saída. A implementação atual permite 8 segundos para toda a verificação. Cada etapa ativa pode usar até 2 segundos do orçamento restante, e os resultados são atualizados à medida que cada etapa é concluída.

A etapa do gateway tenta uma conexão TCP com a porta 443 do gateway. Tanto uma conexão bem-sucedida quanto uma recusa explícita de conexão confirmam uma resposta do gateway; o resultado da conexão original também é mantido. As etapas de DNS, Internet e HTTPS registram suas próprias respostas para ajudar a examinar cada parte do caminho de conexão.

Verificação de Wi-Fi e métricas sem fio

A varredura sem fio usa CoreWLAN para obter SSID, BSSID, canal primário, banda, largura de canal e intensidade do sinal recebido de pontos de acesso próximos. O catálogo de canais disponíveis vem da interface sem fio atual. Elementos de informação de transmissão adicionam recursos de segurança, padrões Wi-Fi, códigos de país e outros detalhes. O acesso a identificadores como SSID e BSSID segue as regras de permissão de localização do macOS.

RSSI, ruído e relação sinal-ruído

RSSI e ruído usam dBm, uma medida de potência logarítmica relativa a 1 miliwatt. Um valor RSSI próximo de 0 significa um sinal recebido mais forte. Quando ambas as leituras são válidas, o aplicativo calcula a relação sinal-ruído:

SNR (dB) = RSSI (dBm) − Ruído (dBm)

Por exemplo, RSSI de −55 dBm e ruído de −92 dBm fornecem um SNR de 37 dB. O cálculo atual aceita leituras de −127 a −1 dBm. Se alguma das leituras estiver faltando, o SNR permanecerá vazio.

O monitoramento de sinal sem fio possui duas fontes de amostragem. O modo local lê periodicamente a rede Wi-Fi conectada; o modo próximo verifica repetidamente os pontos de acesso selecionados. Os gráficos retêm o tempo de cada leitura e as identidades dos pontos de acesso distinguem diferentes sinais sem fio.

Utilização do canal de transmissão

Quando um ponto de acesso transmite um elemento de informação BSS Load válido, o aplicativo converte seu campo de utilização de canal de 0 a 255 em uma porcentagem: valor do campo × 100 ÷ 255. Isso preserva o significado do valor de transmissão. O gráfico de sobreposição de canais usa a cobertura de frequência e o modelo de potência descritos abaixo.

Cobertura e avaliação do canal

Convertendo canais em faixas de frequência

A avaliação de canal constrói faixas de frequência de banda, canal primário e largura de canal. Para os canais 1–13 de 2,4 GHz, a frequência central em MHz é 2.407 + 5 × número do canal; o canal 14 é mapeado separadamente para 2.484 MHz. Para 5 GHz, é 5000 + 5 × número de canal. Uma faixa de 20 MHz se estende por 10 MHz para ambos os lados do centro; canais mais amplos combinam blocos de subcanais suportados pelo catálogo.

Os candidatos são gerados por banda e largura de canal, e cada subcanal de um candidato deve existir no catálogo atual. O aplicativo avalia combinações de 20 e 40 MHz em 2,4 GHz e combinações de 20, 40, 80 e 160 MHz em 5 e 6 GHz. Os registros de varredura são mesclados por banda e BSSID. Quando o BSSID está ausente, o identificador do registro de varredura serve como identidade alternativa para evitar a contagem do mesmo ponto de acesso duas vezes.

Quando as informações de largura ou direção do canal estão incompletas, o aplicativo retém a cobertura confirmada e possível separadamente. Os intervalos compartilhados por todas as posições possíveis são coberturas confirmadas; o restante continua sendo uma cobertura possível. Cada ponto de acesso é contado uma vez.

Cálculo da potência de sobreposição a partir de leituras de sinais logarítmicos

A intensidade do sinal é convertida de dBm em potência linear relativa e depois ponderada pela fração de sobreposição de frequência. Para o ponto de acesso i e candidato c:

Pᵢ = 10 ^ ((RSSIᵢ + 100) ÷ 10)
wᵢ,c = largura de banda total sobreposta ÷ largura de banda total modelada do ponto de acesso
Poverlap,c = Σ (Pᵢ × wᵢ,c)

O termo +100 fornece uma referência de potência relativa compartilhada. Quando a largura do canal é incerta e se sobrepõe à faixa candidata, o peso é conservadoramente definido como 1. Tanto a intensidade do sinal quanto a largura de cobertura contribuem, portanto. Uma diferença RSSI de 10 dB corresponde a uma diferença de potência linear dez vezes maior.

Classificação de candidatos

Quando o ponto de acesso atual pode ser identificado, ele é excluído para que a classificação avalie os sinais circundantes. A classificação atual filtra os candidatos DFS. Em 2,4 GHz a 20 MHz, o grupo de 1, 6 e 11 canais é preferido, seguido por comparações de pontos de acesso com RSSI ausente, potência de interferência estimada, contagem total de pontos de acesso e sequência de canais.

Quando cada candidato tem leituras de ruído comparáveis, o ruído também é convertido em potência linear e incluído. Caso contrário, os candidatos são comparados usando apenas a potência do sinal sobreposto. Cada subcanal candidato usa o meio de suas leituras de ruído válidas classificadas; o candidato completo assume o maior desses valores de ruído.

Dentro da mesma banda e largura de canal, a configuração atual é preferida quando compartilha o grupo de prioridade do melhor candidato e a contagem de pontos de acesso com RSSI ausente, e sua potência estimada não é mais que o dobro da do melhor candidato. Uma diferença de potência linear dupla é de cerca de 3 dB. Isso reduz as alterações de classificação causadas por pequenas diferenças.

Exibindo curvas de sobreposição

As curvas de sobreposição calculam a potência ponderada em uma janela de 20 MHz ao redor do centro de cada canal e, em seguida, usam compressão logarítmica para mapeá-la para um intervalo de exibição relativo de 0–1:

Intensidade de exibição = min(1, max(0, log₁₀(1 + Poverlap) ÷ 7))

Este eixo vertical representa a intensidade de sobreposição relativa derivada das leituras de varredura. Se um ponto de acesso sobreposto não tiver RSSI válido, essa posição permanecerá vazia e a curva será dividida. A cobertura confirmada e a possível permanecem separadas.

Descoberta de dispositivos de rede local

A descoberta de dispositivos combina sondagens de serviço Bonjour, WS-Discovery, SSDP e TCP. Bonjour fornece instâncias de serviço anunciadas. WS-Discovery e SSDP adicionam respostas de dispositivos compatíveis. As sondagens TCP verificam as respostas do serviço em endereços dentro do intervalo de varredura atual.

As portas de sonda TCP atuais são 80, 443, 445, 22, 631 e 9100, abrangendo web comum, compartilhamento de arquivos, acesso remoto e serviços de impressão. As solicitações usam a interface selecionada. As observações mantêm sua fonte, endereço e resposta real.

A descoberta mescla as observações de cada fonte em lotes e organiza nomes, tipos e serviços com base nos endereços dos dispositivos e nas evidências de serviço. Interfaces indisponíveis, acesso negado, tempos limite e respostas de serviço são registrados separadamente. Cancelar ou reiniciar uma varredura isola os retornos de chamada atrasados da varredura anterior para que não alterem os novos resultados.

Tráfego de apps e identificação do app responsável

Encontrar aplicativos na tabela de conexão do sistema

O Tráfego de apps lê processos, protocolos, endpoints locais e remotos, interfaces, estados de conexão e contagens de bytes do nettop. O aplicativo combina informações do aplicativo em execução, relacionamentos entre pais de processos e caminhos executáveis para associar processos auxiliares ao aplicativo proprietário.

A identificação do app responsável verifica primeiro o próprio processo e depois a cadeia de processos pai, até 16 níveis. Se não houver correspondência, usa o caminho do pacote do app que contém o executável. A identidade do processo inclui o horário de início para distinguir PIDs reutilizados.

Calculando a alteração de cada conexão e agregando por aplicativo

Amostras consecutivas associam as conexões pelo processo, protocolo, endereços e portas locais e remotos e interface. As velocidades só são calculadas quando os dois contadores de bytes pertencem à mesma conexão comparável e, depois, são somadas por aplicativo.

Taxa de download da conexão = (Bytes recebidos atuais − Bytes recebidos anteriores) ÷ Intervalo entre amostras
Taxa de upload da conexão = (Bytes enviados atuais − Bytes enviados anteriores) ÷ Intervalo entre amostras
Taxa do app = Soma das taxas válidas das conexões do app e dos processos associados

Novas conexões estabelecem primeiro uma linha de base. Uma reinicialização do contador, alteração da interface ou intervalo de amostra superior a 15 segundos requer novas amostras comparáveis. Se o sistema retornar várias linhas idênticas que não podem ser correspondidas de forma exclusiva, o aplicativo retém essas linhas e deixa suas taxas vazias para que a ambiguidade de correspondência não apareça como um pico de tráfego.

Conexões remotas e observações ICMP

O monitoramento de conexões de aplicativos retém os horários da primeira e da última visualização, alterações de estado e deltas de tráfego, e investiga de forma independente IPs remotos descobertos com ICMP. O tráfego, a atividade de conexão e os resultados do ICMP são alinhados por tempo. A leitura de latência vem da resposta ICMP do IP alvo.

Sondas Ping e TCP

Eco ICMP e a taxa de não resposta

O ping resolve o endereço de destino e o mantém fixo durante a sondagem e, em seguida, envia uma solicitação de eco ICMP IPv4 ou de eco ICMPv6 IPv6. O monitoramento contínuo se repete de acordo com a configuração, registrando envios reais, respostas, respostas perdidas e tempos de ida e volta retornados.

Taxa de não resposta = Sondas sem resposta ÷ Sondas realmente enviadas × 100%

As contagens usam o número de envios confirmados pela saída do sistema. Falhas de resolução, negações de permissão e solicitações que não puderam ser enviadas mantêm seu status específico e não entram no denominador da sonda enviada. As estatísticas de latência usam RTTs de resposta válidos.

Conexões de porta TCP

Depois de resolver o alvo, o monitoramento da porta TCP tenta uma conexão com a porta selecionada e usa um relógio monotônico para medir o tempo até o sucesso ou erro. A resolução DNS termina primeiro e o tempo de conexão TCP é medido separadamente. Sucesso, recusa de conexão, tempo limite e outros erros do sistema são retidos separadamente para mostrar como a mesma porta de serviço se comporta ao longo do tempo.

Consultas DNS e validação de resposta

O monitoramento DNS consulta o servidor escolhido para o tipo de registro selecionado, como A, AAAA, CNAME, MX, TXT, NS, SOA ou PTR. A resolução do sistema e as consultas a servidores específicos seguem caminhos separados. O roteamento automático usa a resolução do sistema ou dig, conforme a solicitação. Consultas vinculadas a uma interface usam pacotes UDP na porta 53.

Consultas diretas geram um ID de transação e constroem o nome, tipo e classe IN da pergunta. As respostas são verificadas quanto ao comprimento do pacote, ID da transação, sinalizador de resposta, contagem de perguntas, nome, tipo e classe antes de analisar códigos de resposta, registros de recursos e TTLs. O analisador de pacotes expande ponteiros de nomes de domínio compactados.

NOERROR com registros do tipo selecionado, NOERROR sem esses registros, NXDOMAIN, pacotes truncados e falhas de transporte são registrados separadamente. As consultas PTR primeiro convertem o endereço IPv4 ou IPv6 em seu nome de pesquisa reversa. O tempo cobre a análise da consulta e da resposta, e os resultados retêm o servidor real e o conteúdo do registro.

Resposta HTTP e tempo de estágio

O monitoramento de sites envia solicitações HTTP ou HTTPS HEAD e registra o código de status retornado, URL final e duração. O roteamento automático usa métricas de transação URLSession. Com uma interface explícita ou caminho de resolução, a implementação HTTP direta usa relatórios de conexão Network.framework e registros de data e hora de solicitação.

Duração das etapas da requisição
EtapaInícioFim
DNSA resolução do nome de destino começaA resolução termina
TCPA tentativa de conexão começaConexão TCP estabelecida; TLS cronometrado separadamente
TLSInício do handshake TLSConclusão do handshake TLS
Envio da requisiçãoA transmissão da solicitação começaTransmissão da solicitação concluída
Espera pelo primeiro byteTransmissão da solicitação concluídaPrimeiro byte de resposta recebido
Recebimento de respostaPrimeiro byte de resposta recebidoA recepção da resposta HEAD termina

A duração do estágio é a diferença entre os carimbos de data/hora final e inicial. Uma conexão reutilizada pode não ter nenhum novo estágio DNS, TCP ou TLS; estágios sem carimbos de data/hora válidos permanecem vazios. Os redirecionamentos retêm o tempo para cada solicitação. A duração total da verificação é medida separadamente porque também inclui resolução, redirecionamentos, agendamento e outras despesas gerais reais.

HTTPS usa validação de confiança de certificado do sistema e extrai o assunto, o emissor, o período de validade e a impressão digital SHA-256 de certificados válidos. Os códigos de status HTTP descrevem a resposta do servidor; erros de transporte descrevem o processo de conexão. Ambos são armazenados separadamente.

Caminho de rede e sondagens hop-by-hop

O monitoramento do caminho de rede resolve o endereço de destino e o mantém fixo durante a medição e, em seguida, envia sondagens ICMP com IPv4 TTL ou IPv6 Hop Limit aumentando de 1. Roteadores intermediários podem retornar respostas com tempo excedido, enquanto o destino pode retornar uma resposta de eco. O aplicativo usa essas respostas para organizar endereços de salto e horários disponíveis.

Cada rodada atualmente investiga até 16 saltos. Se um salto não responder, os saltos posteriores ainda serão verificados. Uma resposta de destino encerra a rodada. As respostas inacessíveis e negadas pelas políticas mantêm os seus resultados originais. Se um endereço estiver disponível sem uma duração válida, o endereço será mantido e o tempo permanecerá vazio.

Taxa de transferência e capacidade de resposta sob carga

Rede atual: Apple networkQuality

A Rede atual executa o macOS networkQuality e analisa seus resultados estruturados, incluindo download, upload, latência ociosa e capacidade de resposta sob carga em RPM. RPM significa ciclos de ida e volta por minuto, medidos pela ferramenta da Apple; o aplicativo retém o valor retornado. As taxas de bits brutas de download e upload são divididas por 1.000.000 para exibição em Mbps.

Quando uma interface é selecionada, o comando speed test inclui seu argumento de interface e verifica o nome da interface retornado no resultado. Se o sistema fornecer apenas algumas métricas, esses campos serão retidos e os demais permanecerão vazios.

Monitor: testes de velocidade por servidor e do sistema

Cada rodada de teste de velocidade do Monitor executa testes de download e upload no endpoint Cloudflare ou LibreSpeed selecionado e, em seguida, executa o Apple networkQuality. Os dois métodos mantêm sua própria fonte, tempo e resultados reais. Os downloads de endpoint leem cargas de teste; uploads usam dados temporários gerados pelo aplicativo. A taxa de transferência média é calculada a partir dos bytes realmente transferidos e do tempo decorrido para esse estágio:

Taxa de transferência (Mbps) = Bytes realmente transferidos × 8 ÷ Tempo decorrido (segundos) ÷ 1.000.000

As solicitações usam cargas de teste explícitas, tempos limite e políticas de cache, retendo o progresso da transferência, a contagem de bytes de destino e os bytes reais transferidos separadamente. Os resultados da etapa distinguem transferências concluídas, parciais e com falha. Os registros retêm o servidor e a interface para suportar comparações nas mesmas condições.

Monitoramento contínuo, gráficos e estatísticas

Amostragem independente em uma linha do tempo compartilhada

O monitor inclui dez tipos de ferramentas: Ping, TCP, DNS, sites, caminhos de rede, testes de velocidade, sinal sem fio, tráfego de interface, tráfego de aplicativos e conexões de aplicativos. Cada tarefa mantém seu próprio alvo, parâmetros e tempos de amostragem. Uma janela de tempo compartilhada alinha observações para comparar latência, leituras sem fio, tráfego e respostas de serviço ao longo do tempo.

As sondagens ativas e as transferências de largura de banda solicitam cotas de recursos separadas. O orçamento padrão atual permite oito operações de sondagem simultâneas e duas transferências simultâneas. As operações além do orçamento aguardam até que uma cota seja liberada. O cancelamento aguarda a saída da operação real antes de liberar sua cota. As cotas se aplicam a cada sonda ou transferência individual; tarefas repetidas solicitam-nas novamente para a próxima rodada.

Segmentos do gráfico e mudanças relativas

Os gráficos conectam pontos por tempo de amostragem e identidade de segmento, mantendo as interrupções separadas e mostrando as falhas individualmente. A interpolação nos limites da viewport é usada somente para desenho; as estatísticas usam observações reais.

Quando os marcadores de pico de latência relativa estão ativados, o aplicativo obtém a mediana m das cinco amostras anteriores no mesmo segmento. Uma latência maior que max(3 × m, m + 5 ms) é marcada. Os marcadores de mudança de sinal sem fio comparam as leituras com a mediana recente e marcam diferenças de pelo menos 8 dB. Estas regras localizam as alterações relativas a uma linha de base recente.

Mediana, P95 e variação

As estatísticas usam valores válidos e finitos da janela de tempo, ordenados de forma crescente. Com um número ímpar de valores, a mediana é o valor central; com um número par, é a média dos dois valores centrais. Sem valores válidos, as estatísticas ficam vazias. P95 usa o método do posto mais próximo:

P95 = Valor na posição ceil(0.95 × n) em amostras ascendentes
Proporção de ausência de resposta ICMP = sondagens não respondidas ÷ sondagens realmente enviadas
Variação de latência ICMP = Soma das diferenças absolutas de RTT entre respostas adjacentes válidas ÷ Número de pares adjacentes válidos

As sessões ICMP de conexão do aplicativo acumulam percentis usando um histograma com precisão de 0,1 ms, independentemente da janela de retenção do histórico bruto. Respostas válidas de 0 a 2.000 ms entram em intervalos de histograma. Valores maiores entram em uma contagem de estouro e contribuem para o máximo; os percentis que caem na faixa de overflow permanecem vazios. A variação de latência emparelha apenas respostas adjacentes válidas no mesmo segmento com um intervalo não superior a 2,5 segundos.

Registros de monitoramento e exportação de relatórios

Os registros de monitoramento salvam parâmetros de tarefas, metas, tempos de amostragem, resultados reais e evidências de apoio. Os gráficos mostram as mudanças ao longo do tempo, enquanto os relatórios organizam as observações para leitura ou processamento posterior.

HTML
Um relatório legível com resumos de tarefas, resultados e detalhes.
CSV
Evidências organizadas em colunas como tempo, categoria, objeto, alvo, método, status, valor, unidade e detalhes para análise em planilha.
JSON
Registros estruturados, configuração e resultados para posterior processamento.

Sessões longas de conexão de aplicativos usam arquivos segmentados. A exportação primeiro fixa o intervalo de leitura e depois lê os dados arquivados e os dados restantes na memória, mantendo limites consistentes. Valores ausentes, falhas e cancelamentos preservam seus estados para análise.