Der Protokollkopf eines IP-Datagramms wird meist IP-Header genannt. Er enthält unter anderem die IP-Adressen der beiden an der Kommunikation beteiligten Rechner (Quell- und Zielrechner). Dazu kommen weitere Kontroll- und Steuerinformationen. In dem vorliegenden Abschnitt werden alle Felder des Protokollkopfs kurz vorgestellt, weil sich in ihnen große Teile der Arbeitsweise des Protokolls niederschlagen. Das folgende Diagramm zeigt den IP-Header mit all seinen Feldern wie üblich in einer Breite von 32 Bits (4 Bytes):
Das erste Feld des Protokollkopfs hat eine Größe von 4 Bits. Die das Datagramm erzeugende IP-Station trägt hier die Versionsnummer des Protokolls ein, das sie benutzt hat. Bei IPv4 steht hier immer die Zahl 4. An der gleichen Stelle und in der gleichen Größe steht im Protokollkopf von IPv6 die Zahl 6. Das Feld wurde vorgesehen, damit Router prüfen können, ob diese Protokollversion in angeschlossenen Netzen verfügbar ist.
Das zweite Feld ist ebenfalls ein 4 Bits großes Feld. Seine Kurzbezeichnung HL steht für Header Length, sein Inhalt gibt die Größe des aktuellen IP-Headers an. Um diese Größe in Bytes zu erhalten, muss der Wert des HL-Feldes mit 4 multipliziert werden. Dieses Feld ist notwendig, weil der IP-Header genau wie der TCP-Header (vgl. Abschnitt 4.4.4) ein variabel großes Optionenfeld am Ende des Protokollkopfs enthält. Da die ersten 20 Bytes des IP-Headers zwingend vorhanden sein müssen, muss das HL-Feld mindestens den Wert 5 enthalten. Der maximale Wert eines 4 Bits großen Felds ist 15, weshalb ein IP-Protokollkopf eine Größe von höchstens 60 Bytes annehmen kann.
Dieses Feld mit einer Länge von 8 Bits kann Hinweise an Router enthalten, die sich auf die Dringlichkeit der Behandlung eines Datagramms beziehen. Nur die wenigsten Router werten dieses Feld aus.
Das nächste Feld hat eine Länge von 16 Bits. In ihm wird die Gesamtlänge des Datagramms einschließlich des Protokollkopfs angegeben. Gemessen wird diese Länge in Bytes. Durch die Größe dieses Felds wird die Gesamtlänge eines IP-Pakets einschließlich seines Headers auf maximal 65.535 Bytes (216-1 Bytes) beschränkt.
Diese drei Felder, die zusammen 32 Bits (4 Bytes) einnehmen, dienen der Fragmentierung und Reassemblierung von Quelldaten. Ihre Verwendung ist bereits im Abschnitt 5.3.1 (IPv4-Eigenschaften) beschrieben worden.
In einem Verbund von Netzwerken muss verhindert werden, dass bei der Weitergabe von Datagrammen durch Router durch ungeeignete Wegfestlegungen bestimmte Datagramme endlos lange zyklisch durch den Verbund laufen. Dazu dient dieses 8 Bits große Feld, wobei TTL für Time To Live steht. Es wird folgendermaßen verwendet: Bei der Erzeugung eines Datagramms belegt die IP-Station das TTL-Feld mit einem Anfangswert. Jeder Router, der ein Datagramm zur Weitergabe erhält, vermindert den Wert des Felds um 1. Wird dadurch der Wert 0 erreicht, wird das Datagramm nicht mehr weitergeleitet sondern verworfen und der Absender durch eine ICMP-Meldung über diesen Sachverhalt verständigt. Anderenfalls wird das Paket mit dem reduzierten Wert weitergegeben. Maximaler Anfangswert ist 255 (28-1), ein typischer Wert ist 64.
In diesem 8 Bits großen Feld wird eingetragen, zu welchem in der DoD-Hierarchie übergeordneten Protokoll dieses Datagramm gehört. Hier stehen beispielsweise Zahlenwerte für TCP und UDP.
Bevor ein Datagramm gesendet wird, wird eine 16 Bits große Prüfzahl berechnet, die nur die Felder des Protokollkopfs einbezieht. Es würde zu weit führen, hier auf die Berechnungsformel einzugehen. Die das Datagramm erhaltende IP-Station und auch jeder Router auf dem Weg von der Datagrammquelle bis zum Ziel prüft diese Zahl. Wird dabei ein Prüfzahlfehler festgestellt, dann verwirft die den Fehler erkennende IP-Station das Datagramm und verständigt den Absender per ICMP-Meldung über diesen Sachverhalt.
In diesen beiden 32 Bits großen Feldern stehen die IP-Adressen des sendenden und des empfangenden Rechners.
Optionale Felder sind für den Protokollkopf nicht festgelegt. Ihre Anzahl ist im Prinzip beliebig, allerdings ist der Umfang der Optionen durch das bereits behandelte Feld HL (Header Length) beschränkt. Auf zwei immer wieder diskutierte mögliche Optionen soll kurz hingewiesen werden:
Um als Größe des Protokollkopfs stets ein Vielfaches von 4 Bytes zu bekommen, wird gegebenenfalls am Ende das Optionenfeld mit Füllzeichen, verwendet werden Nullen, aufgefüllt.