Die Flexibilität des IP-Protokolls wird dabei unter anderem durch folgende Features erreicht:
Das IP-Protokoll ist dabei ein ''best-effort''-Protokoll, d.h. IP garantiert nicht die sichere Zustellung von Datenpaketen an das Ziel, es garantiert nur bestmögliche Bemühungen. Ein Datenpakete kann unterwegs verloren gehen, weil
Alle diese Punkte, die die Verläßlichkeit einer Datenübertragung betreffen, sind in der TCP-Schicht zusammengefaßt.
Die primäre Funktion von IP besteht darin, Daten von TCP oder UDP anzunehmen, in Datagramme zu verpacken, sie durch das Netzwerk zu routen und auf dem Zielrechner auszuliefern. Jedes Datagramm wird unabhängig transportiert.
IP ist dabei auf zwei Tools angewiesen, die ihm beim Routen behilflich sind:
Ein Beispiel: Dem Bürgernetzverein Altmuehlnet steht ein sog. Viertel-C-Class-Netz zur Verfügung, das heißt, er kann die IP-Adressen im Bereich von 194.95.203.192 bis 194.95.203.255 für sein lokales Netz benutzen. In diesem Fall lautet die Subnet Mask wie folgt:
11111111 11111111 11111111 11000000 (= 255.255.255.192)
Ein lokaler Rechner, der Daten z. B. von 194.95.203.250 nach 194.95.203.196 senden will, verknüpft die Adresse des Zielrechners sowie die eigene Adresse mit logisch UND mit der Subnet Mask und erhält beide Male das gleiche Ergebnis (nämlich 194.94.203.192). Dadurch weiß der sendende Host, daß der Zielrechner sich im gleichen lokalen Netz befindet, und die Daten direkt, also ohne zwischengeschalteten Router, an das Ziel übertragen werden können (direktes Routing).
Will der Rechner 194.95.203.250 jedoch nach 194.95.203.135 senden, so ergibt die Verknüpfung für den ersten Rechner als Ergebnis 194.95.203.192, für den zweiten jedoch 194.95.203.128. Die beiden Werte sind nicht identisch, also müssen die Daten indirekt über einen Router verschickt werden (indirektes Routing).
Angenommen, wir wollen Daten von 194.95.203.195 (birne.altmuehlnet.baynet.de) nach 129.187.214.197 (olifat.cip.informatik.uni-muenchen.de) senden. Durch eine Überprüfung der Subnet Mask ist schnell klar, daß sich der Zielrechner nicht im lokalen Netz befindet. Für diesen Fall hat der sendende Rechner eine sog. Routing Table zur Verfügung, in der drinsteht, an welchen Rechner (Router) Daten, die für die Außenwelt bestimmt sind, weitergeleitet werden sollen. Es ist möglich, daß in einem lokalen Netz ein Router für sämtlichen Netzverkehr nach außen zuständig ist, es kann aber auch sein, daß für unterschiedliche Zieladressen unterschiedliche Router verantwortlich sind. Welcher Router für welchen Teil des Außenweltnetzes zuständig ist, steht in der Routing Table. (Siehe auch Abbildung 1.)
Der Grund für diese einfache Verfahrensweise ist, daß ein sendender Host nicht den kompletten Weg zum Zielrechner kennen muß. Es reicht, wenn er weiß, wo er den nächsten Router erreichen kann; dieser leitet dann die Datenpakete auf die gleiche Art und Weise weiter, bis die Daten schließlich am Ziel sind.