Fifth-generation (5G) and beyond networks are envisioned to provide multi-services with diverse specifications. Network slicing is identified as a key enabling technology to enable 5G networks with multi-services. Network slicing allows a transition from a network-as-an-infrastructure setup to a networkas-a-service to enable numerous 5G smart services with diverse requirements. Although several surveys and tutorials have discussed network slicing in detail, there is no comprehensive study discussing the taxonomy and requirements of network slicing. In this paper, we present and investigate key recent advances of network slicing towards enabling several Internet of Things (IoT) smart applications. A taxonomy is devised for network slicing using different parameters: key design principles, enablers, slicing resources levels, service function chaining schemes, physical infrastructures, and security. Furthermore, we discuss key requirements for network slicing to enable smart services. Finally, we present several open research challenges along with possible guidelines for network slicing.