A Taxonomy and Analysis on Internet of Vehicles: Architectures, Protocols, and Challenges