Ethernet uses a sliding window to resend lost frames (error correction). It uses a sequence number to account for unordered frames (error correction). It has a frame check sequence to discard corrupted frames (error detection). Does this makes it "reliable"?
Not even remotely. There are no mechanisms for signaling a dropped frame (or why it was dropped -- CRC error, too small ("runt"), too big, no buffer space), thus there is no means to know what needs to be resent. There are no sequence numbers in ethernet frames -- the payload may contain one.
The only time ethernet will resend a frame is when the transmitter knows a collision occurred. But with 99.99999% of gear being full duplex today, collisions never happen.
BTW, this is why iSCSI SANs use special switches with very large internal, per-port buffers. And why FCoE (fibre channel over ethernet) uses special hardware. Both require a reliable transport, and ethernet on it's own isn't.