M.S.
Punishment won't work. You need to address the problem... that he is frustrated and can't come up with the words to expess it.
Show him how to stomp, or acceptable things to hit, or whatever other response would be acceptable for you, but can vent pent up frustration. He wants so badly to behave, but when the feelings build up, he needs a way to get them out and express them. My 20 month old son hits a table or wall. He also does sign language, so we taught him the sign for "frustrated". It would also help if you verbally told him what his feelings were. Instead of saying "no, you can't have candy now", say " I know you really want candy, but mommy said no" when you see the frustration building, act frustrated yourself and say "I know, you are so frustrated because you want it!". Show him by example what you expect him to do. After all, you are frustrated that he can't always have what he wants too.
When he gets more words, this phase will pass as long as you don't let the behavior become the only way he knows to express himself.