Como um roteador detecta um dispositivo conectado? (Módulo ENC28J60)

0

Antecedentes:

Na verdade, sou um iniciante no Arduino e aprendo a conectar um à Internet via Ethernet.

Eu não estou usando o escudo Ethernet mais comumente usado (muito mais fácil) (baseado nos chips Wiznet W5100 / W5200), mas um que usa o chip ENC28J60 - a diferença é que o TCP 'handling (?)' deve ser feito por software, enquanto os chips W5100 / W5200 o incorporam ao hardware).

Estou usando bibliotecas que lidam com o trabalho pesado com código. Eu não entendo completamente, mas já consegui configurar o Arduino como um servidor web, bem como um cliente web.

O problema:

Meu problema é a consistência. Mais frequentemente, o módulo Arduino + Ethernet NÃO é detectado pelo roteador e, portanto, não funcionará porque não obtém um endereço IP. Não é um problema de cabo LAN; quando eu conecto isso ao computador, ele aparece na tabela do cliente do roteador, mas quando eu o conecto ao dispositivo (ou seja, o Arduino via módulo Ethernet) ele não aparece.

Minha pergunta é: como um roteador detecta um computador / dispositivo conectado? Uma pesquisa no Google me deu resultados para "como um computador detecta o roteador?"; Eu quero o contrário.

Eu gostaria de ter uma compreensão geral de como um roteador faz a detecção, porque não posso determinar se a falha na conexão está no lado do dispositivo ou no lado do roteador.

Eu sou completamente ignorante para tecnicismos com rede, mas estou familiarizado com conceitos de PING-ing e DHCP versus endereços IP fixos - todos os quais são impedidos por ter uma conexão real - que é onde está o meu obstáculo. Eu apreciaria qualquer explicação leiga ou pelo menos algumas dicas de solução de problemas para descobrir onde o problema realmente está.

    
por Bouncing_Back 26.02.2014 / 13:08

3 respostas

1

Todos os roteadores têm pelo menos duas interfaces de rede. Em nome dessa resposta, assuma uma configuração doméstica típica em que o roteador tenha apenas duas interfaces - a WAN ethernet e a LAN + wireless ethernet (normalmente conectadas juntas, de modo que seja efetivamente uma única interface).

O que acontece é que o roteador emite uma solicitação DHCP em sua interface WAN e, em seguida, o servidor DHCP do ISP responde com informações públicas de IP. O roteador então usa isso para configurar o IP da interface WAN.

O próprio roteador geralmente executa seu próprio servidor DHCP, que distribui IPs àqueles conectados via LAN. Ele não fornece um IP para a interface WAN.

A alternativa é APIPA, em que o dispositivo seleciona um IP aleatório no intervalo APIPA, emite um ARP para ver se alguém o está usando e, em seguida, começa a usá-lo se ninguém responder. Isso é ruim se você quiser usar qualquer sub-rede diferente da sub-rede APIPA.

A autoconfiguração do IPv6 funciona de maneira semelhante.

Eu não tenho muita experiência no Ardunio, mas parece que você precisa de uma funcionalidade de cliente DHCP em algum lugar lá.

    
por 27.02.2014 / 03:08
0

O roteador quase certamente tem a funcionalidade DHCP - atribuição de endereço IP dinâmico. Um cliente DHCP envia uma transmissão sem qualquer endereço e um servidor DHCP na rede local, que vê, responde retornando um pacote ao remetente que contém um endereço IP. (Isso é possível porque a Ethernet usa localmente endereços MAC, que são codificados em cada dispositivo)

Seu roteador provavelmente tem uma tabela mostrando as atribuições de DHCP aos endereços MAC - o seu Arduino aparece lá?

    
por 26.02.2014 / 15:09
0

Os roteadores não detectam computadores, nem os computadores detectam roteadores (computadores IPV6 detectam roteadores).

Os roteadores desconhecem qualquer computador na rede até que eles enviem tráfego para o roteador (gateway padrão). Agora, se o seu roteador estiver configurado como um servidor DHCP, cada vez que um computador estiver configurado para usar DHCP (o padrão é true), ele enviará uma solicitação DHCP. Esta solicitação é recebida pelo roteador e um endereço IP é oferecido ao computador. Nesse estado, o roteador está ciente do computador.

Se você está inicializando seu Arduino e não está obtendo um endereço IP e ele não está listado como um cliente DHCP em seu roteador, então há algo errado com o Arduino ou sua conexão de rede, supondo que tudo o mais na rede esteja não tendo problemas.

Eu sugiro que você se conecte ao Arduino e tente atualizar o endereço IP. Veja também o status de eth0 ou eth1, que informará se está conectado à rede.

link

    
por 27.02.2014 / 02:57