Rabu, 28 September 2011

Computer Networking (TCP/IP Edition)

TCP/IP adalah protokol yang populer digunakan/diimplementasikan untuk saling mengkoneksikan jaringan lokal dengan metode “internet” (inget i-nya kecil… = interconnect networking). Sampai pada suatu saat, seluruh jaringan-jaringan yang ada di dunia ini telah terkoneksi, sehingga lahirlah produk hebat dari internet bernama The Internet. (Tapi sekali lagi saya tegaskan, banyak orang, termasuk saya, yang maksudnya nulis “internet” malah jadi “Internet”. Atau sebaliknya, maksudnya menulis “Internet” malah jadi “internet”. Gapapa lah, soalnya sekarang internet & Internet emang udah mengcover seluruh dunia ‘kan…). Mari kita bongkar dan berkarya wisata ke layer-layer pada TCP/IP!!!
Biar lebih jelas, pertama-tama saya kasih gambar ini nih.. Semua obrolan kita di postingan ini mengacu pada gambar ini:

Layer-Layer dan Protokolnya Pada TCP/IP
Layer-Layer dan Protokolnya Pada TCP/IP
Gambar ini diambil dari situs Wikipedia. Ini adalah 4 layer teratas (layer 5, 4, 3, dan 2) dari layer-layer TCP/IP. Sedangkan layer 1 (Layer Fisik) TCP/IP gak dimasukkan dalam gambar ini..
TCP/IP disebut juga TCP/IP Suite, atau seperangkat protokol komunikasi data. Jadi sebenernya yang disebut protokol itu siapa? Apakah “TCP/IP” nya ATAU protokol-protokol yang ada di tiap layer itu sihh? (Coba lihat gambar)
Jyah, ini mah sama aja kayak analogi begini:
Microsoft Office Suite 2010 adalah produk office dari Microsoft. Didalam Microsoft Office Suite 2010, terdapat:
  • Aplikasi word processing, menggunakan Microsoft Word
  • Aplikasi worksheet, matematik, dan matriks, menggunakan Microsoft Excel
  • Aplikasi membuat database, menggunakan Microsoft Access
  • dan seterusnya
Kalo pake analogi begini, anggap aja satu bundel Microsoft Office ini adalah “TCP/IP”-nya… sedangkan Microsoft Word, Excel, Access, Outlook, dkk sebagai protokol-protokol di tiap layernya.. Paham? Okede…
Ada pertanyaan bagus dari adik kelas, kenapa nama protokol komunikasi yang dikembangkan ARPA ini disebut “TCP/IP”? Wah, pertanyaan yang sangat fundamental (haha). Langsung aja saya jawab begini:
  1. Tanya ke ARPA, dijamin dapet jawaban yang jelas.. hehehe…
  2. Kalo kita ga bisa ke Amerika ketemu salah satu Researcher ARPA, mending kita maen tebak-tebak buah manggis… Kalo kata tebak2an.. menurut saya kenapa dinamakan “TCP/IP” adalah karena dua protokol TCP, dan IP ini (Coba lihat lagi gambarnya.. TCP ada di layer 4, dan IP ada di layer 3) adalah protokol yang paling sering digunakan dan jadi primadona dalam komunikasi data… Mungkin TCP dan IP sudah dianggap maskot dari sekumpulan geng protokol ini, sehingga dijadikan nama geng nya.. hehehe…
