This document provides a survey of device-to-device (D2D) communication. It begins with background on the increasing mobile data traffic and challenges it poses. It then classifies D2D technologies as inband or outband. Inband D2D can be network assisted or not, operating in cellular spectrum. Outband D2D operates in unlicensed spectrum. Challenges of D2D include interference management and resource allocation. Applications include offloading and public safety. While D2D promises increased capacity and proximity services, open challenges remain around interference, pricing, and standardization.