The Network server and Application server are software entities that control higher-level aspects of a LoRaWAN application. The gateway and end device looks after the physical layer connection. The network server looks after the protocol, it validates the authenticity and integrity of devices, deduplicates uplinks, selects the gateways used for downlinks and sends ADR commands to optimize the data rate of devices. The application server looks after the application-level control and data. All are required for a application to run over a LoraWAN network.