DNA codes for proteins via codons. A codon is a combination of three nucleotides. As there are 4 different nucleotides available in DNA, there are 64 permutations possible. These 64 codons code for the 20 amino acids and 3 stop codons. Hence, many amino acids are coded by several different codons - the genetic code is said to be redundant.
Typically DNA sequences have a single reading frame (but see @user3790338's answer for an interesting exception to this rule). The reading frame is, basically, defined by the first amino acid of the protein that it decodes. Thereafter, each subsequent triplet is one codon, in a non-overlapping way (123 - 456 - 789 - etc.). Note that DNA sequences contain so-called introns that intervene the coding DNA. These regions are eliminated post-transcriptionally. For clarity-sake I have disregarded them in my answer.
However, one has to realize that this coding of DNA is only important phsyiologically during translation, i.e., when mRNA is being translated into a protein. It is the ribosome that actually reads the codons and stop codons to determines which amino acid is to be incorporated in the growing protein and when to stop translation. Hence, although we read DNA sequences in terms of codons, the cellular machinery doesn't read DNA, it reads mRNA.