My kids learned no hitting at 18 months because we were very strict about it. Alas, the parks and day cares are teeming with little hitters and their "nice hover parents" who don't effectively teach the kids NEVER to do that, so I see this type of behavior a LOT.
I had to teach my son to hit back at age 2 1/2 when he was getting hit EVERY SINGLE TIME he was in my gym daycare by the SAME bratty kid (that kid was three). I even let his mom know, that if she couldn't discipline her son, I'd have to let mine defend himself. My son was getting scared to go in and crying when I said I was going to the gym. I took my son home, practiced with him about how to hit "back" and never "first". I told my older daughter to watch him, and I let the daycare lady know. The next time the kid hit my son, my son pushed him down. That kid cried like crazy and left my son alone after that. That kid later hit an infant in the head with a toy truck and the infant's dad FREAKED and the kid and his mom quit coming to the gym. All the while she did nothing more than time outs for the aggressive behavior. So one day her son will have to learn the hard way form someone else not to be a bully-because he will hit the wrong kid one day-and there is only one logical consequence when that happens....
ANYWAY. My son is now 4 and almost a yellow belt in Tae Kwon Do. None of my kids would EVER attack another child, but they all know how to yell "NO, STOP" and to hit back. My older two now understand to tell an adult, and we tell them to always go to the side of kids being hit and to yell at kids who are hitting.
It's all you can do, but don't panic yet. Your son is not destined to be a victim forever just because he's not naturally aggressive like these brats. Just work with him and give him permission to yell and fight back. One of the kids in my son's class in TINY for his age, and he's one of the toughest kids! My son's Tae Kwon Do had age 4 as minimum age, so I think he's a bit young for self defense class, but you can teach him.