Internet Protocol: Pelajaran Praktek Pertamaku


Salah satu bidang komputer yang sangat menarik untuk dipelajari adalah networking. Sayangnya, aku tidak pernah punya kesempatan untuk menyentuh topik ini sebelumnya karena berbagai kendala. Untungnya, sekarang aku memiliki peluang untuk belajar. Tentu saja kesempatan ini tidak akan aku sia-siakan begitu saja karena sangat banyak yang belum aku mengerti. Aku akan mempelajari networking mulai dari nol. Internet adalah jaringan yang paling gampang di-akses, jadi topik yang pertama aku pelajari adalah Internet Protocol.

Sebagai bahan pembelajaran, aku menggunakan Wireshark untuk men-capture packet-packet yang dikirim saat aku membrowse sebuah situs, sebagai contoh developers.sun.com. Aku cukup terkejut karena Wireshark juga dapat men-capture frame PPP. Karena aku menggunakan koneksi dial-up melalui modem HP, sebenarnya aku mengakses jaringan Ethernet melalui emulasi PPP. Aku akan mencoba mempelajari frame PPP suatu hari nanti, sekarang aku ingin tahu bagaimana Internet Protocol bekerja.

Sebuah packet Internet Protocol (IP) dapat berukuran hingga maksimum 65.535 bytes. Tapi pada hasil capture-ku, packet IP yang terbesar berukuran di antara 1.280-2.559 bytes. IP memiliki kemampuan untuk membagi informasi ke dalam beberapa datagram yang lebih kecil sesuai kemampuan jaringan (disebut fragmentation), kemudian digabungkan kembali di komputer penerima (disebut reassembly).

Berikut ini adalah contoh datagram IP (sebenarnya hanya header saja):

xx xx xx xx xx xx xx xx    xx xx xx xx xx xx 45 00
00 30 00 a8 40 00 80 06    02 04 0a 0a ?? ?? 48 05
7c 41 yy yy yy yy yy yy    yy yy yy yy yy yy yy yy
...

Bagian yang diberi tanda “xx” adalah header Ethernet yang secara otomatis ditambahkan melalui proses yang disebut encapsulation. Bagian yang diberi tanda “yy” merupakan ‘isi’ dari packet IP tersebut.

Byte pertama berisi nilai 45 (heksadesimal) memiliki dua arti. Sebelumnya, aku menerjemahkan 45H ke dalam binary 0100 0101. Empat bit pertama dari binary tersebut, yaitu 0100 (atau dalam desimal, angka 4) menunjukkan versi IP yang aku pakai. Terlihat bahwa aku menggunakan IP versi 4. Versi lain yang mulai banyak didukung adalah IP versi 6 (IPv6). Lalu empat bit berikutnya, 0101 (atau dalam desimal, angka 5) menunjukkan ukuran header. Satuan yang dipakai adalah 32-bit (word). Jadi angka 5 menunjukkan header berukuran 5 words, atau 5 x 32-bit = 160 bit atau 20 bytes. Ini adalah ukuran paling minimum untuk sebuah header IP.

Byte berikutnya menunjukkan informasi Service Type, seperti datagram precedence, delay, throughput, dan reliability. Pada umumnya, byte ini tidak dipakai dan diberi nilai 0 (seperti yang aku jumpai pada sample latihanku).

Dua byte berikutnya menunjukkan total ukuran datagram dalam satuan bytes. Dalam contoh ini, dua byte tersebut adalah 0030H (atau dalam desimal, 48) yang menunjukkan ukuran datagram IP termasuk header adalah 48 bytes.

Dua byte berikutnya berisi angka identifikasi untuk IP tersebut. Angka ini adalah angka unik dan berperan penting jika datagram mengalami fragmentasi. Komputer penerima akan menggabungkan setiap fragment nantinya berdasarkan angka identifikasi yang sama.

Byte berikutnya berisi beberapa informasi. Pada contoh, nilainya adalah 40H atau 0100 0000. Bit pertama umumnya tidak dipakai. Dua bit berikutnya, menunjukkan nilai flag DF (Don’t Fragment) dan MF (More Fragment). Pada contoh, nilai DF adalah 1, menunjukkan bahwa datagram tidak di-fragmentasi. Jika nilai MF berupa 1, maka datagram ini masih memiliki sub-packet ‘sambungan’ lagi (ter-fragmentasi). Sub-packet yang terakhir akan memiliki MF dengan nilai 0.

Bit ke-empat hingga ke-delapan, 0 0000, digabungkan dengan byte berikutnya, 0000 0000, membuat angka 13-bit yang menunjukkan urutan (offset) setiap fragment. Oleh sebab itu, nilai ini hanya dipakai jika MF bernilai 1. Dengan adanya nilai ini, komputer penerima dapat menggabungkan kembali setiap sub-packet sesuai urutan walaupun sub-packet dikirim dengan urutan yang acak. Nilai maksimum untuk fragment offset adalah 8.191.

Byte berikutnya menunjukkan informasi Time To Live (TTL), yang pada contoh bernilai 80H (atau dalam desimal, 128). Nilai ini menunjukkan berapa lama packet ini dapat berada dalam jaringan sebelum akhirnya dibuang. Dengan demikian, packet IP tidak bebas berkeliaran di jaringan selamanya. Setiap kali packet IP diterima oleh gateway, nilai TTL-nya akan dikurangi. Jika memang packet IP harus dibuang (nilai TTL mencapai 0), maka sebuah pesan harus disampaikan kepada mesin pengirim agar ia tahu apa yang terjadi🙂 Bayangkan apa yang akan terjadi di Internet tanpa informasi TTL!!! Sebuah packet IP yang memiliki alamat IP tujuan yang salah (mungkin disengaja) akan terus berkeliling dan berkelana didunia internet agar bisa menemukan tujuannya, dan ia akan terus begitu selamanya karena tujuannya memang tidak pernah ada di dunia ini. P.S: Sebagai bahan renungan, TTL manusia umumnya 70-80 tahun, apakah kamu sudah menemukan alamat tujuanmu sebelum TTL-mu mencapai 0 (kosong)?

Byte berikutnya menunjukkan informasi transport protocol yang dipakai. Kode 06H menunjukkan penggunaan TCP. Nilai lain, misalnya, 01H untuk ICMP dan 11H untuk UDP. Dua byte berikutnya adalah nilai checksum (dalam contoh, 0204H).

Empat byte berikutnya, 0AH 0AH ??H ??H adalah alamat IP (IP address) untuk pengirim. Dalam desimal angka tadi akan berupa 10.10.??.?? (angka dengan tanda tanya sengaja tidak dimunculkan🙂. Dan begitu juga dengan empat byte berikutnya, 48H 05H 7CH 41H. Itu adalah alamat IP penerima, yang dalam desimal berupa 72.5.124.65.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: