I'm a newbie in network programming in C/C++ and I'm working on raw sockets to program a simple ping or traceroute application as they are written in common network programming books.
Programs like traceroute, manipulate packet headers like TTL so that they can retrieve router IP addresses.
I know that routers are designed to find best routes by finding nearest routers in a simple manner.
I was wondering if it's possible to find a way to manipulate packet headers in a way that packets force a router to choose a specific route instead of their default route, I mean to manipulate packets the way traceroute does and create a manual route to destination.
In first step, is it even possible? if not and there's any similar way to achieve this goal, what is it?