This chapter presents a comprehensive history of logic locking defenses and attacks. A classification of logic locking techniques as well as attacks is provided. The logic locking defenses are divided into classes: pre-SAT and post-SAT techniques. Four classes of attacks: algorithmic, approximate, structural, and side-channel, are introduced. The chapter emphasizes the relationship between different logic locking techniques. A timeline of the prominent logic locking attacks and defenses is also presented. Since the inception of logic locking in 2008 , it has received significant interest from the research community. Over the last decade, a number of logic locking techniques as well as attacks have emerged. This chapter presents a high-level introduction to the major developments in logic locking. In addition to offering an overview of different logic locking attacks and defenses, the chapter also highlights the relationships between different attack and defense algorithms. Section 2.1 provides a summary of the milestones in logic locking research. Section 2.2 introduces a classification of logic locking defenses and attacks. Section 2.3 presents a brief overview of the existing logic locking defenses. Section 2.4 summarizes the existing attacks on logic locking. Section 2.5 elaborates on the resilience of each defense against different attack algorithms using an attack-defense matrix. Section 2.6 presents a summary of different metrics that can be used to evaluate the effectiveness of a logic locking technique.