Usar o cliente de depuração do WSD para verificar o tráfego multicast
Se o host genérico e o cliente puderem ver um ao outro na rede, mas o host e o cliente reais não, é provável que o problema esteja nas mensagens enviadas entre os pontos de extremidade pela rede. Para obter mais informações sobre o host e o cliente genéricos, consulte Usando um host e um cliente genéricos para UDP WS-Discovery. Como os rastreamentos de rede completos podem ser difíceis de coletar, filtrar e ler, a ferramenta Cliente de Depuração do WSD pode ser usada para imprimir os lados multicast das mensagens do WS-Discovery.
O cliente de depuração do WSD no modo multicast só pode inspecionar metade das mensagens, já que o cliente não pode imprimir mensagens unicast. Se o tráfego unicast for de interesse, pule diretamente para Inspecionando rastreamentos de rede para UDP WS-Discovery.
Este procedimento mostra um método que exibirá todo o tráfego multicast na rede. Para exibir apenas o tráfego multicast de e para o dispositivo, consulte a seção Filtrando resultados do WSD Debug Client abaixo.
Para usar o WSD Debug Client para verificar o tráfego multicast
- Configure o host e o cliente para serem executados na rede (ou seja, certifique-se de que o host e o cliente operem em máquinas diferentes).
- Abra um prompt de comando e execute o seguinte comando: WSDDebug_client.exe /mode multicast
- Reproduza a falha iniciando o host e o cliente ou pressionando F5 no Network Explorer.
- Verifique se as mensagens estão sendo multicast.
Se as mensagens necessárias forem exibidas na saída do WSD Debug Client, a falha do aplicativo poderá estar no conteúdo da mensagem multicast ou na existência ou no conteúdo das mensagens de resposta unicast correspondentes. Continue a solução de problemas seguindo as instruções em Inspecionando rastreamentos de rede para UDP WS-Discovery.
Se as mensagens necessárias forem exibidas na saída do WSD Debug Client, é provável que a origem do problema do aplicativo tenha sido identificada. É provável que o tráfego multicast não esteja sendo transmitido na rede. Essa falha pode ocorrer quando o aplicativo não enumera adaptadores multicast corretamente. Os aplicativos devem enviar explicitamente o tráfego multicast por todas as interfaces de rede; caso contrário, os pacotes podem não ser gerados para a interface de loopback ou para outras interfaces. Para verificar se os pacotes não estão aparecendo na rede, siga as instruções em Inspecionando rastreamentos de rede para UDP WS-Discovery e procure evidências de mensagens multicast ausentes.
Verificando se as mensagens estão sendo multicast
Sempre verifique se as mensagens de investigação estão sendo multicast. Opcionalmente, verifique se as mensagens Hello e Resolve estão sendo multicast. Observe que nem todos os aplicativos usam mensagens Resolve. Para obter mais informações sobre padrões de mensagem usados por clientes e hosts, consulte Padrões de mensagem de descoberta e troca de metadados e Introdução à solução de problemas do WSDAPI.
As mensagens devem ser acionadas para serem enviadas conforme descrito na etapa 3 acima. O cliente de depuração do WSD exibe a mensagem SOAP bruta como saída. Como todas as mensagens impressas pelo WSD Debug Client no modo multicast são recebidas por meio de um soquete multicast, o endereço de destino da mensagem não é exibido.
O exemplo de saída do WSD Debug Client a seguir mostra uma mensagem de investigação. O elemento <wsa:Action> identifica a mensagem como uma mensagem de teste. Inspecione o campo <wsa:Action> para verificar se a mensagem recebida era uma mensagem de investigação.
UDP message at 05/08/07 10:06:55 from soap.udp://[127.0.0.1:49334]
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="h
ttp://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsd="https://schemas.xmlso
ap.org/ws/2005/04/discovery" xmlns:wsdp="https://schemas.xmlsoap.org/ws/2006/02/d
evprof"><soap:Header><wsa:To>urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:T
o><wsa:Action>https://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</wsa:Action>
<wsa:MessageID>urn:uuid:256ad815-1576-4e59-8efc-4c1e0f15fdd2</wsa:MessageID></so
ap:Header><soap:Body><wsd:Probe><wsd:Types>wsdp:Device</wsd:Types></wsd:Probe></
soap:Body></soap:Envelope>
O exemplo de saída do WSD Debug Client a seguir mostra uma mensagem de Hello. O elemento <wsa:Action> identifica a mensagem como uma mensagem de Hello.
UDP message at 05/08/07 10:10:49 from soap.udp://[[::1]:49343]
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="h
ttp://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsd="https://schemas.xmlso
ap.org/ws/2005/04/discovery" xmlns:wsdp="https://schemas.xmlsoap.org/ws/2006/02/d
evprof"><soap:Header><wsa:To>urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:T
o><wsa:Action>https://schemas.xmlsoap.org/ws/2005/04/discovery/Hello</wsa:Action>
<wsa:MessageID>urn:uuid:8999e29a-b056-4345-9e13-f42dbedab28a</wsa:MessageID><wsd
:AppSequence InstanceId="1" SequenceId="urn:uuid:abb0a2a1-6efc-4242-b8e7-c02484a
6eea2" MessageNumber="1"></wsd:AppSequence></soap:Header><soap:Body><wsd:Hello><
wsa:EndpointReference><wsa:Address>urn:uuid:02a76d74-82d0-43e6-ab09-16f54ab81ac6
</wsa:Address></wsa:EndpointReference><wsd:Types>wsdp:Device</wsd:Types><wsd:Met
adataVersion>1</wsd:MetadataVersion></wsd:Hello></soap:Body></soap:Envelope>
Filtrando os resultados do WSD Debug Client
Filtrar os resultados do WSD Debug Client pode ajudar a identificar o tráfego de incidentes envolvendo o dispositivo. A filtragem só é necessária em redes ruidosas.
Há duas maneiras de filtrar os resultados. Os endereços IP a serem filtrados podem ser identificados explicitamente ao iniciar o WSD Debug Client. Como alternativa, os endereços IP podem ser especificados após a inicialização do cliente. Esta seção descreve os dois métodos.
Para especificar endereços IP a serem filtrados ao iniciar o WSD Debug Client
- Configure o host e o cliente para serem executados na rede (ou seja, certifique-se de que o host e o cliente operem em máquinas diferentes).
- Colete os endereços IP do dispositivo. Se o dispositivo tiver vários endereços (por exemplo, ele tem endereços IPv4 e IPv6), todos os endereços deverão ser coletados.
- Abra um prompt de comando e execute o seguinte comando: WSDDebug_client.exe /mode multicast /ip add <device IP>
<device IP> é um endereço IP. A lista a seguir mostra alguns formatos de exemplo para esse endereço IP.
- 192.168.0.1
- ::1
- mydevice.contoso.com
O WSD Debug Client resolve automaticamente os nomes de host fornecidos no prompt de comando.
Para filtrar os resultados depois de iniciar o WSD Debug Client
- Configure o host e o cliente para serem executados na rede (ou seja, certifique-se de que o host e o cliente operem em máquinas diferentes).
- Colete os endereços IP do dispositivo. Se o dispositivo tiver vários endereços (por exemplo, ele tem endereços IPv4 e IPv6), todos os endereços deverão ser coletados.
- Abra um prompt de comando e execute o seguinte comando: WSDDebug_client.exe /mode multicast
- No prompt de comando do cliente de depuração do WSD, execute o seguinte comando: ip add <device IP>
- Repita a etapa 4 até que todos os endereços IP do dispositivo tenham sido adicionados.
O procedimento a seguir pressupõe que o cliente de depuração do WSD foi iniciado e a filtragem por endereço IP está ocorrendo.
Para verificar se os endereços IP corretos estão sendo filtrados
No prompt de comando do WSD Debug Client, execute o seguinte comando: ip print
A lista de endereços IP que estão sendo filtrados é exibida.
O procedimento a seguir pressupõe que o cliente de depuração do WSD foi iniciado e a filtragem por endereço IP está ocorrendo.
Para desabilitar a filtragem
No prompt de comando do WSD Debug Client, execute o seguinte comando: ip clear
Todo o tráfego multicast agora será mostrado na saída de depuração.
Tópicos relacionados