What happens when a packet gets lost or corrupted? Mostly flow control is in the data link layer with acknowledgements. Does this happen on network layer as well like among multiple networks. A packet is encapsulated in a frame so do two machines on two networks send acknowledgments for a each received frame(containing a packet)?
On the network layer and the data link layer, packets/frames are generally not acknowledged (with few exceptions). The protocols use robust designs but lost packets stay lost. If required, recovery needs to take place on higher layers.
Some transport layer protocols acknowledge data (most prominently TCP) while others do not, for instance UDP.
Note that TCP doesn't need to acknowledge every single segment but it can acknowledge "in bulk", up to a certain point. Also note that TCP doesn't wait for each segment to get acknowledged before it sends the next one. Instead, it uses a transmission window where acknowledged data slides out, allowing fresh data to slide in.
The intention behind this is to keep intermediate network devices very simple (the ability to wait for acknowledgements and resend lost data requires data buffering) and let the end nodes take care of reliability.