Usei o netstat (no Windows) para exibir as portas ouvidas para TCP e UDP:
Notei que, na coluna Endereço externo , o UDP é exibido em *:*
vez de 0.0.0.0:0
, esses dois valores representam a mesma coisa? Se sim, por que o UDP é exibido em *:*
vez de 0.0.0.0:0
?
windows
networking
netstat
user612473
fonte
fonte
*:*
é IPv6 enquanto0.0.0.0:0
é IPv4.UDP 0.0.0.0:5355 *:*
:, isso significa que os dados podem ser enviados entre IPv4 e IPv6?*:*
não diz nada sobre a versão IP. No entanto, como o endereço local desse soquete é apenas IPv4, o endereço remoto também deve ser IPv4.Respostas:
Foi apontado que minha resposta estava errada. Como não posso excluí-lo, fornecerei o correto.
A expressão
*:*
significa "Qualquer endereço, qualquer porta". Todos os ouvintes UDP exibirão esta assinatura. Isso ocorre devido à natureza sem conexão do UDP.Resposta original (incorreta). Sim e não.
*:*
refere-se a QUALQUER endereço IPv6. A distinção entre um endereço desconhecido / não especificado é vaga no IPv4; portanto, usamos 0.0.0.0/0 para representar qualquer host na rede, mas no IPv6 há uma diferença sutil.Na maioria das vezes, no entanto, as pessoas costumam
::
representar uma sequência contígua de 0s.Em um endereço IPv6, qualquer sequência de zeros contíguos pode ser substituída
::
por:0.0.0.0/0
=> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000 =>::
=>*:*
fe80:0000:0000:0000:2000:0aff:fea7:0f7c
=>fe80::2000:0aff:fea7:0f7c
A representação usando caracteres curinga, no entanto, permite um controle mais preciso dos padrões de endereço. Por exemplo,
::
não corresponderiafe80::2000:0aff:fea7:0f7c
, mas*:*
corresponderia.Essa diferença não é realmente significativa para qualquer dispositivo que não esteja executando o roteamento, mas quando chega a hora de selecionar rotas ideais para espaços de endereço agregados, a notação curinga permite uma seleção mais flexível das redes de destino.
fonte
*:* refers to ANY IPv6 address
Aqui você diz,any..address
ou seja, presumivelmente IPv4 ou IPv6. Então qual é? Está se*:*
limitando ao IPv6 ou também permite o IPv4?O
/
refere-se à máscara de sub-rede, que faz parte da camada IP.A
:
refere-se a uma porta que é parte da camada de transporte.Para o TCP, faz sentido que exista um fim remoto para uma conexão.
O UDP, por não ter conexão, não faz sentido mostrar um endereço externo.
Meu pressentimento é que ele sempre mostraria o curinga para o UDP e que existe potencialmente para tornar a análise da saída um pouco mais amigável ou para mostrar se você estiver usando o IPv4 / 6:
IPV4 "*:*"
vsIPV6 "[::]:*"
fonte
*:*
para sessões UDP remotas inexistentes. Estou de acordo com você aqui.Nos dois casos, a informação é basicamente sem sentido, mas indica mais ou menos a mesma coisa.
Sua primeira linha é um soquete de escuta TCP. A coluna de endereço local indica o endereço e a porta em que está aceitando conexões, e a coluna de endereço remoto não significa nada porque um soquete de escuta ainda não possui uma extremidade remota da conexão. Um soquete TCP conectado mostraria o endereço da outra extremidade da conexão nessa coluna, mas para um soquete de escuta, ele decide exibir um endereço e uma porta totalmente zero.
Sua segunda linha é um soquete UDP. UDP é um protocolo sem conexão, o que significa que ele envia e recebe pacotes sem a noção de quem está conectado a quem, se o pacote faz parte de uma conversa existente ou se os dados chegaram do nada. A coluna de endereço local tem o mesmo significado que para o TCP, e a coluna de endereço remoto não faz sentido porque um soquete UDP pode ter um ponto, muitos pontos ou nenhum ponto a qualquer momento. (Na verdade, o POSIX tem a noção de um "soquete UDP conectado", mas isso está indo um pouco longe).
Agora a pergunta: por que eles são exibidos de maneira diferente? Parece ser nada mais que uma peculiaridade do código netstat do Windows. O netstat do Linux (net-tools) é exibido
0.0.0.0:*
na extremidade remota dos soquetes de escuta TCP e UDP (para IPv4; é exibido:::*
para IPv6), que é diferente de qualquer exemplo no Windows, mas pelo menos é consistente no mesmo programa. Talvez o Windows esteja buscando uma distinção semântica entre "a ser preenchido mais tarde" no caso do TCP e "aberto a qualquer coisa" no caso do UDP, mas, com a mesma probabilidade, os dois bits de código foram escritos por duas pessoas diferentes sem preocupação particular com a consistência.fonte
0.0.0.0:0
valor na coluna Endereço externo significa que qualquer endereço IP e número de porta podem enviar dados para esse soquete? e se esse valor fosse, por exemplo127.0.0.0:12345
, isso significa que apenas o endereço IP127.0.0.0
com o número da porta12345
pode enviar dados para esse soquete e mais ninguém?A diferença é simplesmente notacional.
O Netstat no Windows usa
0.0.0.0:0
para representar uma idéia abstrata de "qualquer endereço e porta remotos" para um ouvinte local IPv4 TCP e*:*
para um ouvinte UDP. Para IPv6, o endereço remoto é indicado por[::]:0
para TCP e*:*
UDP.No OS X,
*.*
é usado para TCP e UDP, seja IPv4 ou IPv6 (observe que o OS X usa pontos para separar endereço e porta). O Linux usa0.0.0.0:*
para IPv4 e:::*
IPv6, com os dois primeiros dois pontos representando a abreviação de todos os endereços IPv6 e os terceiros dois pontos o separador entre o endereço e a porta.Segundo o IIRC de algo que ouvi ou li há muito tempo, acho que os emparelhamentos UDP podem aparecer, mas geralmente não aparecem porque são destruídos após a conclusão e as conexões UDP geralmente são muito curtas, com duração de milissegundos ou menos. Eu nunca vi isso, no entanto, para que pudesse estar incorreto.
fonte