To use Bluetooth technology for communication, a device must obey the subset of Bluetooth profiles necessary to use the desired services. A Bluetooth profile is a specification regarding an aspect of Bluetooth-based wireless communication between devices. It resides on top of the Bluetooth Core Specification protocol. Bluetooth profiles are simply a pre-defined collection of Services that have been compiled by either the Bluetooth SIG or by the peripheral designers.
Services are used to break data up into logic entities, and contain specific chunks of data called characteristics. A service can have one or more characteristics, and each service distinguishes itself from other services by means of a unique numeric ID called a UUID (Universally Unique Identifier), which can be either 16-bit for officially adopted BLE Services or 128-bit for custom services.
The lowest level concept in Generic Attribute Profile (GATT) transactions is the Characteristic, which encapsulates a single data point. Similarly to Services, each Characteristic distinguishes itself via a pre-defined 16-bit or 128-bit UUID, and we are free to use the standard characteristics defined by the Bluetooth SIG (which ensures interoperability across and BLE-enabled HW/SW) or define our own custom characteristics which only our peripheral and software understands. GATT transactions in BLE are based on nested objects called Profiles, Services and Characteristics, which can be seen below.