In the Internet of Things (IoT) introduction article, we noted IoT is an ecosystem of different technologies that work together. In the IoT ecosystem communication and is a critical element for a project to be successful. This article will focus on presenting the various elements that enable communication.
When setting up a network it necessary to have a clear understanding of network topology because it will influence the decision on communication protocols that will be employed. One network topology that is frequently used in IoT is Point to Point (P2P). P2P links two endpoints to enable communication. Another topology used in IoT is star configuration. In the star set up, there are many nodes that connect to a common device but there is no connection among the nodes. The star set up has the advantage of being easy to set up but it has the shortcoming of having a single point of failure because if the central device fails the whole network will fail. Another topology used in IoT is the mesh network. In the mesh set up, there are many nodes that connect among themselves. The mesh topology ensures consistent connection at the cost of creating very high redundancy.
IoT devices can communicate over the internet or over a local network. The protocols used in communicating over the internet are TCP/IP, UDP, HTTP, SMTP, MQTT, DNS, DHCP and voice over IP. TCP/IP is a combination of two protocols. The IP protocol is concerned with moving data packets from one host to another. Because the data packets can be divided into multiple packets which may arrive in a different order from which they were sent TCP handles placing packets in the right order. The capabilities that arise from combining TCP and IP are the foundation of popular solutions including email and HTTP.
Another protocol used in transport is UDP but it differs from TCP because in UDP there is no guarantee sent messages will arrive. This shortcoming of UDP has made TCP the preferred protocol in transport.
Earlier we noted the IP protocol enables communication between hosts. For the hosts to know where to send the data they use the IP addresses. The addresses are expressed using four numbers such as 192.168.0.1. Therefore every device in IoT has an IP address. There are 2 protocols that are used in creating IP addresses. The internet protocol version 4 (IPv4) has the capability to create 232 addresses. Due to growth in number of devices that need to connect the internet protocol version 6(IPv6) was developed and it has the capability to create 2128 addresses.
It is simple for computers to handle numbers, but it is difficult for humans to recall numbers. The Domain Name System (DNS) was devised to help humans in navigating the internet. An example of a domain name is google.com.
IP addresses can be assigned dynamically or statically. In static IP addressing once an IP address has been assigned it can only be modified by human intervention. In dynamic IP addressing there is no need to assign IP addresses through human intervention because the device obtains an IP address from a dynamic host control protocol (DHCP). There is no fixed list of addresses instead a device is assigned one of the available addresses. When the device is powered off the address is returned to the pool of available addresses and it can be assigned to other devices.
Besides an IP address a device needs a MAC address to uniquely distinguish a machine in a physical network to enable packet exchange. MAC addresses are relevant only within an Ethernet network.
When working on an IoT project most of the interaction will happen at the application layer. One common application layer protocol is HTTP. In the HTTP protocol resources are served upon requests sent through a URL. Requested resources are displayed in a browser. When sending requests and receiving resources any person with access to the network can intercept the content being transmitted. This is not a protocol shortcoming but it arises due to lack of encryption. To mitigate this shortcoming of the HTTP protocol the HTTPS protocol was developed. The HTTPS protocol is simply a combination of two protocols which are HTTPS and secure socket layer (SSL). When the HTTPS protocol is used the connection between the server and the client is secure and encrypted. Once there is a secure connection in place, HTTP is used in requesting and receiving resources. To send and receive email the SMTP protocol is used.
In the previous sections, we discussed the protocols that are used over the internet. In the following sections we will discuss other protocols that may be used in an IoT project. One protocol that is frequently used in day to day operations is Wi-Fi. The advantages of Wi-Fi are simplicity in setting up devices, wide range and ability to penetrate barriers such as walls. Shortcomings of Wi-Fi are security vulnerabilities, single point of failure and low bandwidth because there is no wired connection. Wi-Fi is appropriate when speed of set up and energy saving are top priorities.
Thread is a protocol developed to support communication between two machines. Thread has advantages of reliability and energy efficiency. One advantage of Thread is ability to connect to different types of devices such as routers and sleepy end devices. Another advantage of Thread is ability to interface with the internet via the IP protocol. Other advantages are strong security and no single point of failure.
ZigBee shares similarities with Thread and it can be set up in a star, mesh, or network topology. An advantage of ZigBee is minimal power consumption. The shortcomings of ZigBee are data transmission speed is low and the range is not wide. Other protocols that can be used in an IoT project are Bluetooth, RFID and NFC.
In this article, we introduced networking as an element that is critical to the success of an IoT project. We discussed the different internet protocols that are used in an IoT project. We also discussed other protocols than can be applied in an IoT project.