What types of food is he grazing on throughout the day? The typical snack foods geared towards toddlers like crackers, puffs, etc. do not have much nutrition like protein or fiber. Because of this, kids can keep eating them mindlessly without ever feeling too full... until dinner rolls around!
My recommendation is to set some more structure to your daily eating pattern. Toddlers have small bellies and they do need to eat ever 2-3 hours, so snacks are essential. Instead of offering unlimited amounts of snack foods whenever your child requests them, try setting a snack schedule and offering nutritious options. Fruits and veggies with a side of natural peanut butter or hummus are some of my favorite options. A snack like this will help your child feel more satisfied and stay satisfied until dinner 2-3 hours later.
All of this is sometimes easier said than done! It will take some time for your son to get used to the new routine-- that's okay! If you stick with the routine, eventually he will get used to it and start to be able to manage his hunger well. If you find that he truly is hungry between meals and snacks, try offering vegetables only and see what he does. If he truly is hungry, he'll eat whatever you offer. If he says he hungry but declines veggies and asks for crackers instead, it's a sign he might not be truly hungry but just craving or bored. By giving him this structure, you will help him to be able to identify hunger vs non-hunger eating and develop a healthy relationship with food. That's a skill that will serve him well for the rest of his life!