Vehicular Ad Hoc Networks (VANETs) are the potential core of the Intelligent Transportation System (ITS) which aims to increase people safety and improve transportation efficiency. In this paper, we provide the first known taxonomy of VANET data communication protocols, based on road dimension, neighbor knowledge, acknowledgment, start of forwarding, competition to retransmit, vehicle connectivity, urgency, and message contents. The taxonomy provides fundamental blocks in VANET data communication protocols and help researchers better understand the details of each protocol. Further, the taxonomy helps in designing new protocols, by replacing one option by another from the same category. It also helps to understand various limitations of certain protocols, and the need to generalize these protocols and apply them in various VANET applications and scenarios. We also provide here a survey of recent data communication protocols, and a tutorial on how most of them work.