All excellent answers. I would only add that unit testing tends to regard the 'unit' as a small component, while TDD scales up to include integration and acceptance tests.
(Some TDD variants regard the 'unit' as the smallest incremental step towards the desired functionality...)