How to simulate a TCP/UDP client using Netcat
This piece is here to introduce you to the Server and Client Concept. Firstly, how does the Server/Client concept work within Internet of things? The client is the device that initiates the communication. The server is Ubidots (or any other server connection), that will accept connections and manage the data transfers using a simple protocol like TCP or UDP. This article will show you how to simulate a client using a usefull tool called Netcat and realize the immediate connection using your own computer's terminal.
To learn more about of managing your data with Ubidots, reference Send Data to Ubidots over TCP or UDP.
Netcat is a featured networking utility which reads and writes data across network connections, using the TCP/IP protocol. Designed to be a reliable "back-end" tool, Netcat can be used directly with other programs and scripts to send files from a client to a server and back. At the same time, it is a feature-rich network debugging and exploration tool that can specify the network patameters while also establishing a connection to a remote host via a tunnel.
Although Netcat can do many things, its main purpose and most desirable function is to:
- Create an initial socket to establish a connection from server to the client.
- Once connected, Netcat will automatically generate a second socket to transmit files from the server to the client and visa versa. (This is the really cool part.)
nc [-options] hostname port[s] [ports] nc -l -p port [-options] [hostname] [port]
- -l: set the "listen" mode, waits for the incoming connections.
- -p: local port
- -u: set the UDP mode
Test your Netcat understanding as a client-server
Open two computer terminals, the first will act as the server and the second will be the client.
With Netcat your PC can be converted in a server, you want to begin as a server that listens at port 2399:
$ nc -l 2399
In addition, we can use the server to connect to the port (2399) recently opened, from the client side:
$ nc localhost 2399
As you can see on the image below, the connection is established:
With the connection established you are now able to write to the server from the client:
$ nc localhost 2399
In the terminal where the server is running, your text files will appear seamlessly.
$ nc -l 2399
By default Netcat uses the TCP protocol for its communications, but it can also UDP using the -u option.
As we mentioned at the previous step, Netcat lets you convert your PC in a server. In this case we're going to establish the connection between the server and the client but using UDP.
From the server side, run the command below. As you can see, the command establishes the UDP connection just requires the -u to be added to the command:
$ nc -u -l 2399
Once you start the server, establish the connection with the client:
$ nc -u localhost 2399
Now the client and the server are using UDP protocol for their communication. You can verify commincation using the netstat command in a new (3rd) computer terminal.
udp 0 0 localhost:2399 localhost:57508 ESTABLISHED
As you can see in the images below, the message is received by the server, and the transmission is verified by the connection:
With this introduction to Netcat, you now have a better understanding of this advanced tool to send data quickly and efficiently between client and server. For more information, check out this link for additional information.
Happy Hacking! :)