Protokol Internet
Header IP

Header IP terdiri atas beberapa field sebagai berikut:
| Field | Panjang | Keterangan |
| --- | --- | --- |
| Version | 4 bit | Digunakan untuk mengindikasikan versi dari header IP yang digunakan. Karena memiliki panjang 4 bit, maka terdapat 24=16 buah jenis nilai yang berbeda-beda, yang berkisar antara 0 hingga 15. Meskipun begitu hanya ada dua nilai yang bisa digunakan, yakni 4 dan 6, mengingat versi IP standar yang digunakan saat ini dalam jaringan dan Internet adalah versi 4 dan 6 merupakan singkatan dari versi selanjutnya (IPv6). Lihat situs web IANA untuk informasi mengenai field ini lebih lanjut. |
| Header length | 4 bit | Digunakan untuk mengindikasikan ukuran header IP. Karena memiliki panjang 4 bit, maka terdapat 24=16 buah jenis nilai yang berbeda-beda. Field header length ini mengindikasikan bilangan double-word 32-bit (blok 4-byte) di dalam header IP. Ukuran terkecilnya adalah 5 (0x05), yang menunjukkan ukuran terkecil dari header IP yakni 20 byte. Dengan jumlah maksimum dari IP Options, ukuran header IP maksimum adalah 60 byte, yang diindikasikan dengan nilai 15 (0x0F). |
| Type of Service (TOS) | 8 bit | Field ini digunakan untuk menentukan kualitas transmisi dari sebuah datagram IP. Ada dua jenis TOS yang didefinisikan, yakni pada RFC 791 dan RFC 2474. Hal ini akan dibahas pada seksi berikutnya. |
| Total Length | 16 bit | Merupakan panjang total dari datagram IP, yang mencakup header IP dan muatannya. Dengan menggunakan angka 16 bit, nilai maksimum yang dapat ditampung adalah 65535 byte. Untuk datagram IP yang memiliki ukuran maksimum, field ini memiliki nilai yang sama dengan nilai maximum transmission unit yang dimiliki oleh teknologi protokol lapisan antarmuka jaringan. |
| Identifier | 16 bit | Digunakan untuk mengidentifikasikan sebuah paket IP tertentu yang dikirimkan antara node sumber dan node tujuan. Host pengirim akan mengeset nilai dari field ini, dan field ini akan bertambah nilainya untuk datagram IP selanjutnya. Field ini digunakan untuk mengenali fragmen-fragmen sebuah datagram IP. |
| Flag | 3 bit | Berisi dua buah flag yang berisi apakah sebuah datagram IP mengalami fragmentasi atau tidak. Meski berisi tiga bit, ada dua jenis nilai yang mungkin, yakni apakah hendak memecah datagram IP ke dalam beberapa fragmen atau tidak. |
| Fragment Offset | 13 bit | Digunakan untuk mengidentifikasikan ofset di mana fragmen yang bersangkutan dimulai, dihitung dari permulaan muatan IP yang belum dipecah. |
| Time-to-Live (TTL) | 8 bit | Digunakan untuk mengidentifikasikan berapa banyak saluran jaringan di mana sebuah datagram IP dapat berjalan-jalan sebelum sebuah router mengabaikan datagram tersebut. Field ini pada awalnya ditujukan sebagai penghitung waktu, untuk mengidentifikasikan berapa lama (dalam detik) sebuah datagram IP boleh terdapat di dalam jaringan. Adalah router IP yang memantau nilai ini, yang akan berkurang setiap kali hinggap dalam router. |
| Protocol | 8 bit | Digunakan untuk mengidentifikasikan jenis protokol lapisan yang lebih tinggi yang dikandung oleh muatan IP. Field ini merupakan tanda eksplisit untuk protokol klien. Terdapat beberapa nilai dari field ini, seperti halnya nilai 1 (0x01) untuk ICMP, 6 (0x06) untuk TCP, dan 17 (0x11) untuk UDP (selengkapnya lihat di bawah). Field ini bertindak sebagai penanda multipleks (multiplex identifier), sehingga muatan IP pun dapat diteruskan ke protokol lapisan yang lebih tinggi saat diterima oleh node yang dituju. |
| Header Checksum | 16 bit | Field ini berguna hanya untuk melakukan pengecekan integritas terhadap header IP, sementara muatan IP sendiri tidak dimasukkan ke dalamnya, sehingga muatan IP harus memiliki checksum mereka sendiri untuk melakukan pengecekan integritas terhadap muatan IP. Host pengirim akan melakukan pengecekan checksum terhadap datagram IP yang dikirimkan. Setiap router yang berada di dalam jalur transmisi antara sumber dan tujuan akan melakukan verifikasi terhadap field ini sebelum memproses paket. Jika verifikasi dianggap gagal, router pun akan mengabaikan datagram IP tersebut. Karena setiap router yang berada di dalam jalur transmisi antara sumber dan tujuan akan mengurangi nilai TTL, maka header checksum pun akan berubah setiap kali datagram tersebut hinggap di setiap router yang dilewati. Pada saat menghitung checksum terhadap semua field di dalam header IP, nilai header checksum akan diset ke nilai 0. |
| Source IP Address | 32 bit | Mengandung alamat IP dari sumber host yang mengirimkan datagram IP tersebut, atau alamat IP dari Network Address Translator (NAT). |
| Destination IP Address | 32 bit | Mengandung alamat IP tujuan ke mana datagram IP tersebut akan disampaikan, atau yang dapat berupa alamat dari host atau NAT. |
| IP Options and Padding | 32 bit | [place holder] |