Ethernet vs TCP vs IP?
Imagine one of those pneumatic tube message systems. Ethernet is the tube used to send the message, IP is an envelope in the tube, and TCP/UDP is a letter in the envelope.
Someone (an application) writes a letter and stuffs it in an envelope. Another person (a NIC) looks at the address on the envelope, puts it in a tube, caps it off, stuffs it in the right door to bring it closer to its destination, then pushes the button.
The tube gets carried to another door, where someone (a router) opens the tube, reads the address, puts it back in the tube, and sends it through another door.
Eventually it arrives at its destination, where the NIC on the other side picks it up and gives it to the application.
This is, of course, a vast oversimplification of what actually happens, but it is a fairly decent base on which to start.
Anyone of them used in a layer. Ethernet in layer 2, IP in layer 3 and TCP in layer 4 (Layer numbers are based on OSI model).
Every of them has dutty of packet delivery from one thing to another:
Ethernet : From one hop to another (hop means directly connected device)
IP: From one end to another (remote device or connected device)
TCP: From one process to another (process running on the two ends)
Greatly simplified and potentially inaccurate. ;) tcp (Transmission Control Protocol) and ip (Internet Protocol) are software protocols. They work at different layers of the networking stack. Ethernet is the medium that it transmits over versus thing likes token ring, fiber, etc. describing the physical layer of the stack.