At source: Application layer transmit the message. TCP adds the header to the message and sends this segment to IP.
Network layer now adds IP header, puts TTL value, checksum and then, passes IP packet down to data link layer.
Data link layer puts this IP packet into ethernet frame, adds the preamble and Starting Frame delimiter and transmits the frame with CRC.
Physical layer encodes the frame from DLL into 0's and 1's.
Now What happens at each Router:
The router receives the packet,
Physical layer decodes the bitstream, data link layer checks the frame for errors using CRC, passes to the network layer, the network layer sees the destination address as D and decides to route it to another router, decrements the TTL, recomputes the checksum and sends the packet down to the data link layer.
The data link layer changes the destination MAC address to the MAC address of the next router (or destination D if the router is the second one), recalculates CRC and sends the frame.
The physical layer again passes the frame as sequence of 1's and 0's.
At Destination: The physical layer decodes the message and passes it to the data link layer. Data link layer checks for errors and passes the IP packet to the network layer. The network layer checks the destination address and accepts it.
Here confusion is why network layer at routers R1 and R2 is visited only once?
Because the routers R1 and R2 don't have to consume the information present in the message, otherwise, this should have been passed on to the transport layer and application layer and then back to network layer again.
Data link layer will be visited twice per router because the routing decision is involved and this will be made only by the network layer.