Como simular um cliente TCP/UDP usando o Netcat
Neste guia, apresentaremos o modelo cliente-servidor e mostraremos como simular um cliente TCP/UDP usando uma ferramenta útil chamada Netcat – para que você possa estabelecer uma conexão usando o próprio terminal do seu computador.
Então,como funciona o modelo cliente-servidor na Internet das Coisas? O cliente é o dispositivo que inicia a comunicação. O servidor é Ubidots (ou qualquer outra conexão de servidor), que aceita conexões e gerencia as transferências de dados por meio de um protocolo simples como TCP ou UDP.
Para saber mais sobre como gerenciar seus dados com Ubidots, descubra como enviar dados para Ubidots via TCP ou UDP.
O que é Netcat?
O Netcat é um featured que lê e grava dados em conexões de rede, utilizando o protocolo TCP/IP. Projetado como uma ferramenta de "back-end" confiável, o Netcat pode ser usado diretamente com outros programas e scripts para enviar arquivos de um cliente para um servidor e vice-versa. Ao mesmo tempo, é uma ferramenta rica em recursos para depuração e exploração de rede, capaz de especificar parâmetros de rede e também de estabelecer uma conexão com um host remoto por meio de um túnel.
Embora o Netcat possa fazer muitas coisas, seu principal objetivo e suas funções mais desejáveis são:
1. Crie um socket inicial para estabelecer uma conexão do servidor para o cliente.
2. Uma vez conectado, o Netcat irá gerar automaticamente um segundo socket para transmitir arquivos do servidor para o cliente e vice-versa. (Esta é a parte realmente interessante).
Segue abaixo um diagrama da arquitetura do protocolo de dados do Netcat:
Como você verá abaixo, essa solução simples também é extraordinariamente poderosa e flexível. Usaremos conexões locais por uma questão de simplicidade, embora, é claro, elas também possam ser usadas entre máquinas diferentes.
Sintaxe
nc [-opções] nome do host porta[s] [portas] nc -l -p porta [-opções] [nome do host] [porta]
Parâmetros básicos
- -l: define o modo "escuta", aguardando conexões de entrada.
- -p: porta local.
- -u: define o modo UDP.
Teste seus conhecimentos sobre o Netcat como cliente-servidor
Abra dois terminais de computador – o primeiro funcionará como servidor e o segundo como cliente.
Cliente TCP
Com o Netcat, seu PC pode ser transformado em um servidor. Você precisará começar configurando um servidor que escute na porta 2399:
$ nc -l 2399
Também podemos usar o servidor para conectar à porta recentemente aberta (2399) a partir do do cliente :
$ nc localhost 2399
Como você pode ver na imagem abaixo, a conexão foi estabelecida:
Com a conexão estabelecida, você agora pode escrever para o servidor a partir do cliente:
$ nc localhost 2399 Olá Servidor
No terminal onde o servidor está em execução, seus arquivos de texto aparecerão sem problemas.
$ nc -l 2399 Olá Servidor
Cliente UDP
Por padrão,o Netcat usa o TCP para se comunicar, mas também pode usar UDP com a -u .
Como mencionado anteriormente, o Netcat permite transformar seu PC em um servidor. Aqui, vamos estabelecer a conexão entre o servidor e o cliente usando UDP.
No do servidor , execute o comando abaixo. Como você pode ver, basta adicionar -u ao comando para estabelecer a UDP :
$ nc -u -l 2399
Após iniciar o servidor, estabeleça a conexão com o cliente:
$ nc -u localhost 2399
Agora o cliente e o servidor estão usando UDP para se comunicar. Você pode verificar a comunicação usando o comando netstat em um novo (terceiro) terminal de computador.
$ netstat | grep 2399 udp 0 0 localhost:2399 localhost:57508 ESTABELECIDO
Como você pode ver abaixo, a mensagem é recebida pelo servidor e a transmissão é verificada pela conexão:
Com esta introdução ao Netcat, você agora tem uma melhor compreensão de como usar essa ferramenta avançada para enviar dados de forma rápida e eficiente entre cliente e servidor. Confira a página inicial do projeto Netcat para mais informações.
Boa sorte com a sua programação! 🙂