One simple explanation is that R3 needs to determine which tunnel the packet came from. It's often that there may be more than one tunnel terminating on the same interface on R3.
EDIT:
More importantly, if you allow the tunnel configuration on R3 to specify a different endpoint, there's no guarantee that that address is actually on R1-- it could be anywhere. That would mean the interface for the other end of the tunnel, 10.0.0.1, could exist in two different places. That will cause, as we say, a bad routing day.
Another explanation is that it allows keepalives so R1 and R3 know that the other end other end of the tunnel is up.
You can certainly have asymmetric paths if you want. That depends on the route information on R3.
For your question about the hub, consider a hub a powered cable. It simply repeats any signal from one interface to all the other interfaces, and it does not know anything about frames or MAC addresses.
Depending on how Router 1 is configured, it may just send a redirect back to Router 2 to tell it to send the packet to Router 3.
You also seem to have really left out the transport protocol. You did mention TCP and UDP at first, but those sit between the application and IP. TCP and UDP are separate protocols, and IP will see the protocol number in its header, and it will deliver the payload of the IP packet to the correct transport protocol. While TCP and UDP both have addresses (called ports) that are the same number range, they are not the same ports (TCP port 5678
is not UDP port 5678
).
The application will open a port with whichever transport protocol is used, and IP will encapsulate that datagram in an IP packet. The data-link protocol (ethernet?) will encapsulate the IP packet inside a data-link frame that gets encoded and signaled on the wire to the host gateway.
The host gateway router will strip off the frame, look up the destination address in its routing table, and create a new frame for the next interface to encapsulate the IP packet. This happens for every router hop, with the final router sending it out the destination network address.
The host will receive the final frame, and look at the Ether Type (or equivalent for whichever protocol it uses). The data-link protocol will send the frame payload (IP packet) to the process indicated in the frame Ether Type (IP). IP will then look at the packet header to see the protocol number, and it will send the packet payload to the correct transport protocol (TCP, UDP, etc.). The transport protocol will then send the datagram payload to the application registered to it (TCP and UDP use ports for this, other transport protocols may do something else).
Replies follow the same path in reverse.
Best Answer
What you are looking for is specified in RFC1812. To answer your specific questions:
The router would drop the packet when it sees the TTL is too low after it decides to forward it:
The receiving host doesn't check the TTL so even though a packet with TTL 0 should not be sent the receiving host will process it anyway: