Routing algorithms for delay-insensitive and delay-sensitive applications in underwater sensor networks