Oke saatnya karya wisata ke Layer 1 (Layer Fisik)………(1 jam kemudian)…..
*Sopir bisnya gak tau tempat-tempat di Layer Fisik… jadi kita langsung ke Layer 2 (Layer Data-Link) aja ya anak-anak??! Iya paaakkk…*
Layer 2 (Layer Data-Link)
Kita karya wisata ke salah satu protokol yang ada di layer ini, ARP:
ARP & RARP (Address Resolution Protocol & Reverse/Inverse Address Resolution Protocol): adalah protokol yang bertugas untuk memetakan IP Address menjadi alamat MAC (Media Access Control) juga untuk sebaliknya, memetakan MAC Address menjadi IP Address.
Untuk melihat alamat IP (Layer 3) dan alamat fisik MAC (Layer 2). Pada shell Linux, ketik perintah “ifconfig” dan untuk cmd Windows, ketik perintah “ipconfig”
root@eniac:/home/inan# ifconfig
eth0 Link encap:Ethernet  HWaddr 00:1b:24:2a:3e:e0
inetaddr:192.168.0.2 Bcast:192.168.0.255 Mask 255.255.255.0
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Interrupt:20 Base address:0xa000
wlan0 Link encap:Ethernet  HWaddr 00:19:7e:45:99:eb
inetaddr:217.0.0.7 Bcast:217.0.0.255 Mask 255.255.255.0
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Yang saya garis bawah adalah alamat MAC (alamat device) dan yang saya bold adalah alamat IP (Layer 3). Penting nih.. tiap alamat MAC (alamat device) tidak ada yang sama di dunia ini. Seperti juga contohnya alamat MAC LAN card saya (eth0) dan Wireless card saya (wlan0). Ini aja udah beda… Apalagi dengan komputer lain :P
Nah, sekarang… tugas ARP pada komputer saya adalah mengabarkan kepada seluruh node di dalam jaringan WLAN saya bahwa IP 217.0.0.7 mempunyai alamat MAC 00:19:7e:45:99:eb begitu juga untuk LAN, ARP akan membroadcast informasi ke tiap node bahwa alamat 192.168.0.2 mempunyai alamat MAC 00:1b:24:2a:3e:e0.
Sebenarnya untuk apa alamat MAC? Alamat MAC diperlukan untuk transfer data yang secara fisik dalam satu jaringan. Kalau begitu untuk apa alamat IP? Wogh… Alamat IP digunakan sebagai alamat logic tiap node untuk kebutuhan pengalamatan jaringan-jaringan karena (nanti akan dijelaskan ketika kita berkarya wisata ke Layer 3 hehehe…). Kalo peran ARP dalam komunikasi di jaringan lokal?? Jika anda pernah mengkoneksikan komputer anda ke sebuah jaringan (pake switch misalnya) maka tanpa peran ARP, mungkin komputer anda tidak akan pernah mendapatkan paket data karena “kesasar” di jaringan lokal. Hehe.. Switch bekerja pada layer 2. Sebenernya switch memiliki “database” ARP table di dalam switch tersebut. Isinya kurang lebih (contoh) seperti ini:
IP Address MAC Address Lewat port switch…
192.168.0.1 00:1b:cc:c0:bd:e0 Port 1 switch
192.168.0.2 00:1b:24:2a:3e:e0 Port 2 switch
192.168.0.3 00:1c:13:dd:a2:bb Port 3 switch
192.168.0.4 00:1c:25:1c:ae:4e Port 4 switch
Tabel ARP pada Switch 4 port yang terisi penuh menuju node-node.
Cara switch bekerja adalah dengan membaca ARP Table nya. Baris-baris pada table tersebut selalu di update oleh protokol ARP secara periodik. Misalnya ada paket datang ke switch dari IP 192.168.0.1 yang akan menuju 192.168.0.2. ARP akan me-resolv alamat 192.168.0.2 menjadi 00:1b:24:2a:3e:e0, sehingga switch mengerti maksud alamat logic (IP) tersebut maksudnya adalah alamat fisik tertentu yang berada di port mana, kemudian switch akan meneruskan paket tersebut menuju port nomer 2 pada switch (ke komputer dengan alamat MAC 00:1b:24:2a:3e:e0 atau beralamat logic 192.168.0.2). Untuk selanjutnya paket dari 192.168.0.1 tersebut di proses secara lokal oleh komputer 192.168.0.2….
Layer 3 (Layer Network)
Kita karya wisata ke salah satu protokol yang ada di layer ini, IP:
IP (Internet Protocol): adalah protokol yang bertugas untuk pengalamatan logic node. Selain pengalamatan fisik, diperlukan juga pengalamatan logic. Mungkin anda berpikir, untuk apa pengalamatan logic, kenapa kita tidak ber-internet dengan menggunakan alamat fisik (Layer 2) saja? Toh, alamat fisik tiap Network-Interface-Card berbeda-beda di dunia ini… Jadi ga kan ketuker-tuker kalo misal saya berinternet dengan alamat fisik saja…
Ok… ini karena alamat fisik tidak bisa di masking. Alamat fisik komputer 00:1b:24:2a:3e:e0 tidak bisa di masking menjadi 00:1b:24:2a:3e:XX… Karena bisa saja 00:1b:24:2a:3e:e0 tidak berada di network yang sama dengan komputer beralamat fisik 00:1b:24:2a:3e:aa misalnya… (perhatikan bagian terakhir “e0” diganti menjadi “aa”)
Jadi untuk mengetahui alamat jaringan, tidak bisa dengan menggunakan alamat fisik. Alamat fisik spesifik untuk pengalamatan langsung untuk host tertentu saja (Direct-Delivery).
Agar ngerti maksudnya, bisa saya jelaskan bersamaan dengan intro di layer 3 ini…

