Wednesday, May 27, 2020

Network Fundamentals: ICMP #BelajarJaringanKomputer

ICMP (Internet Control Message Protocol) adalah protokol jaringan yang digunakan untuk diagnostik dan manajemen jaringan. Contoh ICMP yang sering kita gunakan adalah utilitas "ping" yang menggunakan ICMP echo request dan ICMP echo reply. Ketika port tertentu tidak dapat dijangkau, ICMP bisa mengirim pesan error ke pengirim. Contoh lain dari aplikasi yang menggunakan ICMP adalah traceroute.

ICMP message dibungkus dalam IP packet sehingga ada orang yang mengatakan bahwa ICMP adalah protokol layer 4 seperti UDP atau TCP. Namun, karena ICMP adalah bagian penting dari protokol IP, ia biasanya dianggap sebagai protokol layer 3.

Header yang digunakan ICMP sangat sederhana, seperti inilah tampilannya:


8 bits/1 Byte pertama menentukan tipe ICMP message. Misalnya, tipe 8 digunakan untuk ICMP echo request dan tipe 0 digunakan untuk ICMP echo reply. Tipe 3 untuk destination unreachable.

8 bits/1 Byte kedua disebut code, menentukan kode atau jenis dari setiap ICMP message. Misalnya, destination unreachable memiliki 16 kode berbeda. Ketika Anda melihat kode 0 itu berarti bahwa jaringan tujuan tidak dapat dijangkau, sementara kode 1 berarti bahwa host tujuan tidak dapat dijangkau.

Kolom ketiga adalah 16 bits (2 Bytes) yang digunakan untuk checksum, untuk mengecek apakah header ICMP error atau tidak. Seperti apa field-field lain yang tersisa dari header? Itu bergantung pada tipe ICMP message yang digunakan.

Jika Anda tertarik, berikut adalah daftar lengkap semua kode dan tipe ICMP.

Untuk menunjukkan kepada Anda beberapa contoh ICMP, mari kita lihat beberapa ICMP message yang sering digunakan, menggunakan Wireshark.

1. ICMP echo
PC-X mau mengirim paket ICMP echo (ping) ke server 1.1.1.1, untuk mengetahui apakah server 1.1.1.1 bisa membalas ICMP echo dari PC-X

C:\Users\PC-X>ping 1.1.1.1

Pinging 1.1.1.1 with 32 bytes of data:
Reply from 1.1.1.1: bytes=32 time=72ms TTL=58
Reply from 1.1.1.1: bytes=32 time=85ms TTL=58
Reply from 1.1.1.1: bytes=32 time=27ms TTL=58
Reply from 1.1.1.1: bytes=32 time=158ms TTL=58

Ping statistics for 1.1.1.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 27ms, Maximum = 158ms, Average = 85ms

Dari hasil capture Wireshark, kita bisa melihat ICMP echo (ping) request yang dikirim ke server 1.1.1.1. ICMP echo (ping) request mempunyai tipe 8 dan kode 0.

Sedangkan ICMP echo (ping) Reply dari server 1.1.1.1 ke PC-X, mempunyai tipe 0 dan kode 0.


2. Destination Unreachable
PC-X mencoba mengirim ICMP echo (ping) ke server 110.5.105.30, tapi ternyata server tsb tidak bisa dicapai (unreachable) karena alasan tertentu (misalnya sedang shutdown, restart, dll).

C:\Users\PC-X>ping 110.5.105.30

Pinging 110.5.105.30 with 32 bytes of data:
Reply from 202.62.12.98: Destination host unreachable.
Reply from 202.62.12.98: Destination host unreachable.
Reply from 202.62.12.98: Destination host unreachable.
Reply from 202.62.12.98: Destination host unreachable.

Ping statistics for 110.5.105.30:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Hasil capture Wireshark, ICMP Destination Unreachable mempunyai tipe 3 dan kode 1 untuk Host Unreachable.

3. Traceroute
PC-X mengirim ICMP echo (ping) ke server 8.8.8.8 menggunakan TTL terkecil yaitu 1 dan secara bertahap dinaikkan hingga mendapat reply/balasan dari server 8.8.8.8, dengan tujuan untuk mendapatkan informasi mengenai hop-by-hop yang dilalui dari PC-X hingga sampai ke server 8.8.8.8


C:\Users\PC-X>tracert  8.8.8.8

Tracing route to 8.8.8.8 over a maximum of 30 hops
  1    14 ms    11 ms    12 ms  10.158.0.1
  2   145 ms   139 ms   219 ms  202.73.96.26
  3   168 ms   143 ms   141 ms  202.73.96.25
  4    32 ms    24 ms    28 ms  116.68.231.150
  5    34 ms    33 ms    29 ms  111.95.246.130
  6    38 ms    44 ms    28 ms  74.125.242.33
  7    26 ms    24 ms    68 ms  72.14.232.101
  8    33 ms    34 ms    67 ms  8.8.8.8
Trace complete.

Hasil capture Wireshark, ini adalah paket ICMP yang dikirim PC-X ke 8.8.8.8, dengan TTL terkecil yaitu 1. TTL ini selalu dikurangi 1 ketika transit di sebuah router. Terlihat bahwa paket ICMP mempunyai Protocol ID = 1.


Ketika sampai di router pertama (gateway terdekat), TTL 1 tsb dikurangi menjadi 0, sehingga paket di-drop oleh router dan router tersebut mengirim ICMP TTL exceeded message kepada pengirim (PC-X). ICMP TTL exceeded mempunyai tipe 11 dan kode 0.


Kesimpulan:
Kita telah membahas mengenai kegunaan ICMP, seperti apa header-nya dan beberapa contoh ICMP message yang sering kita gunakan. Jika ada pertanyaan, silahkan tulis di kolom komentar :)

Agar lebih mudah memahami tentang ICMP, sebaiknya tonton video saya yang membahas mengenai ICMP di: https://youtu.be/k4DfVCJOA4w?t=1290

Semoga bermanfaat & tetap semangat untuk belajar :)

-AHa-

2 comments:

Dasar-dasar Jaringan Komputer (Tulisan & Video)

Bagi yang ingin belajar jaringan komputer dari dasar, saya sarankan mengikuti link ini (ada versi tulisan dan video di dalamnya) #NetworkF...