Each network connection is in some sense a tunnel. A typical network connection is a virtual wire in the sense that the packets travel between the two ends of the connection and are sorted out by the networking software so that the applications send/receive packets in sequence and treat the data as if this is an unbroken stream of data arriving over a wire.
However, the term network tunnel is usually reserved for a network connection which acts like a conduit carrying many network connections within it. Through the use of suitable tunnelling protocols the applications that are using this wire within a wire need not be re-programmed and will use these connections like other network connections.
Obviously, this form of creating connections carries a certain overhead cost of putting packets withing packets. However, given network speeds nowadays and the using of data compression, this overhead can be reduced to the extent that features like encryption of packets can be added to the tunnelling protocols. In fact, the encryption of packets is one of the motivating reasons for using tunnels. The other reason is to provide some form of enhanced connectivity between hosts that have authenticated each other in some way --- this includes the case of firewall tunnels which allow certain authenticated machines to connect to each other even while denying all other machines such a connection.