## 2 A General Overview on SSNs
### Fundamental Difference between WSNs and SSNs  
As mentioned above, the SSNs are an emerging paradigm of traditional WSNs; therefore, this section will provide the fundamental differences between them, by doing so, we can obtain a better understanding of the specific distinguish between them.  
* Components: WSNs are composed of a large number of distributed sensor nodes over a certain environment of interest, while the SSNs are composed of a number of heterogeneous WSNs from different environments.
* Ownership: For traditional WSNs, the ownership of the hardware infrastructure and the service that is offered for the users is the same authority; on the other hand, the hardware infrastructure of SSNs and its offered services are two different authorities.
* Platform Dependency: Same sensors' hardware, same operating system, same communication protocols, and every sensor node are preferred to be from the same model, all of the previous points are basic principles in designing a traditional WSN. Thus, if the sensor hardware is expired, it cannot be replaced by a newer version, or a matchable hardware from another vendor. Accordingly, traditional WSNs must use the same platform, thus they are considered homogeneous systems. On the other hand, the SSNs are heterogeneous systems, because they can operate with sensors of different hardware, different Operating Systems (OSs), and different protocols.
* Virtualization Technology: The onset of WSNs is interested in improving certain specifications as cost reduction, resource optimization, standardization, scalability, etc., but neglected the number of applications that will be served by the deployed infrastructure, thus traditional WSNs do support it. However, in SSNs virtualization is the foundation stone for it, which depends on the separation between the deployed infrastructure and the offered services over it. Where it converts the deployed infrastructure into multiple logical units, so the users can access it as if he/she were directly using the physical resource.
* Code Modularization: This is concerned with the written code of the application and the code of the operating system and communication protocols. Since, traditional WSNs only handles one application per network, the code is installed in the sensor node before the network deployment. On other hand, SSNs serve multiple applications on the same infrastructure, thus there are two separate types of written codes: one to control and manage the infrastructure owned by the service provider and the second is to control and manage the applications served by that infrastructure owned by the application developers.
* Number of Applications: As mentioned above, WSNs were not concerned with the number of applied application over it, thus it was usually deployed to only serve one dedicated application, but the SSNs were proposed to overcome this drawback; therefore, they concurrently serve multiple applications over the same infrastructure.  
* Connectivity: Sensor nodes in traditional WSNs use physical wireless communications links, but the VSNs in SSNs use logical communication links between them.
* Resource Sharing: All of the nodes in traditional WSNs are dedicated to serve one application, so, when there is a need to apply an additional application, additional nodes have to be added to serve the new application, but in SSNs there is no need to deploy additional nodes, because it already uses the virtualization technique to allow for resource sharing over nodes.
* Redundant Infrastructure: Infrastructure is dedicated for only one application in traditional WSNs, it has to be duplicated if there is another application needed to be served over the same environment. SSNs solved this problem, which is able to share the network resources among multiple concurrent applications.
* Infrastructure/service: Infrastructure and service are considered to be one entity in traditional WSNs, but they are totally separated in SSNs using the concept of virtualization.  
These differences are surveyed in Table 1: