Transmitindo uma mensagem para uma rede de forma confiável

1

Eu escrevi algum software no Arduino (é uma plataforma embarcada) que transmite mensagens UDP para 255.255.255.255 na porta 8888 . Esse hardware se conecta à rede local via Wi-Fi a um roteador que fornece um endereço IP via DHCP.

No meu computador (conectado à mesma rede via wifi) eu criei um sketch MAX / MSP que escuta mensagens UDP na porta 8888 e eu posso receber todas as mensagens enviadas do Arduino sem nenhum problema.

O que eu preciso agora é que esse sistema funcione em uma rede que eu não controle. Eu só preciso conectar os dois dispositivos à rede e ter um para enviar mensagens para o outro como no ambiente controlado. O objetivo é ser capaz de tornar esta configuração portátil com configuração mínima (pense em instalação de arte interativa). O envio de mensagens para 255.255.255.255 é uma maneira confiável de transmitir mensagens?

Coisas que você pode assumir ao responder a essa pergunta:

  1. Os pacotes serão relativamente curtos (menos de 150 bytes) e serão transmitidos uma vez por segundo ou talvez menos.
  2. As redes serão redes Wi-Fi públicas, como uma cafeteria, um AirPort Express comum, talvez até aquelas oferecidas gratuitamente por uma empresa de telefonia ou pelo aeroporto.
  3. Não consigo configurar um IP específico para enviar uma mensagem do sistema incorporado, pois não consigo compilar código e fazer o upload para ele em trânsito. Os sistemas incorporados precisam de uma maneira de enviar mensagens, independentemente do link.

EDIT: Por "confiável", não quero dizer que cada pacote único tem que chegar ao destino a cada momento. Até 50% de perda de pacotes é aceitável neste aplicativo. O que eu quero saber é se o endereço IP acima mencionado funcionaria em todas as configurações de rede.

    
por Julian 16.08.2016 / 23:51

2 respostas

2

Não, nem sempre funcionará, e particularmente em algumas redes públicas de Wi-Fi que desativam explicitamente um dispositivo de Wi-Fi conversando com outro dispositivo de Wi-Fi (por motivos de segurança)

Em alguns casos problemáticos, você provavelmente terá mais sorte em ter um servidor em algum lugar da Internet e ter os dois dispositivos conversando com ele para trocar dados.

Note também que conectar-se à rede às vezes pode ser mais complicado (para a máquina) do que apenas "aqui está a senha do ESSID e do WPA". Eu estou perto de um na verdade: é um portal cativo, exigindo que você insira seu número de telefone, envia SMS com código e você precisa confirmar esse código na página da Web - então esse código está vinculado a esse Wifi MAC e não de outros. Assim, seu dispositivo teria que ter acesso humano (exibição e teclado) pelo menos para que a configuração funcionasse em "quase todos" cenários.

Você poderia tentar com sua ideia com a transmissão local e, em seguida, fazer o fallback do software para o acesso à Internet acima se isso não funcionar ...

    
por 17.08.2016 / 15:49
0

Por definição, o UDP é sem conexão, portanto, a confiabilidade só é possível se você fizer handshaking ou verificação de erros fora do protocolo.

Meu primeiro instinto é que você não deveria estar transmitindo em 255.255.255.255, que quanto menor o domínio de broadcast, melhores resultados você terá.

Além disso, esta questão desencadeia todos os alarmes de segurança da informação na minha cabeça. Meu segundo pensamento, acima, exige que você tenha pelo menos conhecimento da rede à qual você está anexando. E sua menção explícita de não ter esse conhecimento coloca isso no reino da condução de guerra ou do MITM.

editar - Para uma exposição de arte, ela realmente precisa ser confiável? Parece que um pouco mais de aleatoriedade seria melhor.

    
por 17.08.2016 / 00:07

Tags