Canais de dados e controle para um modem no Linux?

0

Eu tenho um modem USB detectado como um arquivo de dispositivo do dispositivo ( /dev/ttyACM0 ). Redirecionar os comandos AT para o arquivo do dispositivo parece funcionar como o modem responde.

Vou com a seguinte suposição, a parte superior representa um canal de controle. Através dele é possível discar, configurar o modem, cancelar a conexão ... em geral, fazer coisas relacionadas ao controle do modem sem realmente manipular o data . Por data quero dizer tudo o que não são controles (por exemplo, pacotes HTTP).

Onde o fluxo de dados acontece? Se for através do mesmo arquivo, como é esse multiplexado?

Idealmente, gostaríamos que o modem fosse apenas um "serviço" subjacente que fornece uma interface de rede com um IP, para que possamos abstrair isso e usar soquetes TCP / IP. Os soquetes são implementados no kernel.

Como isso se encaixa na imagem quando o modem é exposto como /dev/ttyACM0 no espaço do usuário ?

    
por TheMeaningfulEngineer 17.04.2018 / 09:32

1 resposta

2

Os dispositivos que usam a "interface" de modem no estilo AT operam em vários estados:

  • modo de comando
  • modo de discagem
  • modo de aperto de mão
  • modo de dados

Os modems iniciam no modo de comando e respondem aos comandos AT -prefixed. Depois de estabelecer uma conexão (após ATD , por exemplo, após passar pelos modos de discagem e handshake), eles alternam para o modo de dados e todos os dados enviados a eles são transmitidos para o dispositivo ao qual eles estão conectados. Para retornar ao modo de comando, o remetente precisa pausar o fluxo de dados por um determinado período, enviar +++ e pausar novamente; o modem retorna ao modo de comando e começa a responder novamente aos comandos AT (e o fluxo de dados é interrompido).

Alguns modems não precisavam das pausas, o que significava que os dados seriam interpretados como sequências de comandos se contivessem +++ (daí a piada prática +++ATH0 no IRC).

Para fornecer outro protocolo em cima da conexão de dados do modem, você precisa usar outra ferramenta. Qual ferramenta você usa depende do protocolo que a outra extremidade espera (SLIP, PPP, PPPoE ...); por exemplo, você usaria ppp para PPP (de preferência como integrado em sua distribuição, portanto, a configuração acaba sendo mais transparente) . Isso fornecerá alguma forma de encapsulamento IP e, em seguida, você poderá usar o IP como de costume. A ferramenta envolvida usará qualquer dispositivo necessário para falar com o modem ( /dev/ttyACM0 no seu caso) e expor outra interface que o restante do sistema pode usar para fins de rede (em geral, uma interface de rede, por exemplo ppp0 ).

    
por 17.04.2018 / 10:20