For the one-off version of the game, the best strategy is always to defect since there is no chance of retaliation.
It gets more interesting for an iterated version since players can respond to their opponents' previous choices.
If we know in advance exactly how many rounds there will be, then the logical "best" strategy is still to defect always. This is because it always makes sense to defect on the last turn since there is no chance of retaliation. Of course, our rational opponent will know this and also always defect on the last turn. This makes it sensible for us to defect on the penultimate turn since there is no chance of cooperation on the final turn anyway. Following this logic to its natural conclusion, we should defect on every turn.
When the total number of rounds is unknown, things become more interesting. A good strategy for the game should try to predict what an opponent will do. I researched using evolutionary algorithms and simple machine learning with opponent modelling to generate strategies for the game for my masters degree. If you're really interested, you can read my thesis.
As recommended by Yuval, probably the best place to start is Axelrod's seminal book. If you're really, really interested in this stuff, there was a 20th anniversary follow-up that included a lot of the more recent work on IPD (the Iterated Prisoner's Dilemma) by other researchers.
Also, I'd thoroughly recommended William Poundstone's Prisoner's Dilemma, which is part biography of John von Neumann and part introduction to game theory.