Internet routing questions.

My understanding of how data is passed on the net is the data arrives at a server. The server ‘asks for’ or ‘reads’ the data’s destination, the server then sends the data on its way based on the destination info to the next server. This process in continued till the data arrives at its destination. So the servers ‘decide’ the path.

Q1 - is the above basically correct?
Q2 - if the above is basically correct: can the data be sent with specific routing information, so the data’s path is not determined by the server but the instructions carried with the data?
Thanks.

The above is essentially correct, although you generally use the term ‘router’, rather than the more generic ‘server’.

Data can be sent with a specific route but usually only for local networks. It requires the routes to be hard-coded at the router level. The actual data itself cannot control it, due to the way the protocols are written. For broader networks, a hard coded routing table is impractical and grossly inefficient, since optimal routes are always changing.

Data sent over the internet is sent via the “Internet Protocol”, or IP. We’re mostly still on IPv4, though we’ll have to move onto IPv6 sooner or later.

Under this protocol, data packets have a ‘header’ and a ‘body’. Obviously, the ‘body’ contains the relevant data to be transmitted. The ‘header’ contains control information, including the source and receiver addresses. But it doesn’t really contain enough space to include in-between routing addresses. You’d be making the ‘header’ much bigger than the ‘body’ by trying to do so, i.e. a ton of overhead for little result.

So, think of it like the US postal system. You specify the source and receiver addresses, but you let the Post Office handle the actual routes in between. The beauty of this system is that the routers in-between are constantly updating their routing tables, so you tend to get an optimal (or near optimal) route between source and receiver.

Adding your own preferred routing would be like adding all in-between Postal service centers to the envelope. You’d have to cram a ton of information to the front of the envelope, and it would serve little purpose, in general (the US postal service already routes very efficiently).

Of course, you are free to set up your own Internet Protocol that will allow for user-specified routing. But it’s like setting up your own postal system. You’d need to distribute it to all machines and establish the routing protocol yourself. It’s certainly possible, but it’s horrendously expensive.