IP data transfer across an internet is based on three fundamental
principles:
Unreliable delivery
delivery of data is not guaranteed. A datagram may be lost
(dropped, discarded, etc) in the network, may be duplicated (ie:
delivered twice) or may be delivered out of order. The IP service
will not detect such conditions, nor will it notify the sender or
receiver if they occur.
Connectionless delivery
each packet is treated entirely indpendently of all others. No
information is kept as to which packets have been forwarded, and
packets may travel over different routes to the same
destination.
Best-Effort delivery
the packet delivery mechanism is engineered to always deliver
packets if possible. It will not gratuitously drop packets:
unreliability should only occur when underlying resources (eg
buffer space) are exhausted.
These specifications allow the IP service to concentrate on its
job: delivering packets. As we have seen, higher level protocols
(usually TCP) transform the IP service into a reliable, sequenced
interprocess communications mechanism