Routing Antar Dua Jaringan
Routing Antar Dua Jaringan
Dari gambar ini, routing table pada ROUTER bisa saya jelaskan seperti ini:
Source Network Destination Network Interface
192.168.0.X (byte terakhir terserah, asal masih berada di sub-net 192.168.0) 192.168.1.X m0
192.168.1.X 192.168.0.X m1
Sekarang, bisa anda bayangkan jika alamat fisik (host-spesific) yang harus di-handle oleh router… Butuh berapa entry baris agar router bisa mengerti jika harus ke interface 00:1b:24:2a:3e:e0 harus kemana. (Ini masih interkoneksi dua jaringan… bagaimana nanti kalo sebesar Internet??? Hadohhhhh) Ok, sudah cukup berandai-andai. Untuk itu alamat logic SANGAT diperlukan…
Layer 4 (Layer Transport)
Kita karya wisata ke salah satu protokol yang ada di layer ini, TCP dan UDP:
TCP (Transmission Control Protocol): adalah protokol yang bertugas untuk membentuk koneksi antar node. Sifat TCP adalah connection-oriented. TCP baru akan membuat koneksi jika kedua belah pihak telah setuju. Karenanya, TCP dianggap reliable (dapat diandalkan). Berbeda dengan UDP (User Datagram Protocol) yang connectionless, transmisi data yang berbasis UDP akan bersifat nothing-to-lose (hehe) karena tidak ada kesepakatan dulu antar node yang bertransmisi.
Kalau kita beranalogi, misalnya kita mau mengirimkan barang dari Bandung ke Surabaya dengan menggunakan jasa si Upin (TCP) atau Ipin (UDP) nih yah?! Untuk diketahui, Upin lebih teliti dalam mengirimkan barang. Upin suka nelpon dulu orang yang akan dikirimkan barang di Surabaya itu, apakah rumahnya di Surabaya bisa dikunjungi atau engga… Kalau bisa dikunjungi, Upin baru mulai ngirim barangnya… Selain itu, Upin juga memikirkan jalur yang akan ditempuh, apakah lewat jalur Pantura atau lewat jalur selatan. Terakhir, Upin bertanggung jawab dalam mengirimkan barang. Upin suka ngasih tau ke kita bahwa barang yang kita kirimkan udah sampai ke Surabaya dengan selamat atau engga. Kalau engga, akan dikirimkan lagi dari Bandung. Secara periodik Upin memberitahukan ke kita sebagai pengirim di Bandung… Kalau Ipin, dia sih maen berangkat-berangkat aje… Tapi secara waktu, memang Ipin lebih cepat prosesnya. Karena mungkin sewaktu Upin masi sibuk nelpon-nelpon ke Surabaya, si Ipin udah nyampe Cirebon.. Jadi Ipin mah ga mikirin orang di Surabaya-nya bisa dikunjungi atau tidak, terus ga mikirin lewat jalur mana aja, yang penting sampe Surabaya.. mo lewat Garut juga ayo-ayo ajahh.. jyahahahahah…
Pada kenyataannya, TCP digunakan untuk transmisi yang sifatnya kritikal dan tentu saja, butuh kehandalan. Sedangkan UDP digunakan untuk komunikasi antar proses yang tidak begitu memerlukan kehandalan, justeru membutuhkan kecepatan respon.
Layer 5 (Layer Application)
Kita karya wisata ke salah satu protokol yang ada di layer ini, DNS:
DNS (Domain Name Service): adalah protokol yang tugasnya memetakan nama domain yang gampang diingat manusia menjadi alamat IP yang gampang diproses komputer (sesuai dengan framework TCP/IP).
DNS Server (Node yang melakukan pemetaan alamat domain menjadi alamat IP) tentu saja mempunyai “database” nama domain ke alamat IP nya. Sesuai pada tabel berikut:
Nama Domain Alamat IP
onyon.com 117.231.21.223
gorilla.com 193.112.125.88
NB: nama domain dan alamat IP-nya ngasal… tapi ini bukan untuk tujuan menyindir atau apapun… hanya biar contohnya jelas… hehehe..
Jadi ketika kita menggunakan DNS Server yang memiliki database seperti ini, dan ketika kita browsing ke gorilla.com, sebenernya kita sama saja dengan melakukan query ke DNS Server untuk me-resolv nama gorilla.com menjadi IP 193.112.125.88 kemudian membuat koneksi HTTP ke 193.112.125.88 (ngerti kan?)
Apakah seluruh nama domain di Internet terekam di DNS Server? Jawabannya Ya, tapi tidak semua nama domain di rekam (record) di satu komputer yang segede Gaban… Tapi dimanfaatkanlah distributed system. Bisa saja ada DNS Server yang tidak tau alamat onyon.com, tapi ketika nanya ke DNS server kita, ter-resolv IP 117.231.21.223. Tiap baris DNS sebenarnya selalu di update tiap subuh waktu GMT. Ada DNS-Root di Internet yang menghandle gTLD (Top Level Domain) dan ccTLD (country-code Top Level Domain). Contoh TLD yaitu: com, net, org, edu, mil. Contoh ccTLD yaitu: co.id, go.uk, or.jp. DNS-Root ini “hanya” mengatur Top Level Domain… Untuk SLD (Second Level Domain) di TLD tersebut ada Name Server-Name Server lain yang pastinya lebih tau. Contoh SLD: google, yahoo, tibandung, detik, kaskus, dsb….
Mungkin analoginya gini aja lah ya (step by step).. Telah di query sama Mr. Lampard seseorang dari Inggris alamat sbb: Gg Mawar no. 12c, Jl. Soekarno-Hatta, Kota Bandung, Provinsi Jabar, Negara Indonesia
  • Pertama-tama yang dilakukan Mr. Lampard adalah nanya ke “Nameserver” PBB.. dimana sih negara Indonesia?? PBB kemudian ngasih jawabannya…
  • Mr. Lampard kemudian ke Indonesia dan nanya ke “Nameserver” di sana. Dimana sih provinsi Jabar? “Nameserver” Indonesia kemudian ngasih tau jawabannya… (Untuk dipahami, jika Mr. Lampard nanya ke PBB, BELUM TENTU PBB tau dimana provinsi Jabar. Betul tidak??)
  • Terus nanya ke “Nameserver” di Jabar, dimana sih Kota Bandung? Terus “Nameserver” tersebut ngasih tau jawabannya… (Untuk dipahami, jika Mr. Lampard nanya ke Indonesia, BELUM TENTU Indonesia tau dimana Kota Bandung. Betul tidak??)
  • Terus nanya ke “Nameserver” di Bandung, dimana sih Jl. Soekarno-Hatta…
  • Terus nanya ke “Nameserver” di Jl. Soekarno-Hatta, dimana sih Gang Mawar…
  • Terus nanya ke “Nameserver” warga di Jl. Mawar, dimana sih rumah no. 12c…
  • Akhirnya Mr. Lampard tau alamat tempat bakal tujuannya. Lah, ngapain Lampard nanya-nanya Bandung euy? Pengen ngabela PERSIB inih teh? Hahahah..
