The Internet has caused the advent of a digital society; wherein almost everything is connected and available from any place. Thus, regardless of their extensive adoption, traditional IP networks are yet complicated and arduous to operate. Therefore, there is difficulty in configuring the network in line with the predefined procedures and responding to the load modifications and faults through network reconfiguring. The current networks are likewise vertically incorporated to make matters far more complicated: the control and data planes are bundled collectively. Software-Defined Networking (SDN) is an emerging concept which aims to change this situation by breaking vertical incorporation, promoting the logical centralization of the network control, separating the network control logic from the basic switches and routers, and enabling the network programming. The segregation of concerns identified between the policies concept of network, their implementation in hardware switching and data forwarding is essential to the flexibility required: SDN makes it less complicated and facilitates to make and introduce new concepts in networking through breaking the issue of the network control into tractable parts, simplifies the network management and facilitate the development of the network. In this paper, the SDN is reviewed; it introduces SDN, explaining its core concepts, how it varies from traditional networking, and its architecture principles. Furthermore, we presented the crucial advantages and challenges of SDN, focusing on scalability, security, flexibility, and performance. Finally, a brief conclusion of SDN is revised.