Sobes.tech
Middle

Como verificar a disponibilidade da porta UDP?

sobes.tech IA

Resposta da IA

A forma mais direta sem enviar dados é usar nmap com a opção de varredura UDP (-sU) numa porta específica (-p) para esse host.

# Verificar a disponibilidade da porta UDP 53 no localhost
nmap -sU -p 53 localhost

Outra opção é tentar enviar um pacote UDP para a porta e observar a resposta ou a sua ausência. A entrega bem-sucedida do pacote sem ICMP Unreachable (Tipo 3, Código 3 - Porta inacessível) pode indicar indiretamente que a porta "está a ser ouvida", embora isso não garanta que a aplicação na porta esteja a processar ativamente as solicitações.

Exemplo usando Python:

import socket

def check_udp_port(host, port):
    """Verifica a disponibilidade da porta UDP enviando um pacote vazio."""
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.settimeout(1) # Tempo limite para aguardar resposta
        sock.sendto(b'', (host, port))
        # Se a porta estiver fechada, podemos receber ICMP Unreachable
        # Ou simplesmente um timeout se a porta estiver aberta mas não responde
        data, addr = sock.recvfrom(1024)
        print(f"Dados recebidos de {addr}. A porta {port} parece estar aberta.")
    except socket.timeout:
        print(f"Timeout. A porta {port} em {host} pode estar aberta mas não responde, ou estar filtrada.")
    except socket.error as e:
        # Por exemplo, Connection refused para UDP - isto é ICMP Unreachable
        print(f"Erro de socket: {e}. A porta {port} em {host} pode estar fechada ou filtrada.")
    finally:
        sock.close()

# Exemplo de uso
# check_udp_port('localhost', 53)
# check_udp_port('192.168.1.1', 123)

É importante entender que a verificação UDP é menos confiável do que TCP, pois UDP não estabelece conexão nem envia confirmações de receção de pacotes. A ausência de resposta nem sempre significa que a porta está fechada; pode ser devido a um firewall ou ao facto de a aplicação na porta não enviar respostas a pacotes vazios. ICMP Unreachable (Porta Inacessível) é o indicador mais fiável de uma porta fechada, mas pode ser bloqueado por firewalls.

Resumo dos métodos e suas características:

Método Vantagens Desvantagens
nmap -sU Ferramenta especializada, flexível Requer instalação do nmap, pode ser ruidoso (dependendo das opções)
Envio de pacote Implementação programável, configurável Menos fiável do que TCP, depende da reação da aplicação na porta ou do firewall