TCP uses special rules to make IP Reliable, even though it would otherwise be unreliable.
It seems you're looking for more of a conceptual understanding, so I'm going to give an example without actually referring to the true inner workings of TCP.
Say you and I were chatting on a Two-way Radio (or Walkie Talkie). I can hit the transmit button and say something, but I have no way to make sure you received anything. In this example, the Walkie-Talkie is "IP" -- an unreliable protocol.
Say you and I decided to do something above and beyond IP, and employed the following rules when using our Two-way Radios:
- Whenever I finish speaking, I say "over"
- Whenever you hear me say "over", You repeat back to me the first word and the last word I said (before "over")
- Whenever I hear you acknowledge my first and last words, I will say "acknowledgement received"
- Once you hear "acknowledgement received", you are then free to speak on the radio.
If at anytime, one of us does the above but doesn't hear the expected response after 5 seconds, we repeat the last thing we said.
These "set of rules" are effectively what TCP calls for. In following these rules, we can make what would otherwise be an unreliable communication medium (Two-Way Radio / IP), a reliable communication method (TCP).
So as others have said, the "unreliability" of IP does not negate the "reliability" of TCP. TCP simply uses IP with smart acknowledgements to make communication using TCP/IP reliable. TCP by itself can not handle sending packets from one host to another, all it can do is apply certain rules to an 'end to end' delivery scheme (like IP), to make that delivery scheme more reliable.
Hope this helps.