The standard and real-time communication technology is an unalloyed inevitability for the development of Internet of Things (IoT) applications. However, the selection of a standard and effective messaging protocol is a challenging and daunting task for any organisation because it depends on the nature of the IoT system and its messaging requirements. Copious messaging protocols have been developed and employed by various organisations based on their requirements in the last two decades. Though, none of them is able to support all messaging requirements of all types of IoT systems. Messaging protocol is an ongoing dilemma for the IoT industry; consequently, it is important to understand the pros and cons of the widely accepted and emerging messaging protocols for IoT systems to determine their best-fit scenarios. Therefore, this paper presents an evaluation of the four established messaging protocols MQTT, CoAP, AMQP and HTTP for IoT systems. Firstly, it presents the broad comparison among these messaging protocols to introduce their characteristics comparatively. Afterwards, it performs a further in-depth and relative analysis based on some interrelated criteria to gain insight into their strengths and limitations. Thus, based on this detailed evaluation, the user can decide their appropriate usage in various IoT systems according to their requirements and suitability.