O que exatamente acontece no Linux internamente quando um cabo ethernet é conectado?

1

Eu gostaria de entender o que exatamente acontece quando um cabo está sendo conectado à porta Ethernet (assumindo endereçamento IP dinâmico):

  1. Quais serviços estão sendo executados e como eles são acionados?
  2. Quais chamadas de API precisam ser feitas para estabelecer conexão?

Pergunta extra: Como exatamente isso é possível para detectar o sinal quando um cabo é conectado (eu entendo que essa pergunta pode não ser exatamente adequada para este site SE)?

    
por syntagma 24.04.2015 / 09:28

2 respostas

0

Eu só posso realmente responder a "pergunta extra". "Como detectar o sinal quando um cabo está conectado". Assim, assumindo 10 * / Base-T, existe um tipo de sinal de portadora que o dispositivo detecta e disponibiliza essa informação para o driver do dispositivo. O driver de dispositivo normalmente envia uma mensagem via logger do kernel que "ETHX: LINK DETECTED". Essa informação também se torna disponível (em versões relativamente recentes do Linux) na hierarquia / sys. Consulte o link .

Acredito que as regras do udev podem ser configuradas para aumentar a ação quando o estado de um dispositivo foi alterado. Mas eu não sei ao certo se esse é o caso aqui.

Se o processo dhclient / pump estiver em execução e se isso acontecer, esse processo solicitará um endereço DHCP e, se ele obtiver um do servidor DHCP, normalmente chamará um ou mais scripts auxiliares que realmente configuram o sistema de rede do sistema operacional. . Mas isso depende do programa particular que faz isso.

    
por 24.04.2015 / 12:36
0

O Kernel tem um driver para qualquer que seja o barramento em que a porta esteja (PCI, USB, PCMCIA - na verdade, esse é mais complexo e ninguém mais o utiliza, então esqueça o PCMCIA). Esse driver mapeou os registros naquele barramento (isso é diferente de um registrador de CPU) para a memória e os monitora.

Quando um cabo é conectado, o hardware ethernet altera seus registradores e os avisos de barramento. As mensagens de barramento udev, que mapeia o ID do barramento para o driver apropriado (isso também pode acontecer no kernel; depende de como ele está configurado). O Udev também pode ativar um processo de usuário, como o pump ou o NetworkManager, provavelmente através do dbus, embora isso esteja entrando no território "depende de como ele está configurado".

Geralmente, o udev já configurou o mapeamento para coisas como o nome simbólico da porta "eth1" ou o que for, assim como qual driver ele usa, e disponibiliza essas informações para o restante do usuário (e em alguns casos o núcleo). Ele fica em torno de ouvir o software de barramento no kernel para mudanças nos dispositivos do barramento - isso é exatamente como o modo como um pen drive é montado automaticamente: o barramento fala com o udev, o udev fala com o usuário.

TL; DR: O hardware na porta ethernet se comunica com o barramento (PCI ou USB ou o que você tem), que então se comunica com o udev, que se comunica com o restante do usuário.

    
por 24.04.2015 / 12:59