SHARE

Paket-paket data dalam Internet Protocol (IP) dikirim dalam bentuk datagram yang terdiri atas Header yang berukuran 20 hingga 60 byte dan Data yang berukuran 8 hingga 65515 byte. Pada artikel sebelumnya mengenai “Tips Mudah Subnetting” telah dibahas bahwa IP terdiri atas dua versi, yaitu IP versi 4 dan IP versi 6 dimana setiap versi memiliki Header dengan fungsi yang berbeda.

Pada artikel kali ini akan lebih menekankan untuk pembahasan mengenai Paket IP versi 4, sedangkan Paket IP versi 6 akan dibahas pada artikel berikutnya bersamaan dengan cara Decoding Paket IP versi 4 dan 6. Gambar dibawah ini merupakan bentuk format Header dari Paket IP versi 4.

Pembagian Header pada IPv4 | sumber gambar: Wikipedia

Header dari IP versi 4 terbagi menjadi 14 field yang memiliki fungsi dan informasi yang berbeda, berikut ini adalah sebagai rinciannya :

Version
Field 4-bit ini menunjukkan versi IP dari Header paket, dimana untuk IP versi 4 diatur dalam nilai biner berupa 0100 dari nilai 4.

Internet Header Length (IHL)
Field 4-bit ini menunjukkan panjang Header dari paket IP dengan kelipatan 32-bit. Nilai minimum dari field ini adalah 5 yang mengindikasikan bahwa 5 x 32 bit = 160-bit : 8 = 20 byte, sedangkan untuk nilai maksimumnya adalah 15 yang mengindikasikan bahwa 15 x 32 = 480-bit : 8 = 60 byte.

Differentiated Service Code Point (DSCP)
Field sebesar 6-bit ini menggantikan Field Type Of Services (TOS)

Explicit Congetion Notification (ECN)
Field sebesar 2-bit ini

Total Length
Field 16-bit ini menunjukkan panjang keseluruhan paket IP termasuk Header dan Data dalam bentuk byte.

Identification
Field 16-bit ini digunakan untuk mengidentifikasi paket IP yang akan difragmentasikan.. Jika panjang paket yang sebenarnya melebihi medium transmisi yang akan dilewati sesuai dengan standar Maximum Transmission Unit (MTU) maka paket-paket harus difragmentasi menjadi paket yang lebih kecil.

Flags
Field 3-bit ini digunakan untuk mengatur tindakan pada router untuk diperbolehkan atau tidaknya melakukan fragmentasi pada paket, dengan rincian sebagai berikut :
Bit pertama tidak digunakan dan diatur dengan nilai “0”
Bit kedua digunakan untuk mengatur nilai Dont Fragment (DF) dimana ketika diatur dengan nilai “1” maka router tidak dapat melakukan fragmentasi terhadap paket. Jika paket tidak dapat diteruskan tanpa dilakukan fragmentasi terlebih dahulu, maka router akan membuang paket dan mengirim pesan error. Fungsi ini dapat digunakan untuk melakukan pengujian MTU dalam suatu network baik secara otomatis melalui software host IP ataupun secara manual dengan menggunakan ping atau traceroute.
Bit ketiga digunakan untuk mengatur nilai More Fragment (MF) dimana ketika diatur dengan nilai “0” maka fragmentasi akan berhenti, namun ketika diatur dengan nilai “1”maka fragmentasi akan berlangsung lagi.

Fragment Offset
Field 13-bit ini digunakan untuk menentukan offset dari awal header sampai awal fragment yang diukur dalam format 8 byte (64-bit). Field ini memungkinkan potongan-potongan fragment yang datang secara tidak berurutan dapat disusun kembali sesuai dengan urutan aslinya. Berikut adalah contoh menentukan offset dari sebuah paket :

Misalnya untuk MTU 1.500 byte dan ukuran Header 20 byte maka fragment offsetnya akan kelipatan 185, dimana nilai ini diambil dari (MTU – (MTU + Header)) / 8 = (1500 – 1520) / 8 = 185. Kelipatan ini dimulai dari 0, 185, 370, 555, 740, … dst.

Hal ini berlaku hanya untuk paket yang terfragmentasi hanya pada satu router, namun untuk paket yang akan terfragmentasi pada router lain dapat berbeda seperti berikut ini :

Misalnya untuk panjang paket sebesar 4500 byte dan ukuran Header 20 byte, sehingga ukuran paket keseluruhan adalah 4520 byte dan paket akan dikirim melalui link dengan MTU 2500 byte. Maka akan menjadi dua fragment :

Fragment Total Length Header Byte Data Byte “MF” Flag Fragment Offset
1 2500 20 2480 1 0
2 2040 20 2020 0 310

Cara mendapatkan nilai offset-nya adalah sebagai berikut :
Data Byte diperoleh dari hasil Total Lenght – Header Byte = 2480, fragment offset pertama selalu diawali dengan nilai “0”. Panjang paket sebesar 2500 karena disesuaikan dengan nilai MTU.

