Address Resolution Protocol
Address Resolution Protocol disingkat ARP adalah sebuah protokol dalam TCP/IP Protocol Suite yang bertanggungjawab dalam melakukan resolusi alamat IP ke dalam alamat Media Access Control (MAC Address). ARP didefinisikan di dalam RFC 826.
ARP stands for Address Resolution Protocol and it allows the network to translate IP addresses into MAC addresses. Basically, ARP works like this: When one host using IP on a LAN is trying to contact another it needs the MAC address (aka: hardware address) of the host it is trying to contact. It first looks in it's ARP cache (to see your ARP cache in windows type in "arp –a" at the command line) to see if it already has the MAC address, but if not it broadcasts out an ARP request asking "Yo, who has this IP address I'm looking for?" If the host that has that IP address hears the ARP query it will respond with it's own MAC address and a conversation can begin using IP. In common bus networks like Ethernet using a hub or 801.11b all traffic can be seen by all hosts who's NICs are in promiscuous mode, but things are a bit different on switched networks. A switch looks at the data sent to it and tries to only forwards packets to its intended recipient based on MAC address. Switched networks are more secure and help speed up the network by only sending packets where they need to go. There are ways around switches though ;).
Ketika sebuah aplikasi yang mendukung teknologi protokol jaringan TCP/IP mencoba untuk mengakses sebuah host TCP/IP dengan menggunakan alamat IP, maka alamat IP yang dimiliki oleh host yang dituju harus diterjemahkan terlebih dahulu ke dalam MAC Address agar frame-frame data dapat diteruskan ke tujuan dan diletakkan di atas media transmisi (kabel, radio, atau cahaya), setelah diproses terlebih dahulu oleh Network Interface Card (NIC). Hal ini dikarenakan NIC beroperasi dalam lapisan fisik dan lapisan data-link pada tujuh lapis model referensi OSI dan menggunakan alamat fisik daripada menggunakan alamat logis (seperti halnya alamat IP atau nama NetBIOS) untuk melakukan komunikasi data dalam jaringan.
Lebih Detail tentang Address Resolution Protocol (ARP)
Dalam implementasi jaringan Internet lebih sering tersambung melalui Ethernet Local Area Network (LAN). Setiap transmisi data di jaringan LAN akan berisi alamat Medium Access Control (MAC) node source & destination. MAC address panjangnya 48 bit dan tidak ada konsep hirarki (dengan NET_ID, HOST_ID dll) seperti IP addres. Oleh karenanya tidak mungkin melakukan routing menggunakan MAC address. MAC address sama sekali berbeda dengan IP address.
Jika sebuah mesin ingin mengirimkan paket / datagram ke semua mesin di jaringan yang sama. Software aplikasi yang ingin berkomunikasi harus mengetahui IP address maupun MAC address dari si penerima. Hal ini dibutuhkan karena alamat IP address yang dituju perlu dimasukan ke IP paket, dan alamat MAC yang dituju perlu dimasukan ke frame protokol LAN MAC. Jika mesin yang dituju di network yang lain, maka pengirim akan mencari MAC address dari default gateway atau router.
Sayangnya, pengirim paket IP kemungkinan besar tidak akan tahu MAC address dari mesin yang dituju yang berada di jaringan yang sama. Oleh karena itu, di kembangkan Address Resolution Protocol (ARP), yang di jelaskan di RFC 826 (http://www.isi.edu/in-notes/rfc826.txt) memberikan mekanisme yang memungkinkan sebuah mesin pengirim paket untuk menanyakan MAC address penerima, jika hanya mengetahui IP address yang dituju.
Tabel ARP pada dasarnya hanya berisi MAC address dan IP address masing-masing komputer & biasanya tidak statis, sangat dinamik. Skenario penggunaan ARP sebagai berikut, jika sebuah komputer butuh berkomunikasi dengan komputer yang lain, maka komputer tersebut biasanya akan melalui langkah berikut:
- Komputer akan cek tabel routing, mencari router selanjutnya untuk menuju ke jaringan yang di tuju.
- Jika ada router yang valid, misalkan IP addressnya 192.168.1.1, komputer kemudian akan cek tabel ARP untuk melihat apakah ada MAC address dari NIC router. Dengan cara ini, komputer memastikan bahwa paket akan dikirim ke tujuan (router) yang benar.
- Jika ada dalam tabel ARP, komputer akan mengirimkan paket IP ke NIC komputer tersebut, dan memerintahkan NIC untuk mengenkapsulasi paket ke dalam frame yang ditujukan ke MAC address dari router.
- Jika ternyata tidak ada dalam tabel ARP, maka komputer akan mengirimkan paket ARP request di jaringan menanyakan router 192.168.1.1 mempunyai MAC address berapa, supaya pengiriman paket dapat dilakukan. Jika ada jawaban di terima, maka IP paket akan dikirim dan tabel ARP akan di update dengan MAC address yang baru.
- Setiap router dalam jalur pengiriman paket, akan mengambil IP paket keluar dari frame Ethernet, dan membuang informasi [[MAC Address]-nya. Router akan melihat IP address tujuan & melihat tabel routing yang ada untuk menentukan router selanjutnya yang harus di lalui IP paket tersebut.
Proses kembali berlanjut, router akan menggunakan proses ARP untuk memperoleh MAC address router selanjutnya. Jika di peroleh MAC address-nya, maka IP paket akan di enkapsulasi dalam ethernet frame dan dikirim ke router selanjutnya sampai ke komputer tujuan.
- Jika komputer tujuan berada di jaringan yang sama, proses yang sama untuk memperoleh MAC address tujuan menggunakan ARP tetap terjadi. Tapi paket langsung dikirim ke komputer tujuan tanpa perlu melalui router, dan tabel ARP di update dengan MAC address komputer tujuan tersebut.
- Komputer tidak akan mengirimkan data ke komputer tujuan kecuali bila di tabel ARP-nya ada MAC address dari komputer / router yang dituju. Jika tidak ada, maka aplikasi yang membutuhkan komunikasi akan timeout atau error “time exceeded”.
Oleh karenanya, tabel ARP hanya berisi MAC address dari peralatan yang tersambung di jaringan lokal saja. Isi tabel ARP tidak permanen, dan akan di hapus setelah selang waktu tertentu tergantung sistem operasi yang digunakan.
IANA menyimpan semua parameter ARP di http://www.iana.org/assignments/arp-parameters. Beberapa prosedur address resolution juga di definisikan, termasuk:
- Reverse ARP (RARP), yang memungkinkan mesin diskless untuk mengetahui IP address jika mengetahui MAC addressnya.
- Inverse ARP (InARP), memungkinkan pemetaan antara IP address dengan frame relay virtual circuit identifier
- ATMARP dan ATMInARP memungkinkan pemetaan antara IP address dan ATM virtual path/channel identifiers.
- LAN Emulation ARP (LEARP), mungkinkan pemetaan ATM address penerima ke LAN Emulation (LE) address yang berupa IEEE 802 MAC address.
Dalam bentuk gambar, proses transaksi ARP dapat di gambar kan sebuah komputer, misalnya dengan IP address 132.92.121.1 MAC address 00:80:48:E3:D2:69 yang terhubung ke jaringan LAN.
Komputer 132.92.121.1 ingin berhubungan dengan komputer 132.92.121.2 yang belum di ketahui MAC addessnya. Maka Komputer 132.92.121.1 akan mengirimkan ARP Request menanyakan MAC address komputer 132.92.121.2, yang di tandai dengan MAC address 00:00:00:00:00:00 pada MAC address target di message ARP Request.
Komputer 132.92.121.2 dengan MAC address 00:80:AD:17:96:34 yang berada di LAN memonitor permohonan dari komputer 132.92.121.1. Maka komputer 132.92.121.2 akan menjawab dengan ARP responds, yang memberikan MAC address komputer 132.92.121.2.
Informasi MAC address komputer 132.92.121.2 akan dimasukan ke dalam ARP Table yang ada di komputer 132.92.121.1.
PC / mesin biasanya menyimpan informasi ARP yang terkini. Untuk lebih jelasnya proses bertanya MAC address komputer yang akan dituju dapat dilihat menggunakan software sniffer, dalam hal ini saya menggunakan tcpdump yang tersedia di Linux menggunakan perintah:
# tcpdump –X –i eth0
Dalam hasil tcpdump, kadang kala di temukan proses ARP sedang berlangsung seperti contoh berikut
14:04:09.315845 arp who-has 192.168.0.112 tell 192.168.0.11 0x0000: 0001 0800 0604 0001 0002 b335 4271 c0a8 ...........5Bq.. 0x0010: 000b 0000 0000 0000 c0a8 0070 ...........p 14:04:09.316304 arp reply 192.168.0.112 is-at 00:00:1c:09:3c:0b 0x0000: 0001 0800 0604 0002 0000 1c09 3c0b c0a8 ............<... 0x0010: 0070 0002 b335 4271 c0a8 000b 2020 2020 .p...5Bq........ 0x0020: 2020 2020 2020 2020 2020 2020 2020 ..............
Dalam contoh, komputer 192.168.0.11 menanyakan ke jaringan MAC address dari komputer yang mempunyai IP address 192.168.0.112. Jika komputer dengan IP address 192.168.0.112 mendengarkan permintaan tersebut, akan menjawab, dalam hal ini, MAC address komputer 192.168.0.112 adalah 00:00:1C:09:3C:0B.
Daftar lengkap MAC address yang termonitor oleh komputer Linux dapat dilihat menggunakan perintah arp –a berikut:
[root@yc0mlc ~]# arp -a ? (192.168.0.112) at 00:00:1C:09:3C:0B [ether] on eth0 ? (192.168.0.111) at 00:01:F4:EC:E2:E7 [ether] on eth0 ? (192.168.0.10) at 00:0D:88:B3:22:99 [ether] on eth0 ? (192.168.0.80) at 00:11:6B:C0:04:FB [ether] on eth0 ? (192.168.0.110) at 00:80:48:22:2B:23 [ether] on eth0