Protokol DNS menggunakan layanan Ipin.. eh.. maksudnya layanan UDP. Yang membutuhkan kecepatan dalam respon ketimbang masalah kehandalan. Bisa dilihat sendiri, kenapa lebih membutuhkan kecepatan respon ketimbang kehandalan. Lah, data yang diquery-in juga cuma masalah nama domain… Lagian, banyak node yang mungkin harus di lewati untuk pemecahan nama domain.. Bisa lama nungguinnya nehhh…
Contoh “DNS Client” adalah aplikasi kecil bernama “nslookup”. Ini adalah contoh ketika saya melakukan query “google.co.id” ke aplikasi ini…
inan@eniac:~$ nslookup
> server
Default server: 192.168.255.3
Address: 192.168.255.3#53
Default server: 10.88.77.6
Address: 10.88.77.6#53
> google.co.id
Server:         192.168.255.3
Address:        192.168.255.3#53
Non-authoritative answer:
Name:   google.co.id
Address: 64.233.181.104
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> google.co.id
Server:         8.8.8.8
Address:        8.8.8.8#53
Non-authoritative answer:
Name:   google.co.id
Address: 64.233.181.104
> exit
inan@eniac:~$
Sedikit keterangan:
Baris 1: saya mengetikkan perintah “nslookup”
Baris 2: saya ingin tau, siapa yang jadi default nameserver di nslookup saya…
Ternyata hasilnya adalah primary adalah 192.168.255.3 dan secondary 10.88.77.6
Ini nameserver punya provider ISP saya…
Baris 7: saya coba query “google.co.id” ke nameserver saya tersebut…
Baris 12: ada jawaban alamat IP google.co.id… yang ngasih jawaban adalah primary NS saya..
Baris 13: coba nanya pake NS yang lain 8.8.8.8 (public DNSnya Google Inc.)
Baris 16: saya coba query “google.co.id” ke nameserver saya tersebut…
Baris 21: ada jawaban alamat IP google.co.id… yang ngasih jawaban adalah 8.8.8.8
Baris 22: keluar dari program “nslookup”
Oke deh… Ini sedikit karya wisata kita ke tiap layer-layer TCP/IP. Untuk selanjutnya bisa diperdalam lagi jobdesc dari protokol dan manfaat dari jobdesc protokol tersebut untuk protokol-protokol yang lainnya. Ingat, mereka semua bekerja secara independen, tapi sesungguhnya hasil kerja mereka merupakan satu kesatuan mekanisme yang kompleks agar komunikasi data bisa berlangsung. Hebat…

0 koment:

Posting Komentar

 

© 2010 . - Design Google Blogs - Powered By Rias Indah Purwatiningsih