Nilai Fragment berikutnya diperoleh dari nilai Fragment offset sebelumnya + (Data Byte / 8), yaitu 0 + (2480/8) = 310.
Nilai MF pada fragment pertama bernilai “1” dikarenakan panjang paket melebihi MTU, sehingga masih perlu dilakukan fragmentasi lagi.
Nilai Data Byte dari Fragment kedua diperoleh dari Total Length – nilai Data Byte sebelumnya, yaitu 4500 – 2480 = 2020. Nilai Header byte tetap 20 byte, sehingga dari hasil ini dapat ditentukan Panjang Paket yang tersisa sebesar 2020 + 20 = 2040.
Nilai MF pada fragment kedua bernilai “0” dikarenakan Jumlah Byte tidak melebihi MTU.

Time To Live (TTL)
Field 8-bit ini digunakan untuk mengatasi masalah Rooting Loop, dimana ketika sebuah paket hanya berputar-putar dijaringan dan tidak pernah mencapai tujuannya. Saat ini TTL menggunakan ukuran metric hop count sebagai nilai dari fieldnya, dimana setiap kali paket tiba dari router ke router maka setiap router akan mengurangi nilai hop. Ketika nilai TTL mencapai nol maka router akan membuang paket tersebut dan memberikan pesan bahwa paket telah Melebihi Waktu ICMP. Nilai TTL yang biasanya sering dipakai adalah sebesar 15 dan 32.

Protocol
Field 8-bit ini mengidentifikasi jenis protokol yang digunakan untuk informasi paket yang akan ditujukan. Nilai dari jenis protokol ditentukan dari List of IP Protocol Numbers, misalnya informasi paket akan ditujukan melalui protokol ICMP maka Field ini akan diatur dalam nilai Hexa 0x01 atau biner 0000 0001.

Header Checksum
Field 16-bit ini digunakan untuk mendeteksi error pada Header IP. Ketika paket tiba, router akan menghitung dari checksum header dan membandingkannya dengan field checksum dimana jika nilai tidak cocok maka router akan membuang atau mengabaikan paket. Untuk menghitung checksum dari semua field di dalam Header IP, maka nilai checksum akan diatur ke nilai nol. Untuk lebih jelasnya, berikut adalah contoh perhitungan dari checksum header :

Misalnya, router menerima paket header IP sebesar 20 byte dalam bentuk bilangan hexadecimal berupa  4500003044224000800600008C7C19ACAE241E2B16. Pertama, menghitung checksum headernya dengan membagi paket dalam masing-masing nilai sebesar 2 byte yang kemudian akan dijumlahkan sebagai berikut :

450016 + 003016 + 442216 + 400016 + 800616 + 000016 + 8C7C16 + 19AC16 + AE2416 + 1E2B16 = 0002BBCF total 32-bit.
000216 + BBCF16 = BBD116 = 10111011110100012
~BBCF = 0100010000101110 = 442E16 (Nilai komplemen dari checksum header)

Selanjutnya adalah membandingkan nilai Checksum Header dengan nilai Field Checksum sebesar (0), cara untuk validasinya adalah sebagai berikut :

450016 + 003016 + 442216 + 400016 + 800616 + 000016 + 8C7C16 + 19AC16 + AE2416 + 1E2B16 + 442E16 = 2FFFD16
000216 + FFFD16 = FFFF16 = 11111111111111112
~FFFF16 = 000016

Dari hasil perhitungan dan perbadingan ini, maka dapat disimpulkan bahwa tidak terdapat error pada Header IP tersebut.

Sebagai catatan, ketika sebuah paket tiba setiap router maka nilai pada field TTL juga ikut berkurang sehingga router harus menghitung checksum yang baru setiap kali nilai TTL berubah.

Source dan Destination Address
Kedua Field ini masing-masing sebesar 32-bit yang berisi informasi mengenai alamat IP dari Host pengirim dan penerima / tujuan. Mengenai Format Alamat dari IP versi 4 sebelumnya telah dibahas pada artike “Tips Mudah Subnetting”.

Options
Field ini bersifat optional dan hanya digunakan apabila nilai IHL atau panjang header diatas 5 = 20 byte, field ini biasanya juga sering juga disebut dengan panjang header yang variable. Field ini biasanya digunakan untuk keperluan testing dan debugging. Kemungkinan options yang dapat dimasukkan ke dalam header adalah sebagai berikut :

Copied
Option ini berukuran 1-bit, digunakan jika options perlu disalin ke semua fragment dari paket yang terfregmentasi ketika nilainya diatur ke “1”.

Option Class
Option ini berukuran 2-bit, digunakan untuk kategori option yang umum. Misalnya “0” untuk option kontrol dan “2” untuk debugging dan pengukuran sedangkan untuk 1 dan 3 dicadangkan.

Option Number
Option ini berukuran 5-bit, digunakan untuk menentukan option.

Option Length
Option ini berukuran 8-bit, digunakan untuk menunjukkan ukuran seluruh option termasuk untuk field ini.

Option Data
Option ini berukuran Variabel yang berisi data option khusus/spesifik.

Keterangan lebih lengkap mengenai informasi options – options tersebut dapat dilihat pada link berikut ini.

1 COMMENT

Berikan komentar

This site uses Akismet to reduce spam. Learn how your comment data is processed.