INTERNET – TCP/IP: KONSEP & IMPLEMENTASI

Onno W. Purbo

OnnoCenter Daftar Isi KATA PENGANTAR...... 9 BAB 1: Pendahuluan...... 10 TCP/IP dan Internet...... 10 Standar TCP/IP dan proses RFC...... 10 Badan Pengatur Internet...... 11 Proses pembentukan standar Internet...... 13 Layanan di Internet...... 14 Asumsi Peralatan / Sistem Operasi...... 16 Referensi...... 17 BAB 2: Sejarah TCP/IP dan Internet...... 18 Evolusi TCP/IP dan Internet...... 18 Awal Sejarah Internet Indonesia...... 22 Perjuangan Infrastruktur Internet Komersial Indonesia...... 24 Infrastruktur Internet Rakyat...... 25 BAB 3: Konsep Dasar TCP/IP...... 28 Dasar Arsitektur TCP/IP...... 28 Referensi...... 33 BAB 4: Teknik Penghayatan Kerja TCP/IP...... 34 Packet Sniffer di /...... 34 Packet Sniffer di Windows...... 34 Instalasi Wireshark di Linux...... 35 Mengoperasikan Wireshark...... 35 Referensi...... 43 BAB 5: Komponen Fisik Jaringan Internet...... 44 Kabel Penghubung...... 45 Teknologi Wireless...... 48 Kartu Jaringan & Sambungan Jaringan...... 50 Cara Kerja ...... 51 ...... 52 Referensi...... 53 BAB 6: Lapisan Protokol ...... 54 Komunikasi Asinkron Yang Paling Sederhana...... 54 Point-to-Point Protocol (PPP)...... 55 ...... 56 WLAN: Wireless LAN IEEE 802.11...... 57 Paket Radio...... 60 Address Resolution Protocol (ARP)...... 61 BAB 7: (IPv4)...... 66 versi 4...... 67 Format IP Address versi 4...... 69 Bentuk biner...... 69 Bentuk dotted decimal...... 69 IP address versi 4 dan artinya...... 69 IP Address, Subnetmask dan Subnetting...... 70 Dunia Menurut RFC 950 – Cara Lama...... 70 Pengalokasian IP address...... 72 Aturan dasar pemilihan network ID dan host ID...... 72 Contoh konfigurasi Valid dan Tidak Valid...... 73 Konfigurasi Network Interface...... 74 Mendefinisikan interface...... 75 Menyalakan dan mematikan interface...... 76 Dunia Menurut RFC 1812 – Cara Baru...... 76 Subnetting, Bit By Bit...... 78 Aritmatika Biner...... 78 Logika Boolean dan Operasi Biner “AND”...... 81 Subnet “Mask”...... 82 Notasi “Slash”...... 83 Trik Menghitung Subnet...... 84 Trik Mengetahui Range Address di Jaringan...... 84 Penghematan IP address NAT dan PAT...... 85 Alokasi IP Addess Secara Dinamis...... 88 Cara Beroperasi DHCP...... 89 Membangun DHCP Server di Linux...... 91 Referensi...... 93 BAB 8: Internet Layer (IPv6)...... 94 Apakah IPv6?...... 94 Penampakan IPv6...... 94 Perbandingan dengan IPv4...... 96 Format Paket IP versi 6...... 98 Tipe alamat pada IP versi 6...... 100 IPv6 Address : Alamat tanpa special prefix...... 100 IPv6 address dengan IPv4 address yang di embed...... 101 IPv6 Address : Bagian Network, juga dikenal sebagai prefix...... 101 Tipe Local Link Address...... 101 Tipe Address Lokal...... 102 Address IPv6 Unicast Lokal...... 102 Global address type "(Aggregatable) global unicast"...... 103 Alokasi oleh provider untuk routing berjenjang...... 104 Address untuk contoh dan dokumentasi...... 104 address...... 104 Anycast Address...... 105 IPv6 Address : Bagian Host...... 105 Masalah privacy dengan automatic computed address dan solusinya...... 106 IPv6 Address : Panjang Prefix untuk Routing...... 106 Subnetting di IPv6...... 107 Mencocokan Sebuah Route...... 107 Menggunakan IP Calculator...... 108 Konfigurasi Interface di IPv6...... 108 Mengkonfigurasi Interface untuk Network Device yang berbeda...... 108 Interface tunnel IPv6-in-IPv4...... 109 Membuat Interface Up / Down...... 109 Menampilkan IPv6 Address yang ada...... 109 Menambahkan IPv6 Address ke Interface...... 110 Mengedit file /etc/network/interfaces...... 111 Membuang IPv6 Address dari Interface...... 111 Routing pada Jaringan IPv6...... 112 Mengaktifkan IPv6 forwarding di kernel...... 112 Menampilkan Route IPv6 yang ada...... 112 Menambahkan IPv6 route melalui sebuah gateway...... 113 Membuang IPv6 Route dari gateway...... 113 Menambahkan IPv6 Route melalui sebuah interface...... 113 Membuang IPv6 Route dari sebuah interface...... 114 Display Tetangga / Neighbor menggunakan perintah ip...... 114 Manipulasi tabel Tetangga / Neighbor menggunakan perintah ip...... 115 Setting Lanjut...... 115 BAB 9: Routing...... 116 Routing Direct vs. Indirect...... 116 Routing Direct...... 116 Routing Indirect...... 116 Metoda Routing...... 117 Routing Statik...... 117 Routing default...... 117 Routing dinamik...... 117 Contoh Routing Default...... 117 Contoh Routing Statik...... 118 Protokol Routing Yang Banyak Digunakan...... 121 Pemilihan Protokol Routing...... 124 Routing Sederhana...... 125 Algoritma routing untuk host...... 126 Algoritma routing untuk router...... 127 Teknik Mengatasi Kelangkaan IP address...... 127 Variable Length Subnet Mask...... 128 Aturan Longest Match Routing...... 129 Routing Loop...... 130 Skenario Multihoming...... 130 Address Dari Sebuah Provider Yang Sama...... 130 Address Di ambil Dari Provider Yang Berbeda...... 132 Address Di Ambil Tidak Dari Provider Manapun...... 133 Autonomous System (AS)...... 134 Stub AS...... 134 Multihomed Nontransit AS...... 135 Multihomed Transit AS...... 135 Implementasi Routing Menggunakan Quangga...... 136 Membuat Sendiri Router Yang Baik...... 138 Menginstalasi Quagga...... 138 Konfigurasi Quagga...... 138 Konfigurasi Quagga untuk Routing Statik...... 139 Konfigurasi Quagga untuk Routing Dinamik dengan RIP...... 140 Konfigurasi Quagga untuk Routing Dinamik dengan OSPF...... 141 Mengkonfigurasi OSPF...... 142 Mengkonfigurasi BGP...... 143 Referensi...... 144 BAB 10: ...... 145 Port...... 145 TCP (Transmission Control Protocol)...... 146 UDP (User Protocol)...... 148 ICMP (Internet Control Message Protocol)...... 149 Logika Sambungan TCP dan ICMP...... 152 Wireshark Untuk Melihat TCP Flow...... 155 Referensi...... 157 BAB 11: Aplikasi TCP/IP...... 159 Aplikasi di atas TCP dan / atau UDP...... 159 Post Office Protocol 3 – Mengambil E-mail di Server...... 161 Cara Kerja POP3...... 161 Rangkuman Perintah POP3...... 162 Contoh Dialog POP3...... 162 Instalasi POP3 Server...... 163 Simple Mail Transport Protocol (SMTP) – kirim / terima E-mail...... 164 Instalasi SMTP Server...... 164 Protokol SMTP...... 165 Komponen E-mail...... 168 Relay Agent...... 168 Laporan Kegagalan...... 170 Extended SMTP...... 170 Multipurpose Internet Mail Extension (MIME)...... 171 Instalasi Mail Server Sederhana...... 173 Hypertext Transfer Protocol...... 174 Model hubungan HTTP...... 174 Instalasi Web Server dan Proxy Web...... 175 Hubungan Persistent...... 176 Format HTTP...... 177 Request...... 178 Response...... 181 Entity...... 183 Cache HTTP...... 184 File Sharing / Network Neighbourhood...... 187 Sejarah Singkat SAMBA...... 187 Mengenal SMB/CIFS dan NetBIOS...... 188 SMB Format...... 189 Variasi SMB...... 189 Format Header SMB...... 189 Format perintah SMB...... 190 Interaksi SMB client dan server...... 190 Mengenal Lebih Lanjut NetBIOS dan WINS...... 191 WINS (Windows Internet Name Service)...... 193 Tipe ...... 193 Share, Universal Naming Convention (UNC) dan IP Addressing...... 194 Penggunaan Samba di Linux...... 194 Instalasi Samba di Linux...... 194 Konfigurasi Samba di Linux...... 194 Menggunakan Samba...... 195 Pemrogramman Jaringan...... 196 Network Programming Menggunakan nc...... 196 Network Programming menggunakan Python...... 197 Ringkasan...... 198 Lebih Lanjut...... 198 BAB 12: System...... 199 DNS Domain & Mapping...... 199 Internet Domain Name dan Struktur-nya...... 199 Masalah Penamaan...... 202 (DNS)...... 202 Konsep Zone...... 203 Komponen DNS...... 205 Software DNS Server...... 207 Konfigurasi Zona File & Konsep Resource Record...... 208 Start of Authority Record (SOA)...... 209 Name Server Record(NS)...... 210 Address Record (A)...... 211 Mail Exchanger Record (MX)...... 212 Canonical Name Record (CNAME)...... 213 PTR Record...... 214 Root Domain / DNS...... 216 Mengapa Kita Perlu Memelihara DNS Kita Sendiri?...... 218 Menjalankan Server DNS...... 219 Menkonfigurasi Resolver...... 220 Memelihara Server DNS...... 220 Tips konfigurasi dan Utilitas DNS...... 221 Tips dalam mengkonfigurasi DNS...... 221 Penamaan host...... 221 Glue record dan bahayanya...... 221 Inkonsistensi record (antara PTR dengan A)...... 222 Kesalahan penggunaan CNAME untuk MX dan NS...... 222 Lame delegation...... 223 Bagaimana Kita Mencek IP address sebuah Domain?...... 223 Cara Memperoleh Domain Sendiri?...... 226 Ringkasan...... 227 BAB 13: Kinerja Jaringan...... 228 Menyeimbangkan Kinerja Jaringan Dengan Karakteristik Kunci Bukan Kinerja...... 228 Mengukur Kinerja...... 228 Terminologi Pengukuran Kinerja...... 229 Kecepatan...... 229 Bandwidth...... 229 Pengertian bit & Byte...... 229 Throughput...... 230 (QoS)...... 230 Bandwidth Manajemen Menggunakan HTB...... 231 Start htb...... 232 Konfigurasi HTB...... 232 Parameter Disiplin Antrian...... 233 Paramater Class HTB...... 233 Parameter disiplin antrian SFQ...... 234 Parameter Disiplin Antrian PFIFO/BFIFO...... 234 Parameter Filter...... 235 Parameter Waktu...... 236 Contoh Konfigurasi...... 236 File eth0...... 237 File eth0-2.root...... 237 File eth0-2:30.default...... 237 File eth1...... 237 File eth1-2.default...... 237 File eth1-2:30.default...... 237 File eth0-2:10.pc104...... 237 File eth1-2:10.pc104...... 237 BAB 14: Keamanan Jaringan...... 239 Anatomi Serangan...... 239 Social Engineering...... 240 Virus/Trojan Horses...... 240 Denial of Service...... 240 IP / ARP Spoofing...... 241 Worm...... 241 Replay Attack...... 241 Pencurian Informasi...... 241 Keamanan Jaringan...... 242 Firewall...... 246 iptables – Firewall di Linux...... 246 iptables - cara kerja secara umum...... 246 iptables – teknik membuat aturan...... 248 iptables – tabel...... 249 iptables – command...... 249 Beberapa Contoh Aplikasi iptables...... 250 Contoh Men-DROP aturan di iptables...... 251 Contoh Menerima Paket Untuk Aplikasi Spesifik...... 251 Contoh Membatasi Banjir Paket Dari Internet...... 251 Contoh Mem-filter MAC Address Pada iptables...... 252 Konfigirasi iptables Menggunakan Webmin...... 254 Topik Lanjut...... 255 BAB 14: Manajemen dan Monitoring Jaringan...... 256 Tujuan Manajemen Jaringan...... 256 Fungsi Manajemen Jaringan...... 256 Beberapa Software Manajemen Jaringan...... 257 Simple Network Management Protocol (SNMP)...... 258 Menggunakan SNMPv3...... 258 Install SNMP server & client di ...... 258 Konfigurasi SNMPv3...... 258 Mendefinisikan users, authentication & parameter encryption...... 259 Test SNMP...... 260 NAGIOS...... 261 Instalasi NAGIOS...... 261 Menambahkan Host yang di monitor di NAGIOS...... 261 BAB 15: Penutup...... 263 TENTANG PENULIS...... 264 DEDIKASI:

Nurlina Purbo Ito, Reza, Atik, Darry, Dzaq, Zhafif KATA PENGANTAR

Buku TCP/IP ini merupakan update dari buku “TCP/IP: Konsep Disain dan Implementasi”, yang di terbitkan pertama kali tahun 1998 dan di cetak ulang selama 6-7 tahun lamanya. Ada banyak hal yang di update dalam buku TCP/IP ini terutama,

• Memberikan banyak contoh-contoh praktis untuk memudahkan pengertian tentang cara kerja jaringan Internet. • Memberikan cara mempelajari TCP/IP yang sederhana. • Memasukan IP v6 dalam pembahasan. • Menggunakan Linux sebagai contoh untuk implementasi.

Materi yang ditulis dalam buku TCP/IP ini merupakan materi kuliah jaringan komputer yang sempat saya berikan di kampus selama 5+ tahun. Selama kuliah tidak menggunakan slide sama sekali, dan biasanya langsung praktek di kelas sehingga mahasiswa bisa dengan lebih mudah mengerti konsep yang diterangkan.

Terima kasih kepada Nurlina Purbo, dan semua anak2 Ito, Reza, Atik, Reza, Dzaq, Zhafif yang sudah mendukung pada saat penulisan buku ini.

Semoga buku ini dapat menjadi pegangan bagi mereka yang ingin mempelajari cara kerja Internet dengan lebih mendalam.

Jakarta, Januari 2017 Onno W. Purbo BAB 1: Pendahuluan

TCP/IP dan Internet Internet pada dasarnya adalah jaringan dari banyak komputer yang saling tersambung satu sama lain. Tentunya agar komputer dapat berbicara satu dengan lainnya, di perlukan “Bahasa” yang di mengerti oleh semua komputer tersebut. Di jaringan komputer, “Bahasa” tersebut di kenal sebagai Protocol komunikasi data / komputer.

TCP/IP (Transmission Control Protocol/Internet Protocol) adalah sekelompok protokol yang mengatur komunikasi data komputer di Internet. Komputer di Internet berkomunikasi dengan protokol TCP/IP.

Karena menggunakan bahasa yang sama, yaitu protokol TCP/IP, perbedaan jenis komputer dan sistem operasi tidak menjadi masalah. Komputer PC dengan sistem operasi Windows dapat berkomunikasi dengan komputer PC menjalankan Linux, komputer Macintosh atau dengan Sun SPARC yang menjalankan Solaris. Jadi, jika sebuah komputer menggunakan protokol TCP/IP dan terhubung langsung ke Internet, maka komputer tersebut dapat berhubungan dengan komputer di belahan dunia mana pun yang juga terhubung ke Internet.

Perkembangan TCP/IP yang diterima luas dan praktis menjadi standar de-facto jaringan komputer berkaitan dengan ciri-ciri yang terdapat pada protokol itu sendiri:

• Protokol TCP/IP dikembangkan menggunakan standar protokol yang terbuka, tidak tertutup / di rahasiakan. • Standar protokol TCP/IP dalam bentuk Request For Comment (RFC) dapat diambil oleh siapapun tanpa biaya / gratis. • TCP/IP dikembangkan dengan tidak tergantung pada sistem operasi atau perangkat keras tertentu. • Pengembangan TCP/IP dilakukan dengan konsensus dan tidak tergantung pada vendor tertentu. • TCP/IP independen terhadap perangkat keras jaringan dan dapat dijalankan pada jaringan Ethernet, Token Ring, jalur telepon dial-up, jaringan X.25, Radio dan berbagai media pengiriman apapun. • Pengalamatan TCP/IP bersifat unik dalam skala global. Artinya, tidak ada satupun komputer yang beralamat yang sama di seluruh Internet. Dengan cara ini, komputer dapat saling terhubung walaupun jaringannya seluas Internet sekarang ini. • TCP/IP memiliki fasilitas routing yang memungkinkan untuk dapat diterapkan pada internetwork. • TCP/IP memiliki banyak jenis layanan.

Standar TCP/IP dan proses RFC Internet dapat terbentuk karena sekumpulan besar jaringan komputer bersepakat untuk berbicara dalam bahasa yang sama. Kesepakatan ini semata mata merupakan kesepakatan yang bersifat teknis. Karenanya tidak ada suatu badan pun di dunia ini yang berhak mengatur jalannya Internet secara keseluruhan. Yang dapat diatur dalam Internet terutama protokol (tata cara komunikasi) yang digunakan. Badan Pengatur Internet Internet tidak di miliki seorangpun, tapi semua orang memiliki sebagian dari Internet. Tidak ada operator pusat dari Internet, tapi semua orang mengoperasikan sebagian dari Internet. Internet tidak berbeda jauh dari sebuah anarki, tapi cukup terorganize.

Sedikit authoritas pusat dibutuhkan di Internet, terutama untuk mengatur alamat, nama, pengembangan protokol dan standarisasi. Beberapa badan / authoritas penting di Internet antara lain adalah:

• Internet Society (ISOC) (http://www.isoc.org/) di bentuk 1992, adalah sebuah organisasi non-pemerintah internasional yang mengkoordinasi Internet, dan internetworking teknologi dan aplikasi. ISOC melihat dan berkomunikasi dengan Internet Activities Board.

• Internet Architecture Board (IAB) (http://www.iab.org/) Merupakan badan koordinasi dan penasehat teknis bagi Internet Society. Badan ini betindak sebagai badan review teknis dan editorial akhir semua standar Internet. IAB memiliki otoritas untuk menerbitkan dokumen standar Internet yang dikenal sebagai RFC (Request for Comment). Tugas lain dari IAB ialah mengatur angka-angka dan konstanta yang digunakan dalam protokol Internet (nomor port TCP, kode protokol IP, tipe hardware ARP dll). Tugas ini didelegasikan ke lembaga yang disebut Internet Assigned Numbers Authority (IANA).

• Internet Engineering Task Force (IETF) (http://www.ietf.org/) salah satu dari dua badan utama di IAB. Badan pekerja di IETF terutama bertanggung jawab akan aktifitas teknis dari Internet, termasuk menulis spesifikasi dan protokol. Ternyata effek dari spesifikasi yanhg dihasilkan sangat siginifikan sehingga ISO mengakreditasi IETF sebagai badan standard internasional di akhir 1994. Hubungan organisasi dan proses standarisasi di terangkan di RFC 2028 dan RFC 2031. Prosedur dan tata kerja IETF di terangkan di RFC 2418.

• Internet Engineering Steering Group (IESG) (http://www.ietf.org/iesg) adalah badan lain dari IAB. IESG memberikan arahan untuk IETF.

• Internet Research Task Force (IRTF) (http://www.irtf.org/) terdiri dari beberapa group penelitian jangka panjang yang memberi arah pada evolusi dan masa depan Internet.

• RFC Editor (http://www.rfc-editor.org/), RFC Editor adalah penerbit dari RFC dan bertanggung jawab untuk mereview semua dokumen RFC. RFC Editor menjaga file utama dari RFC di kenal sebagai “RFC Index”, yang dapat dicari secara online. Selama 30 tahun, RFC editor adalah Almarhum (http://www.postel.org/remembrances/); hari ini RFC editor adalah sebuah group kecil yang di danai oleh ISOC.

• Internet Engineering Planning Group (IEPG) (http://www.iepg.org/) mengkoordinasikan operasi Internet secara global. Group ini membantu para Internet Service Provider (ISP) untuk dapat beroperasi di global Internet.

• Internet Assigned Number Authority (IANA) (http://www.iana.org/) mengkoordinasi secara terpusat berbagai nomor, parameter, domain name system, top level domain dll. Dimasa lalu fungsi IANA dilakukan oleh satu orang saja, yaitu, almarhum Jon Postel.

• Internet Corporation for Assigned Names and Numbers (ICANN) (http://www.icann.org/) adalah sebuah organisasi internasional non-profit yang bertanggung jawab untuk mengalokasikan IP address, alokasi identifier protokol, manajemen top level domain generic (gTLD) dan country code (ccTLD), managemen root server. Pada dasarnya ICANN menggantikan fungsi IANA.

• Forum of Incident Response and Security Teams (FIRST) (http://www.first.org/) mengkoordinasikan sejumlah Computer Emergency Response Teams (CERTs) yang beranggotakan lebih dari 100 banyak negara, lembaga dan ISP di seluruh dunia.

• World Wide Web Consortium (W3C) (http://www.w3.org/) memang bukan lembaga administratif Internet. Tapi sejak Oktober 1994, W3C memimpin dalam pengembangan protocol untuk World Wide Web dan menjamin interoperabilitasnya. W3C mempunyai lebih dari 400 anggota dan telah menerbitkan lebih dari 20 spesifikasi teknis yang berkaitan dengan infrastruktur Web.

Standar Internet datang dari badan kerja IETF. Badan ini ini terdiri dari pada peneliti dan engineer yang sehari harinya bekerja di bidang pengembangan spesifikasi Internet. Tiap kelompok kerja (working group) memiliki bidang dan tanggung-jawab masing masing. Hampir keseluruhan aktivitas kelompok ini dilakukan melalui e-mail. Akses terhadap aktivitas kelompok ini tersedia bagi setiap orang yang berminat. Dan karena tidak ada keanggotaan secara formal, cara untuk bergabung ke kelompok IETF ini ialah mengikuti mailing list kelompok tersebut.

Gambar 1: Lembaga Tinggi Internet Proses pembentukan standar Internet

Sebelum menjadi RFC, keseluruhan usulan spesifikasi protokol tersebut harus diterbitkan sebagai Internet Draft. Dokumen ini bisa diterbitkan oleh siapa saja, baik itu badan kerja IETF, kelompok lain yang berminat, maupun individual. Oleh IETF, Internet Draft ini ditempatkan dalam beberapa FTP server di Internet, agar dapat diakses oleh pihak pihak yang ingin melakukan evaluasi. Dokumen Internet Draft hanya memiliki umur 6 bulan. Setelah umurnya habis, dokumen dihapus dari server. Mekanisme detail untuk membuat sebuah RFC dapat dilihat di http://www.rfc- editor.org.

Dokumen Internet Draft dievaluasi oleh para ahli teknis Internet anggota IETF dan editor RFC, untuk kemudian diberi klasifikasi.

Terdapat lima (5) jenis klasifikasi yaitu:

1. Required - Internet draft yang dianggap sangat penting sehingga wajib diterapkan pada semua host dan router TCP/IP. 2. Recommended - Semua host dan router dianjurkan untuk menerapkan standar tersebut. 3. Elective - Implementasinya optional. 4. Limited Use - Klasifikasi ini diberikan jika standar hanya dapat digunakan secara terbatas. 5. Not Recommended - Standar tidak dianjurkan untuk diterapkan

Ketika protokol selesai dievaluasi dan sudah saat nya distandarkan, dokumen Internet Draft diterbitkan dalam bentuk Request for Comment (RFC). Dengan dipublikasikannya RFC, dokumen ini memasuki tahap tahap pengembangan, ujicoba, serta pengesahan.

Internet Standard ini dibagi menjadi 3 jenis menurut “kematangannya“ (Maturity Level). Pertama- tama, dokumen tersebut diberi label Proposed Standard. Label ini menunjukkan bahwa dokumen diatas dianggap sudah lengkap secara teknis dan teoretis, namun belum cukup memiliki pengalaman operasional di lapangan.

Fase berikutnya ialah Draft Standard. Fase ini boleh dimasuki oleh suatu standar jika dalam berbagai macam implementasinya, masing masing pihak telah menunjukkan interoperabilitas.

Langkah yang paling akhir ialah Internet Standard. Internet Standard ini ialah spesifikasi yang telah matang serta memiliki pengalaman operasional yang cukup signifikan. Gambar 2: Level Standard di Internet

Tidak semua dokumen RFC berada dalam Internet Standard Track. Terdapat juga jalur lain, misalnya Experimental, Informational, atau Historic.

Isi RFC yang telah dipublikasikan tidak pernah direvisi. Jika protokol yang bersangkutan mengalami revisi, IETF akan menerbitkan RFC baru dan membuat RFC lama tidak berlaku.

Layanan di Internet Sejak awal perkembangan TCP/IP dan Internet hingga sekarang, telah semakin banyak layanan yang diberikan oleh jaringan TCP/IP. Layanan-layanan TCP/IP dapat diakses menggunakan program client yang spesifik untuk layanan tersebut atau menggunakan web browser untuk jenis layanan tertentu. Web browser menggunakan konsep URL (Uniform Resource Locator) untuk mengakses layanan tertentu pada jaringan TCP/IP dan Internet. Format URL adalah sebagai berikut:

:

URL mengandung nama skema yang digunakan () yang diikuti oleh tanda titik dua dan string () yang pengartiannya tergantung skema yang digunakan. Contoh URL misalnya:

ftp://ftp.cdrom.com/pub/ http://www.yahoo.com/Arts/Humanities/ mailto:[email protected] file:///D:/CNRG Data/Netscape/REC-html32.html

Dari contoh-contoh URL di atas terlihat skema untuk mengakses resource di jaringan TCP/IP. URL ftp://ftp.cdrom.com/pub/ menyatakan akses layanan FTP di host ftp.cdrom.com pada direktori /pub/. URL mailto:[email protected] untuk mengirim e-mail kepada [email protected]. Layanan yang diciptakan pada awal perkembangan TCP/IP adalah FTP (File Transfer Protocol). Dengan protokol ini, komputer-komputer dapat saling mengirimkan file. Pengiriman file ini dapat dilakukan dalam mode ASCII untuk file-file teks atau mode binary untuk file-file dengan tipe byte- stream, misal: file gambar. Contoh transaksi FTP baik di DOS maupun di shell Linux secara text tidak berbeda jauh, seperti tampak pada contoh di bawah ini.

Ftp 192.168.0.1 Connected to 192.168.0.1. 220 (vsFTPd 2.0.3) User (192.168.0.1:(none)): onno 331 Please specify the password. Password: 230 Login successful. ftp> dir *.txt 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-rw-r-- 1 500 500 1268 Dec 04 08:05 af.txt -rw-rw-r-- 1 500 500 1116 Dec 04 08:05 direction.txt -rw-rw-r-- 1 500 500 617 Dec 04 08:05 ied-fitri.txt -rw-rw-r-- 1 500 500 2320 Dec 04 08:05 kemayoran.txt -rw-rw-r-- 1 500 500 370 Dec 04 08:05 ssl-test.txt -rw-rw-r-- 1 500 500 554 Dec 04 08:05 sukses.txt -rw-r--r-- 1 500 500 83 Dec 04 08:05 tanya.txt 226 Directory send OK. ftp: 3070 bytes received in 0.01Seconds 307.00Kbytes/sec. ftp> get sukses.txt 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for sukses.txt (554 bytes). 226 File send OK. ftp: 554 bytes received in 0.00Seconds 554000.00Kbytes/sec. ftp> quit 221 Goodbye. Layanan World Wide Web (WWW) sampai saat ini adalah layanan yang paling populer di antara seluruh jenis layanan TCP/IP. Server WWW diakses dengan menggunakan Web browser Internet Explorer dan Firefox. Protokol yang digunakan untuk layanan WWW ini adalah HTTP (Hypertext Transfer Protocol). Versi HTTP terakhir adalah HTTP/2 atau web 2.0, yang di dorong pengembangannya oleh Google. W3C http://www.w3c.org mendorong pengembangkan HTML5 maupun berbagai platform / device berbasis web.

Layanan e-mail saat ini termasuk aplikasi yang kedua populer di Internet. Protokol yang digunakan untuk layanan ini adalah SMTP (Simple Mail Transport Protocol) untuk pengiriman e-mail, POP (Post Office Protocol) dan IMAP (Internet Message Access Protocol) untuk mengambil e-mail dari server. E-mail dapat juga mengirimkan data selain teks biasa dengan menggunakan MIME (Multipurpose Internet Mail Extensions).

Layanan Internet Messaging atau istilah keren-nya Chatting merupakan layanan interaktif yang paling populer di Internet. Pada masa lalu barangkali kita mengenal Yahoo Messanger atau YM. Hari ini tampaknya cukup banyak kompetitor YM, seperti Facebook, Instagram, WhatsApp, Telegram dan Twitter yang mempunyai fasilitas lebih kaya dari pada YM. Dengan smartphone Android, chatting menjadi media yang sangat menarik bahkan mengalahkan SMS dan telepon konvensional.

Layanan yang lain yang tidak kalah menarik adalah Telepon melalui Internet yang sering di sebut sebagai Voice over Internet Protocol (VoIP). Pada dasarnya ada dua (2) teknologi Telepon melalui Internet, yaitu, H.323 dan Session Initiation Protocol (SIP). H.323 merupakan teknologi lama yang juga mendasari VoIP Merdeka yang di kembangkan di tahun 2000. Di tahun 2005-2006, kita mulai mengembangkan teknologi Telepon melalui Internet berbasis SIP. Indonesia pernah mengoperasikan sentral telepon paling besar terletak di VoIP Rakyat http://www.voiprakyat.or.id yang di motori oleh Anton Raharja. Perlu di catat bahwa dengan menggunakan VoIP Rakyat, kita juga dapat menelepon pesawat telepon di seluruh dunia, karena VoIP Rakyat telah di konfigurasi untuk meneruskan panggilan telepon ke banyak tempat di seluruh dunia secara gratis. Tentunya jika anda menguasai teknologi Internet Telepon Gateway, kita dapat dengan mudah menyambungkan ke extension yang ada di kantor, bahkan menyambungkan ke Telkom atau selular di Indonesia. Perkembangan teknologi VoIP, saat ini sudah mulai merambah ke selular dengan teknologi open source BTS (OpenBTS) yang tersedia source code-nya secara terbuka untuk 2G dan 3G sehingga kita dapat dengan murah mengembangkan selular di pedesaan seharga Rp. 150 juta-an / unit. Detail tentang OpenBTS bisa di baca di buku “Bongkar Rahasia OpenBTS Untuk Jaringan Operator Seluler” di terbitkan oleh Andipublisher.com

Tentunya masih banyak lagi aplikasi dari Internet, termasuk di antaranya adalah Video Conference, Broadcast Radio dan televisi melalui Internet atau di kenal sebagai streaming audio atau streaming video, seperti Youtube. Streaming di Internet menjadi jauh lebih menarik daripada TV Digital konvensional. Semua menjadi sangat menarik karena dukungan perangkat smartphone dan jaringan wireless (WiFi & Selular) berkecepatan tinggi yang semakin banyak di Indonesia.

Asumsi Peralatan / Sistem Operasi Pada hari ini banyak sekali peralatan jaringan komputer yang ada di pasaran. Akan sangat sulit sekali untuk dapat membahas contoh aplikasi mengacu pada sedemikian banyak peralatan.

Buku ini berusaha mengarahkan agar kita dapat membuat sendiri peralatan yang dibutuhkan. Oleh karena itu, dasar asumsi peralatan yang digunakan minimal adalah:

• Komputer dengan prosesor minimal Pentium. • Ada card LAN. • Memory 512Mbyte.

Alternatif lain, kita dapat juga menggunakan komputer kecil seperti RaspberryPi untuk mempraktekan apa yang di jelaskan dalam buku ini. Informasi tentang RaspberryPi bisa di lihat di https://www.raspberrypi.org/. Sistem operasi yang banyak digunakan adalah Noobs dan Raspbian yang bisa di ambil dari situs raspberrypi. Sistem operasi yang digunakan di sini lebih banyak mengacu kepada Linux, khususnya Ubuntu. Bagi mereka yang sedang belajar di SMK sering kali menggunakan sistem operasi . Debian adalah Bapak dari Ubuntu, jadi harusnya perintah yang digunakan tidak berbeda terlalu jauh.

Sistem operasi Linux / Ubuntu / Debian dapat di ambil di Internet secara bebas di Internet, seperti http://kambing.ui.ac.id atau membeli CD-nya dari http://www.gudanglinux.com, http://juragan.kambing.ui.ac.id.

Mungkin hanya sebagian kecil contoh akan menggunakan Windows, karena memang fasilitas jaringan yang ada di Windows jauh lebih terbatas daripada di Linux.

Referensi Bahan untuk mengerti lebih jauh tentang berbagai subjek / standard Internet sangat di sarankan untuk membaca Request For Comment (RFC) yang dapat di ambil dari http://www.rfc- editor.org/download.html. Koleksi seluruh RFC yang menjadi satu kesatuan dalam format ZIP atau tar.gz cukup besar & mencapai 55+ Mbyte. Lebih di sarankan untuk mengambil kumpulan yang lebih kecil.

Untuk acuan praktis mengoperasikan Linux terutama untuk jaringan Internet, sangat di sarankan untuk membaca Linux Howto & Guide yang semua-nya dapat di ambil dari Web The Linux Documentation Project (TLDP) http://www.tldp.org/, atau pada Wiki seperti http://lms.onnocenter.or.id/wiki.

Terus terang, salah satu kesulitan utama untuk mempelajari teknologi Internet adalah bukan mencari bahan bacaan, tapi mengerti apa yang kita baca karena bahan bacaan sudah sedemikian mudah dan banyak di Internet. Cara paling sederhana untuk bisa mengerti teknologi Internet adalah mencoba mempraktekan berbagai contoh yang tersedia. Untuk itu, amat sangat di sarankan untuk menggunakan sistem operasi Linux. BAB 2: Sejarah TCP/IP dan Internet

Protokol TCP/IP dan Internet sebetulnya berbeda. Tetapi sejarah kedua-nya saling bersinggungan cukup rapat. Pada bagian ini akan diceritakan sekilas sejarah Internet di dunia maupun di Indonesia. Para pembaca yang tertarik untuk membaca sejarah Internet lebih lanjut, dapat membaca catatan sejarah Internet secara online yang dapat di ambil di http://www.isoc.org/internet/history/.

Sejarah perjuangan Internet di Indonesia dapat anda baca di beberapa situs di Internet, seperti, http://opensource.telkomspeedy.com/wiki dan http://lms.onnocenter.or.id/wiki atau Google dengan keyword “Sejarah Internet Indonesia”.

Saya berharap, pembaca dapat menangkap jiwa dan semangat yang mendasari perkembangan Internet di Indonesia dari catatan sejarah yang ada. Banyak perjuangan yang dilakukan oleh para aktifis agar Internet dapat berkembang di Indonesia hingga ke desa-desa. Kemampuan pemerintah sangat terbatas, perkembangan Indonesia yang sedemikian pesat tidak mungkin terjadi jika tidak ada pengorbanan para aktifis Internet agar rakyat Indonesia melek teknologi & Internet. Jadi Internet sebetulnya bukan sekedar teknologi, ada banyak pengorbanan para aktifis di belakangnya agar Internet menjadi tersedia bagi kita semua di Indonesia.

Bagi anda yang tertarik dengan dokumentasi video tentang Internet, ada beberapa video dokumenter yang menarik, antara lain adalah,

• http://archive.org/details/ComputerNetworks_TheHeraldsOfResourceSharing • http://archive.org/details/nerdtv012 • https://ia600209.us.archive.org/10/items/InternetHistoryAmatureRadio/

Bagi anda yang ingin melihat berbagai workshop / seminar yang saya lakukan, dapat juga di search di youtube.com menggunakan keyword Onno Purbo. Evolusi TCP/IP dan Internet Pada hari ini Internet telah diakui sebagai jaringan yang secara mendasar telah mengubah struktur sosial, politik dan ekonomi, dan dalam banyak hal mengubah batas-batas geografis. Potensi ini semua merupakan realisasi dari berbagai prediksi lebih dari lima puluh tahun yang lalu. Dari sekumpulan catatan tertanggal Agustus 1962 oleh J.C.R.Licklider dari MIT yang membahas "Galactic Network" dan bagaimana interaksi sosial dapat terjadi melalui jaringan. Internet memungkinkan infrastruktur komunikasi nasional & global menjadi sangat mungkin.

Sebelum tahun 1960, komunikasi komputer masih sangat langka. Komunikasi komputer yang ada pun tidak effisien karena menggunakan saluran komunikasi yang ada saat itu, yaitu, circuit switching, yang menggunakan jaringan telepon yang telah ada lebih dari seratus tahun yang lalu di Amerika Utara. Umumnya komunikasi data bersifat burst (sesaat), maka penggunaan jaringan telepon, circuit switching, sangat tidak effisien.

Teknologi fundamental (mendasar) yang mungkinkan Internet beroperasi adalah teknologi packet switching, sebuah jaringan data yang mana semua komponen-nya (host maupun switch) bekerja secara independent, menghilangkan masalah single point-of-failure. Resource jaringan komunikasi tampak seperti dedicated pada pengguna individual, sebetulnya merupakan akumulasi multiplexing dengan batas atas besaran data yang dikirimkan yang pada akhirnya menghasilkan jaringan yang ekonomis. Di awal tahun 1960-an, packet switching akan di temukan. Tahun 1961, Leonard Kleinrock dari MIT mempublikasi paper pertama tentang teori packet switching dan buku tentang hal tersebut di tahun 1964. Tahun 1962, Paul Baran dari Rand Corporation menjelaskan tentang jaringan data store-and forward yang effisien dan handal bagi Angkatan Udara Amerika Serikat. Pada waktu yang sama, Donald Davies dan Roger Scantlebury menawarkan ide yang sama dari kerja mereka di National Physical Laboratory (NPL) di Inggris. Penelitian di MIT (1961-1967), RAND (1962- 1965), dan NPL (1964-1967) terjadi secara independent dan para peneliti tidak saling bertemu sampai saat pertemuan Association for Computing Machinery (ACM) tahun 1967. Istilah packet di adopsi dari pekerjaan di NPL.

Internet modern dimulai pada saat U.S. Department of Defense (DoD) membiayai experimen untuk menyambungkan lokasi penelitian yang didanai oleh DoD di US. Pertemuan ACM 1967 juga merupakan awal disain dari ARPANET - nama dari dari Department of Defence Advanced Research Project Agency (ARPA) - yang di publikasikan oleh Larry Roberts. Desember 1968, ARPA memberikan kontrak kepada Bolt Beranek dan Newman (BBN) untuk mendesign dan mengoperasikan jaringan packet switching pada kecepatan 50kbps. September 1969, node pertama APRANET di install di University of California at Los Angeles (UCLA), beberapa bulan berikutnya node di Stanford Research Institute (SRI), University of California at Santa Barbara (UCSB), dan University of Utah. Dengan empat node di akhir 1969, ARPANET berkembang ke seluruh amerika serikat di tahun 1971 dan tersambung ke eropa di tahun 1973.

ARPANET memberikan nyawa bagi beberapa protokol yang baru untuk packet switching. Salah satu hasil dari APRANET yang berumur panjang adalah user-network protocol yang menjadi interface standard antara pengguna dengan jaringan packet switch; yang dikenal sebagai ITU-T (dulu CCITT) rekomendasi X.25. Dengan "standard" interface yang ada memberikan semangat bagi BBN untuk memulai Telenet di tahun 1974, sebuah paket-switched data servis komersial yang kemudian menjadi bagian dari Sprint's X.25 servis.

Protokol komunikasi host-to-host yang pertama kali di gunakan ARPANET disebut Network Control Protocol (NCP). Kemudian hari ternyata NCP tidak sanggup menangani perkembangan beban traffic yang ada. Tahun 1974, protokol komunikasi yang lebih reliable di usulkan dan di implementasikan di seluruh APRANET, berbasis pada Transmission Control Protocol (TCP) untuk komunikasi end-to-end. Akan tetapi protokol ini tampaknya terlalu overkill (canggih) untuk digunakan di gateway perantara (hari ini biasa kita sebut sebagai router), oleh karena itu tahun 1978 sebuah design untuk memisahkan tanggung jawab dari sepasang protocol; protokol baru Internet Protocol (IP) bertanggung jawab untuk me-routing paket dan komunikasi device-to-device (seperti, host-to-gateway atau gateway-to-gateway) dan TCP untuk komunikasi end-to-end host secara reliable. TCP dan IP awalnya di pikirkan sebagai sebuah protokol, sekumpulan protocol, pada dasarnya terdiri dari kumpulan protocol dan aplikasinya, yang biasanya kita kenal sebagai TCP/IP.

Versi orisinil dari TCP dan IP yang kita gunakan pada hari ini ditulis pada bulan September 1981, walaupun ke dua-nya memperoleh banyak modifikasi dikemudian hari, seperti IP versi 6 (IPv6) yang spesifikasinya di release Desember 1995. Tahun 1993, DoD memerintahkan bahwa semua sistem komputer mereka harus menggunakan TCP/IP untuk komunikasi jarak jauhnya. Hal ini menaikan pentingnya APRANET.

Aplikasi Internet yang pertama kali ditemukan adalah FTP. Menyusul kemudian e-mail, dan telnet. E-mail menjadi aplikasi yang paling populer di masa ARPANET. Tahun 1979 tercatat sebagai tahun berdirinya USENET yang pada awalnya menghubungkan Universitas Duke dan UNC. Grup yang pertama kali dibentuk dalam USENET adalah grup net.*. Tahun 1983, ARPANET terpisah menjadi dua komponen. Satu komponen, tetap dikenal sebagai ARPANET, yang digunakan untuk menyambungkan pusat penelitian dan akademik. Yang lain, dikenal sebagai MILNET, digunakan untuk membawa trafik militer dan merupakan bagian dari Defence Data Network (DDN). Di tahun yang sama kita melihat kenaikan popularitas TCP/IP dengan dimasukannya kernel komunikasi ke implementasi UNIX dari University of California, 4.2BSD (Berkeley Software Distribution) UNIX.

Pada tahun 1984 jumlah host di Internet melebihi 1000 buah. Pada tahun itu pula diperkenalkan Domain Name System (DNS) yang mengganti fungsi tabel nama host. Sistem domain inilah yang sampai saat ini kita gunakan untuk menuliskan nama host.

Tahun 1986, National Science Foundation (NSF) membangun tulang punggung jaringan komputer untuk menyambungkan National Center for Atmospheric Research (NCAR) dan empat pusat superkomputer regional yang dibiayai oleh NSF. Jaringan ini dikenal sebagai NSFNET, awalnya dimaksudkan sebagai backbone dari network lainnya, dan tidak sebagai mekanisme interkoneksi dari system-system individual.

"Appropriate Use Policy" didefinisikan oleh NSF mem batasi traffic untuk keperluan non- komersial. NSFNET terus berkembang dan memberikan sambungan antara jaringan yang dibiayai NSF dan non-NSF, yang kemudian dikenal sebagai Internet hari ini.

Pada tahun 1987 berdiri UUNET yang saat ini merupakan salah satu provider utama Internet. Tercatat pula pada tahun tersebut jumlah host melewati angka 10.000. Setahun kemudian kecepatan jaringan tulang punggung NSFNET ditingkatkan menjadi T1 (1,544Mbps). Di samping itu juga terdapat beberapa negara di Eropa yang masuk ke jaringan NSFNET.

Awal spesifikasi NSFNET mampu untuk multiprotocol, TCP/IP digunakan untuk interkonektifitas dengan tujuan akhir untuk migrasi ke Open System Interconnection (OSI). NSFNET awalnya terdiri dari sambungan 56Kbps dan berhasil di upgrade ke sambungan T1 1.544Mbps di tahun 1989. Migrasi ke jaringan yang di manage secara professional di supervisi oleh konsorsium yang terdiri dari Merit (Michigan state regional network bermarkas di University of Michigan), IBM, dan MCI. Advanced Network & Services, Inc. (ANS), sebuah perusahaan non-profit dibentuk oleh IBM dan MCI, bertanggung jawab untuk mensupervisi transisi NSFNET backbone ke T3 (44.736 Mbps) di akhir 1991. Pada saat yang sama, NSF mendanai beberapa Internet Servis Provider regional untuk memberikan sambungan ke institusi pendidikan dan berbagai lokasi penelitian yang didanai NSF.

Tahun 1993, NSF memutuskan untuk tidak masuk ke usaha untuk mengoperasikan & mendanai jaringan, tetapi kembali mendanai penelitian bidang supercomputing dan komunikasi kecepatan tinggi. Di samping itu, ada tekanan yang sangat besar untuk mengkomersialkan internet. Tahun 1989, sebuah gateway percobaan berhasil mengkaitkan MCI, CompuServe, dan Internet mail services. Pada saat itu, untuk pertama kali-nya pengguna komersial non-akademik dan non-hardcore mengetahui kemampuan Internet. Tahun 1991, Commercial Internet Exchange (CIX) Association di bentuk oleh General Atomics, Performance Systems International (PSI), dan UUNET Technologies untuk mempromosikan dan memberikan service backbone Internet komersial. Hal ini semua memberikan tekanan yang sangat besar dari non-NSF ISP untuk membuka jaringan ke semua pengguna.

Tahun 1994, pelaksanaan pengurangan campur tangan NSF di Internet publik. Struktur yang baru terdiri atas tiga bagian, yaitu:

• Network Access Points (NAPs), dimana ISP individual melakukan interkoneksi. NSF awalnya mendanai empat (4) dari NAP: Chicago (di operasikan oleh AMeritech), New York (really Pensauken, NJ, di operasikan oleh Sprint), San Francisco (di operasikan oleh Pacific Bell, sekarang SBC), dan Washington, D.C. (MAE-East, dioperasikan oleh MFS, sekarang bagian dari Worldcom).

• very High Speed Backbone Network Service, sebuah jaringan interkoneksi NAPs dan pusat- pusat yang di danai NSF, di operasikan oleh MCI. Jaringan ini di instalasi tahun 1995 dan beroperasi pada kecepatan OC-3 (155.52 Mbps); kemudian di upgrade ke OC-12 (622.08 Mbps) tahun 1997.

• Routing Arbiter, untuk menjamin cukupnya routing protokol untuk Internet.

ISP yang dibiayai NSF diberikan waktu lima (5) tahun dengan biaya yang berkurang agar dapat mendanai diri sendiri secara konmersial di tahun ke lima. Pendanaan ini berhenti tahun 1998 dan bermunculan banyak NAP untuk memberikan servis. Terminologi hari ini dikenal sebagai three (3) tier ISP, yaitu:

• Tier 1 adalah ISP nasional di Amerika Serikat, atau mereka yang memiliki keberadaan secara nasional dan tersambung pada minimal tiga (3) dari empat (4) NAP awal. ISP nasional (Tier 1) ini termasuk AT&T, Sprint dan Worldcom.

• Tier 2 adalah regional ISP, atau mereka yang mempunyai keberadaan regional dan tersambung pada kurang dari tiga regional NAP. Contoh regional ISP adalah Adelphia, BellAtlantic.net, dan BellSouth.net.

• Tier 3 adalah ISP lokal, atau mereka yang tidak mempunyai sambungan ke NAP tapi memberikan servis melalui ISP upstream.

Tentunya banyak cerita lainnya tentang NAP terutama agar secara ekonomis dapat mandiri. Salah satunya adalah Metropolitan Fiber Systems (MFS) — memutuskan untuk membuat NAP sendiri. Salah satu NAP pertama MFS adalah MEA-East. MEA kepanjangan dari "Metropolitan Area Ethernet." Melalui fasilitas MEA ini para ISP interkonek router mereka melalui Ethernet saja. Ethernet LAN kemudian hari berubah menjadi 100Mbps FDDI ring, dan "E" menjadi "Exchange". North American Network Operators Group (NANOG) merupakan forum diskusi dan pertukaran informasi teknis dan koordinasi antar network service provider. Pertemuan mereka tiga (3) kali setahun, NANOG menjadi sangat penting untuk menjaga ke stabilan servis Internet di Amerika Utara. Awalnya memang di danai oleh NFS, saat ini NANOG menerima pendanaan dari registrasi konferens dan donasi vendor.

Di tahun 1988, DoD dan sebagian besar badan pemerintah di Amerika Serikat memilih untuk mengadopsi protokol OSI. TCP/IP mereka lihat sebagai solusi sementara yang hanya beroperasi di peralatan komputer yang terbatas saja. Di samping itu, OSI hanya tertinggal beberapa tahun dari TCP/IP. Pada bulan Agustus 1990, DoD memutuskan untuk menggunakan protokol OSI di semua produk komunikasi komputernya dan penggunaan TCP/IP tidak akan di lanjutkan. Di tambah, dalam definisi U.S. Government OSI Profile (GOSIP) yang berisi set protocol yang harus di dukung untuk di jual ke pemerintah federal U.S. tidak memasukan TCP/IP ke dalamnya.

Walaupun dalam tekanan yang demikian keras, perkembangan TCP/IP terus berlanjut di akhir 1980- an bersama dengan perkembangan Internet. Perkembangan TCP/IP terjadi di lingkungan yang terbuka (open) walaupun komunitas terbuka ini relatif kecil karena sedikitnya site ARPA/NSF. Terutama di dorong oleh keyakinan "We reject kings, presidents, and voting. We believe in rough consensus and running code" [Dave Clark, M.I.T.]. Keyakinan ini yang ternyata membuahkan para hacker yang militan dan membangun berbagai perangkat yang dibutuhkan dalam pengembangan Internet. Pada akhirnya, di tahun 1994, National Institute for Standards and Technology (NIST) menyarankan agar GOSIP memasukan TCP/IP dan membuang persyaratan "hanya-OSI".

Awal Sejarah Internet Indonesia RMS Ibrahim, Suryono Adisoemarta, Muhammad Ihsan, Robby Soebiakto, Putu, Firman Siregar, Adi Indrayanto merupakan beberapa nama-nama legendaris di awal pembangunan Internet Indonesia yang mungkin kurang banyak dikenal oleh khalayak Internet Indonesia di tahun 2000 ini. Masing-masing personal telah mengkontribusikan keahlian dan dedikasinya dalam membangun cuplikan-cuplikan sejarah jaringan komputer di Indonesia. Pada waktu itu di awal tahun 1990-an jaringan Internet di Indonesia lebih dikenal sebagai paguyuban network. Semangat kerjasama, kekeluargaan & gotong royong sangat hangat dan terasa diantara para pelakunya. Agak berbeda dengan suasana Internet Indonesia hari ini yang terasa lebih komersial dan individual di sebagian aktifitasnya terutama untuk tujuan komersial, seperti e-commerce.

Tulisan-tulisan tentang keberadaan jaringan Internet di Indonesia dapat di lihat di beberapa artikel yang saya tulis di media cetak seperti KOMPAS berjudul "jaringan komputer biaya murah menggunakan radio" di akhir tahun 1990 / awal 1991-an. Juga beberapa artikel pendek saya di Majalah Elektron Himpunan Mahsiswa Elektro ITB di tahun 1989-an. Tidak terasa waktu demikian cepat berlalu, tanpa terasa hal itu telah melewati kita semua lebih dari 20 tahun yang lalu.

Inspirasi tulisan-tulisan awal Internet Indonesia datangnya dari kegiatan kami di amatir radio khususnya rekan-rekan di Amatir Radio Club (ARC) ITB di tahun 1986-an. Bermodal pesawat Rig HF SSB Kenwood TS430 milik Harya Sudirapratama YC1HCE dengan komputer Apple II milik Onno W. Purbo YC1DAV (sekarang YC0MLC) sekitar belasan anak muda ITB seperti Harya Sudirapratama YC1HCE, J. Tjandra Pramudito YB3NR (almarhum), Suryono Adisoemarta N5SNN (sekarang YD0NXX) bersama saya YC1DAV, kami berguru pada para senior amatir radio seperti Robby Soebiakto YB1BG, Achmad Zaini YB1HR (alm), Yos YB2SV, YB0TD di band 40m (7MHz). Mas Robby Soebiakto YB1BG merupakan suhu diantara para amatir radio di Indonesia khususnya untuk komunikasi data packet radio yang kemudian di dorong ke arah TCP/IP, teknologi packet radio TCP/IP yang kemudian di adopsi oleh rekan-rekan BPPT, LAPAN, UI, & ITB yang kemudian menjadi tumpuan PaguyubanNet di tahun 1992-1994-an. Mas Robby Soebiakto YB1BG adalah koordinator IP pertama dari AMPR-net (Amatir Packet Radio Network) yang di Internet dikenal dengan domain AMPR.ORG dan IP 44.132. Saat ini AMPR-net Indonesia di koordinir oleh Onno W. Purbo YC0MLC (ex YC1DAV). Koordinasi dan aktifitas-nya mengharuskan seseorang untuk menjadi anggota ORARI dan di koordinasi melalui mailing list amatir radio, orari- [email protected].

Di tahun 1986-1987-an awal perkembangan jaringan paket radio di Indonesia Mas Robby YB1BG juga merupakan pionir dikalangan teman-teman amatir radio Indonesia yang mengkaitkan jaringan amatir Bulletin Board System (BBS) yang merupakan jaringan e-mail store and forward yang mengkaitkan banyak "server" BBS amatir radio seluruh dunia agar e-mail dapat berjalan dengan lancar. Di awal tahun 1990-an komunikasi antara saya yang waktu itu berada di Canada dengan panggilan YC1DAV/VE3 rekan-rekan amatir radio di Indonesia dilakukan melalui jaringan amatir radio ini. Dengan peralatan PC/XT dan walkie talkie 2 meteran, komunikasi antara Indonesia- Canada terus dilakukan dengan lancar melalui jaringan amatir radio. Mas Robby YB1BG ternyata berhasil membangun gateway amatir satelit di rumahnya di Cinere melalui satelit-satelit OSCAR milik amatir radio kemudian kami melakukan komunikasi lebih lanjut yang lebih cepat antara Indonesia-Canada. Pengetahuan secara perlahan di transfer melalui jaringan amatir radio ini.

RMS Ibrahim (biasa dipanggil Ibam) motor dibalik operasional-nya Internet di Universitas Indonesia. Ibam pernah menjadi operator yang menjalankan gateway ke Internet dari UI yang merupakan bagian dari jaringan universitas di Indonesia UNINET. Protokol UUCP yang lebih sederhana daripada TCP/IP digunakan terutama digunakan untuk mentransfer e-mail & newsgroup. RMS Ibrahim juga merupakan pemegang pertama Country Code Top Level Domain (ccTLD) yang dikemudian hari dikenal sebagai IDNIC (http://www.idnic.net.id).

Muhammad Ihsan adalah staff peneliti di LAPAN Ranca Bungur tidak jauh dari Bogor yang di awal tahun 1990-an di dukung oleh kepala-nya Bu Adrianti dalam kerjasama dengan DLR (NASA-nya Jerman) mencoba mengembangkan jaringan komputer menggunakan teknologi packet radio pada band 70cm & 2m. Jaringan tersebut dikenal sebagai JASIPAKTA dengan dukungan DLR Jerman. Protokol TCP/IP di operasikan di atas protokol AX.25 pada infrastruktur packet radio. Pak Ihsan ini yang mengoperasikan relay penghubung antara ITB di Bandung dengan gateway Internet yang ada di BPPT.

Pak Firman Siregar merupakan salah seorang motor di BPPT yang mengoperasikan gateway packet radio bekerja pada band 70cm. PC 386 sederhana menjalankan program NOS di atas sistem operasi DOS digunakan sebagai gateway packet radio TCP/IP. IPTEKNET masih berada di tahapan sangat awal perkembangannya saluran komunikasi ke internet masih menggunakan X.25 melalui jaringan SKDP terkait pada gateway di DLR Jerman.

Putu sebuah nama yang melekat dengan perkembangan PUSDATA Departemen Perindustrian waktu masa kepemimpinan Pak Tungki Ariwibowo menjalankan BBS pusdata.dprin.go.id yang hingga saat ini masih beroperasi. Di masa awal perkembangannya BBS Pak Putu sangat berjasa dalam membangun pengguna e-mail khususnya di jakarta Pak Putu sangat beruntung mempunyai menteri Pak Tungki Ariwibowo yang "maniac" IT dan yang mengesankan dari Pak Tungki beliau akan menjawab e-mail sendiri. Barangkali Pak Tungki adalah menteri pertama di Indonesia yang menjawab e-mail sendiri. Saya sempat terkagum-kagum memperoleh jawaban e-mail dari seorang menteri Pak Tungki yang waktu itu sedang berada di Amerika Selatan dalam kunjungan kerjanya. Bukan main, seorang menteri tapi tetap menyempatkan diri untuk membalas e-mail.

Mas Suryono Adisoemarta N5SNN di akhir 1992 kembali ke Indonesia, kesempatan tersebut tidak dilewatkan oleh anggota Amatir Radio Club ARC ITB seperti Basuki Suhardiman (sekarang di AI3 ITB), Aulia K. Arief (sekarang di Jalawave Bandung), Arman Hazairin (pernah menjadi Vice President Telkomsel, dan direktur YellowPages) di dukung oleh Adi Indrayanto (sekarang di ITB) untuk mencoba mengembangkan gateway packet radio di ITB. Berawal semangat & bermodalkan PC 286 bekas barangkali ITB merupakan lembaga yang paling miskin yang nekad untuk berkiprah di jaringan PaguyubanNet. Rekan lainnya seperti UI, BPPT, LAPAN, PUSDATA DEPRIN merupakan lembaga yang lebih dahulu terkait ke jaringan di tahun 1990-an mereka mempunyai fasilitas yang jauh lebih baik daripada ITB. Di ITB modem packet radio berupa Terminal Node Controller TNC merupakan peralatan pinjaman dari Muhammad Ihsan dari LAPAN.

Berawal dari teknologi packet radio 1200bps di atas, ITB kemudian berkembang di tahun 1995-an memperoleh sambungan leased line 14.4Kbps ke RISTI Telkom sebagai bagian dari IPTEKNET akses Internet tetap diberikan secara cuma-cuma kepada rekan-rekan yang lain. September 1996 merupakan tahun peralihan bagi ITB, karena keterkaitan ITB dengan jaringan penelitian Asia Internet Interconnection Initiatives (AI3) sehingga memperoleh bandwidth 1.5Mbps (sekarang 2Mbps) ke Jepang yang terus ditambah dengan sambungan ke TelkomNet & IIX sebesar 2Mbps. ITB akhirnya menjadi salah satu bagian terpenting dalam jaringan pendidikan di Indonesia yang menamakan dirinya AI3 Indonesia yang mengkaitkan 25+ lembaga pendidikan di Indonesia.

Jaringan pendidikan ini bukan hanya monopoly ITB saja, jaringan pendidikan lain yang lebih besar lagi adalah jaringan SMK yang berkembang pesat dibawah pimpinan DR. Gatot HP yang tahun 2000-2005 menjadi direktur Pendidikan Menengah Kejuruan DIKMENJUR.Jaringan SMK telah mengkaitkan 10.000 SMK di seluruh Indonesia. Belum lagi kalau bisa mengkaitkan 10.000 SMU ke Internet pasti tidak kalah serunya dengan mengkaitkan 3000 PTN / PTS di seluruh Indonesia ke Internet.

Di tahun 1989-1990-an, teman-teman mahasiswa Indonesia di luar negeri mulai membangun tempat diskusi di Internet, salah satu tempat diskusi Indonesia di Internet yang pertama berada di [email protected]. Berawal dari mailing list pertama di Janus diskusi-diskusi antar teman-teman mahasiswa Indonesia diluar negeri pemikiran alternatif berserta kesadaran masyarakat ditumbuhkan. Pola mailing list ini ternyata terus berkembang dari sebuah mailing list legendaris di janus, akhirnya menjadi sangat banyak sekali mailing list Indonesia terutama di host oleh server di ITB. Di tahun 2000-an, sebagian besar mailing list Indonesia bermarkas di yahoogroups.com yang dapat di akses melalui Web http://groups.yahoo.com. Mailing list pernah menjadi salah satu sarana yang sangat strategis dalam pembangunan komunitas di Internet Indonesia. Saat ini sarana berkumpul komunitas menjadi sangat beragam dengan keberadaan WhatsApp, Twitter, Facebook group, Instagram, Telegram dan masih banyak lagi.

Perjuangan Infrastruktur Internet Komersial Indonesia Cara paling mudah untuk melihat perkembangan / prejuangan infrastruktur Internet di Indonesia adalah melalui perkembangan / ekspansi dari Internet Servis Provider (ISP).

ISP komersial pertama di Indonesia adalah IndoInternet, yang dikenal sebagai IndoNet http://www.indo.net.id.. Di tahun 1994-an mulai beroperasi IndoNet yang dipimpin oleh Sanjaya. IndoNet merupakan ISP komersial pertama Indonesia pada waktu itu pihak POSTEL belum mengetahui tentang celah-celah bisnis Internet & masih sedikit sekali pengguna Internet di Indonesia. Seingat saya sambungan awal ke Internet dilakukan menggunakan dial-up oleh IndoNet, sebuah langkah yang cukup nekad barangkali. Lokasi IndoNet masih di daerah Rawamangun di kompleks dosen UI kebetulan ayah Sanjaya adalah dosen UI.

Seperti kita ketahui bahwa perkembangan usaha bisnis Internet di Indonesia semakin marak dengan 300+ ISP yang memperoleh lisensi dari pemerintah. Asosiasi ISP (APJII) terbentuk di motori oleh Sanjaya cs di tahun 1998-an. Effisiensi sambungan antar ISP terus dilakukan dengan membangun beberapa Internet Exchange (IX) di Indosat, Telkom, APJII (IIX) & beberapa ISP lainnya yang saling exchange. Detail perkembangan industri Internet di Indonesia dapat di lihat / di akses di Web APJII di bagian statistik https://apjii.or.id/content/utama/39

Pola penyebaran Internet di Indonesia sebetulnya dapat di perkirakan, pada awalnya dimana pengguna masih sedikit dan tidak menguntungkan bagi operator, maka WARNET dan RT/RW-net biasanya akan menjadi ujung tombak untuk pemberdayaan masyarakat & pemberian akses ke Internet. Setelah semakin banyak pengguna yang melek IT maka pasar yang berhasil di bangun oleh WARNET & RT/RW-net akan di ambil oleh operator besar & ISP. WARNET & RT/RW-net akan terpaksa menyingkir ke wilayah-wilayah yang belum ada sinyal khususnya di daerah pinggiran dan pedesaan. Saat buku ini ditulis di akhir tahun 2016, 60-70% pengguna Internet di Indonesia mengakses menggunakan selular & smartphone. Sayangnya, tidak ada ucapan terima kasih maupun bantuan yang diberikan oleh Pemerintah khususnya KEMKOMINFO bagi WARNET & RT/RW-net yang telah bersusah payah mencerdaskan para pengguna pemula Internet di Indonesia. Yang sering terjadi justru sebaliknya, WARNET & RT/RW-net lebih banyak di sweeping masalah ijin ISP atau pembajakan software.

Untuk mengurangi trafik internasional, APJII membentuk beberapa Indonesia Internet Exchange (IIX). Di Jakarta, ada beberapa Internet Exchange, yaitu, di Cyber Building oleh APJII (IIX), di Cyber Building oleh IDC (OpenIX), di duren tiga oleh IDC (OpenIX), dan di daerah Kuningan di operasikan oleh CBN. Selain itu, beberapa IIX lokal seperti di Surabaya, di Jogjakarta sudah beroperasi. Dengan demikian, trafik lokal di masing-masing kota tidak lagi harus di lalukan ke Jakarta.

Perlu di catat bahwa tidak ada negara di dunia yang mengoperasikan Internet Exchange dalam skala besar seperti Indonesia. Johar Alam sering bercerita pada penulis bahwa negara-negara lain banyak belajar pada kita untuk membentuk Internet Exchange di negaranya.

Dari laporan MRTG (Multi Router Traffic Graph) yang di administratori Johar Alam ([email protected]) kita melihat kenaikan bandwidth yang luar biasa dari tahun ke tahun melalui OpenIX ini.

Catatan Peak Traffic Internet di OpenIX (Johan Alam)

Tahun Peak Traffic 1997 1 Mbps 1998 2 Mbps 2000 3 Mbps 2001 40 Mbps 2002 245 Mbps 2006 1.4 Gbps 2009 19 Gbps 2011 60 Gbps 2013 100 Gbps 2016 240 Gbps

Dari catatan Johar Alam, peak traffic Internasional Indonesia tahun 2016 adalah 800Gbps. Sangat tinggi sekali, jauh lebih tinggi daripada peak traffic lokal Indonesia. Indonesia masih banyak tergantung pada situs-situs yang ada di luar Indonesia.

Perbandingan volume trafik antara in-coming dan out-going adalah 1:10 karena Indonesia masih lebih banyak mengkonsumsi informasi & tidak memproduksi informasi.

Jika kita menganalisa trafik di atas, kita akan melihat dengan jelas bahwa terjadi kenaikan yang luar biasa dari Internet di Indonesia. Kenaikan ini masih akan terus terjadi karena dari data International Telecommunication Union (ITU), baru 20+ % rakyat Indonesia yang tersambung ke Internet. Pekerjaan Rumah kita masih banyak untuk menyambungkan 80-90% bangsa ini ke Internet.

Infrastruktur Internet Rakyat Berbasis pada pengembangan konsep infrastruktur telekomunikasi rakyat, yang bertumpu pada teknologi Internet tanpa kabel pada band ISM & UNII di frekuensi 2.4GHz dan 5-5.8 GHz implementasi RT/RW-net dilakukan sejak awal 2000-an. Teknologi Warung Internet yang relatif sederhana dan mapan di kembangkan untuk menyambungkan komputer tetangga menggunakan kabel LAN untuk menjadi RT/RW-net. Secara sederhana sambungan 24 jam ke Internet Service Provider (ISP) yang harganya Rp. 200-800 ribu/bulan, di bagi 20-80 tetangga untuk mencapai biaya operasi Rp. 20-40.000/bulan/ rumah 24 jam ke Internet. Jika dilakukan bertumpu pada pembentukan kebutuhan (demand creation), bukan pembangunan infrastruktur semata, investasi sambungan yang besarnya antara Rp. 1-4 juta akan kembali modal dalam waktu 1-1.5 tahunan. Gilanya, semua dilakukan tanpa perlu bergantung kepada Telkom maupun pemerintah.

Teknologi Internet tanpa kabel menjadi menarik karena diluar negeri frekuensi 2.4 GHz, maupun 5- 5.8 GHz di bebaskan dari ijin frekuensi, akibatnya peralatan komunikasi data pada frekuensi tersebut dapat diperoleh dengan mudah, murah selain mudah dioperasikan (user-friendly). Bayangkan USB WiFi pada kecepatan 54-300 Mbps dapat di peroleh seharga Rp. 150-200.000 per buah, tinggal dibuatkan antenna parabola kecil, antenna wajanbolic atau antenna kaleng susu cukup menjangkau jarak jauh 3-5 km.

Di Indonesia, perjuangan untuk membebaskan 2.4 GHz & 5-5.8 GHz dari penindasan aparat telah menelan banyak korban, berakibat di bebaskannya frekuensi 2.4GHz untuk penggunaan Internet sejak January 2005. Alhamdullillah, di awal tahun 2011, frekuensi 5.8GHz bebas digunakan juga. Saya masih percaya bahwa ISM & UNII band di 2.4 & 5-5.8GHz harus digunakan semaksimal mungkin untuk keperluan pemandaian bangsa dan harus di gratis-kan.

Di masa mendatang, kemungkinan besar kita harus membebaskan juga berbagai frekuensi tinggi lainnya, seperti 24GHz, untuk bisa menyalurkan data kecepatan beberapa Gbps ke masyarakat secara gratis. Peralatan seperti UBNT AirFiber mampu memberikan akses pada kecepatan 1.28Gbps dan sudah mulai di gunakan di Indonesia.

Salah satu kunci strategis memandaikan bangsa adalah meng-internet-kan 220.000+ sekolah (48+ juta siswa) di Indonesia karena biayanya dapat ditekan menjadi Rp. 2000-5000/siswa/bulan bahkan lebih rendah lagi. Jika Internetisasi sekolah berhasil di lakukan, kita akan melihat 48+ juta anak bangsa menjadi fasih Internet menuju knowledge based society di kemudian hari.

Perijinan ISP dari KEMKOMINFO sebetulnya menjadi momok bagi perkembangan Internet di Indonesia. Mungkin, tidak pernah terpikir oleh pemerintah bahwa sebagian besar akses akan berkembang dari jaringan sekolah, jaringan RT/RW-net yang mungkin beroperasi tanpa ijin usaha, atau maksimum sebuah CV saja, dengan peralatan seadanya bahkan dengan router buatan sendiri dari PC. Sayangnya aturan yang ada mengharuskan bahwa hanya operator telekomunikasi yang dapat ijin ISP dari KOMINFO yang bisa menggelar infrastruktur Internet. Padahal dengan murah & mudahnya peralatan untuk membangun Internet, anak2 SMK di Indonesia akan mampu membangun Internet di setiap desa Indonesia. Pertanyaannya, apakah MENKOMINFO sanggup menanda tangani ijin ISP untuk setiap desa Indonesia yang jumlahnya 80.000+ desa?

Perjoeangan berlangsung pula di lini Internet Telepon, beberapa teman sempat merasakan di bui, di interogasi bermalam-malam bahkan tidak segan-segan di sita peralatannya, keberadaan VoIP Merdeka http://voipmerdeka.net yang gratis dan tidak perlu tersambung ke Telkom menjadi jawaban telak bagi regulator. Di motori banyak rekan seperti Judhi Prasetyo, Muhammad Ichsan, Harijanto Pribadi dll. teknologi VoIP Merdeka di kembangkan sehingga mencapai biaya US$ 25-35 per sambungan telepon (SST), jauh lebih murah di banding Telkomflexi yang di klaim US$300/SST, apalagi sambungan telkom biasa yang US$1000/SST. Seluruh ilmu dan teknologi-nya dapat di ambil secara gartis dari berbagai situs.

Anton Raharja ([email protected]) terus mengembangkan teknologi VoIP menggunakan Session Initiation Protocol (SIP) yang lebih maju daripada VoIP Merdeka. Inisiatif Anton cs di kenal sebagai VoIP Rakyat. Aktifitas VoIP Merdeka telah pindah ke VoIP Rakyat yang dapat di akses melalui Web di http://www.voiprakyat.or.id. Teknologi VoIP Rakyat ini sebetulnya termasuk kategori teknologi Next Generation Network (NGN) maupun 4G di kalangan operator telekomunikasi. Teknologi inipun terus berkembang dengan adanya teknologi OpenBTS yang memungkinkan kita membuat BTS dan operator selular sendiri.

Para penggiat VoIP seperti Anton Raharja, sudah mengoperasikan kode area untuk rakyat dengan kode area +62520 dan +62521 yang bisa di koordinasikan melalui situs http://teleponrakyat.id.

Hal yang sangat explisit tampak dari contoh ini adalah, ketidak adaan ruang legal bagi infrastruktur berbasis komunitas, yang di bangun dengan peralatan buatan sendiri, dari rakyat, oleh rakyat, oleh rakyat. Tidak ada ruang legal bagi infrastruktur wireless internet menggunakan WiFi. Tidak ada ruang legal bagi VoIP yang berbasis jaringan komunitas.

Satu lagi yang jelas, akses ke peralatan teknologi informasi yang mutakhir tidak cukup. Pengetahuan tentang teknologi informasi dalam bahasa Indonesia menjadi penting, tentunya perlu strategi yang untuk membangun pengetahuan lokal secara swadaya masyarakat. BAB 3: Konsep Dasar TCP/IP

Pada Bab ini akan diberikan pengantar tentang konsep dasar dan cara kerja Protokol TCP/IP yang menjadi dasar bagi terbentuknya jaringan internet Melalui pengantar ini pembaca diharapkan akan memperoleh dasar yang kuat untuk memahami bab-bab selanjutnya.

TCP/IP biasanya ada di sistem operasi Unix atau turunannya, seperti Linux. Walaupun sebetulnya pengembangannya terpisah tapi sejarah keduanya saling terikat erat, terutama sejak 4.2BSD Unix mulai memasukan protokol TCP/IP ke dalamnya. Pada hari ini, protokol TCP/IP tersedia di banyak sistem operasi dan termasuk bagian integral dari sistem operasi Linux, Ubuntu, Fedora, OS/2, OS/400, dan Windows, maupun berbagai varian Unix.

Dasar Arsitektur TCP/IP Komunikasi data merupakan proses mengirimkan data dari satu komputer ke komputer yang lain. Melalui peralatan Network Interface Card (NIC) atau LAN card, komunikasi data antar komputer biasanya dilakukan. NIC / LAN card yang digunakan sangat bervarisasi tergantung jenis saluran fisik yang digunakan.

Ada beberapa masalah yang harus dipecahkan dalam mengiriman data, antara lain adalah:

1. Data harus dapat dikirimkan ke komputer yang tepat, sesuai tujuannya. Hal ini akan menjadi rumit jika komputer tujuan transfer data ini tidak berada pada jaringan lokal, melainkan di tempat yang jauh.

2. Jika lokasi komputer yang saling berkomunikasi "jauh" (secara jaringan) maka terdapat kemungkinan data rusak atau hilang. Karenanya, perlu ada mekanisme yang mencegah rusaknya data ini.

3. Pada komputer yang dituju dalam proses transfer data mungkin terdapat lebih dari satu aplikasi yang menunggu datangnya data. Data yang dikirim harus sampai ke aplikasi yang tepat, pada komputer yang tepat, tanpa kesalahan. Data tidak boleh sampai di terima oleh aplikasi yang salah di komputer yang salah.

Cara alamiah untuk menghadapi setiap masalah yang rumit ialah memecah masalah tersebut menjadi bagian yang lebih kecil. Dalam memecahkan masalah transfer data diatas, para ahli jaringan komputer pun melakukan hal yang sama. Untuk setiap problem komunikasi data, diciptakan solusi khusus berupa aturan-aturan untuk menangani problem tersebut. Untuk menangani semua masalah komunikasi data, keseluruhan aturan ini harus bekerja sama satu dengan lainnya. Sekumpulan aturan untuk mengatur proses pengiriman data ini disebut sebagai protokol komunikasi data. Protokol ini diimplementasikan dalam bentuk program komputer (software) yang terdapat pada komputer dan peralatan komunikasi data lainnya.

TCP/IP adalah sekumpulan protokol yang didesain untuk melakukan fungsi-fungi komunikasi data pada (WAN). TCP/IP terdiri dari sekumpulan protokol yang masing-masing bertanggung jawab atas bagian-bagian tertentu dari komunikasi data. Dalam bahasa yang lebih formal-nya, disain protokol TCP/IP sifatnya modular. Berkat prinsip ini, tugas masing-masing protokol menjadi jelas dan sederhana. Protokol yang satu tidak perlu mengetahui cara kerja protokol yang lain, sepanjang ia masih bisa saling mengirim dan menerima data. Berkat penggunaan prinsip modular ini, TCP/IP menjadi protokol komunikasi data yang fleksibel. Protokol TCP/IP dapat diterapkan dengan mudah di setiap jenis komputer dan interface jaringan, karena sebagian besar isi kumpulan protokol ini tidak spesifik terhadap satu komputer atau peralatan jaringan tertentu. Agar TCP/IP dapat berjalan diatas interface jaringan tertentu, hanya perlu dilakukan perubahan pada protokol yang berhubungan dengan interface jaringan saja.

Sekumpulan protokol TCP/IP ini dimodelkan dengan empat (4) lapisan TCP/IP

Gambar 3: Lapisan Protokol TCP/IP

Arsitektur jaringan menggunakan protokol TCP/IP pada dasarnya terdiri dari 4 lapis kumpulan protokol yang bertingkat. Peralatan fisik, radio, kabel, modem, card LAN seringkali disebut sebagai lapisan terakhir, lapisan ke lima (5). Jadi ke lima (5) lapis/layer tersebut adalah:

1. Application Layer. 2. Transport Layer. 3. . 4. Link Layer. 5. Physical Layer.

Sebagian dari dosen2 di perguruan tinggi menganut 7 lapisan OSI pada arsitektur jaringan. Secara praktek di lapangan, saat ini TCP/IP menggunakan 5 lapisan protokol. Ke lima lapisan protokol akan tampak dengan jelas pada saat kita melalukan penyadapan / sniffing paket.

Mari kita bahas konsep dari ke lima lapisan protokol tersebut. Lapisan paling bawah adalah lapisan fisik (Physical Layer). Lapisan protokol yang berada di atas lapisan fisik biasanya di buat dalam bentuk software / aplikasi, sementara lapisan fisik di implementasikan dalam bentuk hardware. Lapisan fisik dapat di lihat, di pegang, di banting dll, bisa berbentuk modem, kabel LAN, radio, antenna yang sifatnya fisik untuk menyambungkan jaringan. Karena tugasnya ini, protokol pada layer fisik harus mampu menerjemahkan sinyal listrik menjadi data digital yang dimengerti komputer, yang berasal dari peralatan lain yang sejenis.

Kadang kala, kita menyebut arsitektur jaringan TCP/IP sebagai arsitektur dengan lima (5) lapisan, jika physical layer dimasukan. Pada kenyataan di lapangan, jumlah lapisan protokol dapat bervarisasi / berbeda-beda tergantung kepentingan transaksi yang dilakukan. Hal ini akan lebih jelas pada saat kita melakukan sniffing paket data di komputer, ini bisa dilakukan menggunakan aplikasi seperti Wireshark dan tcpdump.

Proses enkapsulasi data antar lapisan protokol di perlihatkan pada gambar berikut.

Gambar 4: Enkapsulasi Data & Protokol pada paket yang dikirim

Data yang akan dikirim akan di enkapsulasi oleh setiap lapisan, mulai dari lapisan aplikasi hingga yang terakhir lapisan fisik. Pada saat data di terima oleh setiap lapisan, lapisan akan membuang header data tersebut. Jika data dianggap valid, protokol akan melepas informasi tambahan tersebut, untuk kemudian meneruskan data itu ke protokol lain di lapisan selanjutnya.

Lapisan Link (Link Layer Protocol) berada di atas lapisan fisik. Secara sederhana fungsi utama dari protokol pada lapisan link adalah untuk mengatur komunikasi data antara dua (2) komputer yang menggunakan lapisan fisik yang sama. Misalnya dua komputer yang menggunakan LAN akan menggunakan link layer Ethernet. Atau dua komputer yang menggunakan radio dengan menggunakan AX.25. Tentunya jika ke dua komputer tidak menggunakan lapisan fisik yang sama maka tidak mungkin melakukan komunikasi. Ibaratnya, sebuah komputer menggunakan modem dengan sebuah komputer menggunakan LAN tidak mungkin berkomunikasi satu sama lain secara langsung, perlu ada router yang menghubungan dua jaringan yang berbeda secara fisik tersebut.

Lapisan Link biasanya di implementasikan di dalam firmware di LAN card, akan menentukan bagaimana frame data dikirim. Termasuk bagaimana pemotongan / fragmentasi paket di kabel dengan Maximum Transmission Unit (MTU) yang lebih kecil, atau menggabungkan beberapa potongan (fragmen) frame menjadi sebuah frame dengan MTU yang lebih besar. Lapisan link juga menentukan komputer mana yang harus menerima frame di jaringan LAN untuk meneruskan frame ke tujuan yang benar. Lapisan link akan memberikan enkapsulasi datagram dari lapisan network ke dalam frame yang akan di kirim melalui jaringan. Dalam frame akan dimasuk alamat Ethernet, atau MAC address, dari komputer sumber dan komputer selanjutnya (next hop) untuk mencapai tujuan. Alamat-alamat ini akan ditulis ulang untuk setiap hop yang dilewati.

Lapisan Network akan mengatur supaya alamat mesin sumber dan yang dituju benar. Lapisan network ini yang akan mengidentifikasi supaya datagram mencapai komputer yang benar. Kita mungkin mengenal IP address, ini berada di lapisan network. Lapisan network ini sebetulnya yang membangun Internet karena memungkinkan banyak komputer terhubung satu sama lain. Tapi lapisan network sama sekali tidak menjamin bahwa datagram yang dikirim akan diterima sampai di tujuan dengan selamat.

Lapisan transport mengontrol port sumber dan port tujuan paket, termasuk nomor urut paket yang dikirim. Oleh karenanya, menggunakan mekanisme lapisan protokol transport maka file yang besar dapat dikirim dalam potongan paket kecil, yang kemudian digabungkan kembali di bagian penerima. Lapisan transport juga berusaha menjamin supaya paket yang diterima sampai ditujuan dengan selamat, jika ada kesalahan / kerusakan paket di jalan, maka lapisan transport ini yang akan berusaha memperbaikinya.

Ciri khas yang tidak kalah menarik dalam komunikasi menggunakan protokol TCP/IP ini adalah penggunakan berbagai jenis alamat di berbagai lapisan protokol. Alamat ini selalu terdiri dari alamat sumber dan alamat tujuan. Tanpa alamat yang jelas maka paket yang dikirim tidak mungkin mencapai tujuan dengan baik. Contoh kita dapat lihat pada tabel berikut,

Contoh Contoh Contoh Alamat Sumber Alamat Tujuan Application Layer Alamat e-mail Alamat e-mail [email protected] Transport Layer TCP Port TCP Port 25 (SMTP) Network Layer IP address IP Address 192.168.0.1 Data Link Layer MAC Address MAC Address 00:03:0d:e3:db:76 Physical Layer Channel WiFi Channel WiFi 2.412 GHz

Ada banyak protokol yang saling berinteraksi dalam jaringan komputer berbasis TCP/IP. Sebagian besar protokol yang saling berinteraksi ini diperlihatkan pada tabel. Masing-masing protokol mempunyai kemampuan yang unik dan spesial, oleh karena itu biasanya masing-masing protokol akan menggunakan keluarga protokol yang spesifik.

Application HTTP FTP DNS SNMP Ping Layer Telnet Finger RIP SSH DNS RADIUS POP3/IMAP Traceroute SMTP BGP tftp Time/NTP Whois TACACS+ SSL Transport Layer TCP UDP ICMP OSPF Network Layer IP / ARP Link Layer & Ethernet/802.3 Token Ring (802.5) SNAP/802.2 X.25 FDDI ISDN Physical Layer Frame Relay SMDS ATM Wireless (WAP, CDPD, 802.11) Fibre Channel DDS/DS0/T-carrier/E-carrier SONET/SDH DWDM PPP HDLC SLIP/CSLIP xDSL (DOCSIS)

Untuk mencek apakah sambungan antar komputer terhubung dengan baik, biasanya kita menggunakan aplikasi ping, yang berjalan di atas protokol transport ICMP yang di tumpangkan di atas protokol network IP.

Aplikasi Web dengan protokol HTTP akan membutuhkan sambungan yang reliable menggunakan TCP yang ditumpangkan di atas IP untuk mencapai tujuan.

Jadi, TCP/IP bukan hanya sepasang protokol komunikasi, tapi merupakan sekumpulan protokol, aplikasi dan utiliti. Semakin hari, protokol ini lebih di kenal sebagai keluarga protokol Internet, tapi nama yang lama keluarga protokol TCP/IP tidak akan hilang dalam waktu dekat.

Gambar 5: Proses Internetworking di jaringan TCP/IP

Pada gambar di perlihatkan hubungan berbagai lapisan protokol TCP/IP. Program aplikasi dan utiliti berada di mesin host. Dalam gambar di perlihatkan TCP memberikan sambungan virtual circuit yang reliable / andal antara dua mesin pada jaringan yang berbeda. TCP akan menjamin semua data di terima dengan baik di mesin tujuan. Jika ada bit yang hilang, maka paket yang rusak akan dikirim ulang.

IP memberikan dukungan transportasi datagram pada jaringan / di bawah termasuk jaringan lokal atau jaringan wide area network. Jaringan paling bawah menggunakan berbagai teknologi jaringan lokal maupun jaringan wide area network. Perhatikan bahwa IP memungkinkan translasi datagram dari subnetwork satu (1) ke subnetwork lainnya (2). Perhatikan bahwa header IP yang digunakan tetap sama walaupun melalui berbagai jaringan yang berbeda.

Yang perlu kita perhatikan baik-baik dari gambar di atas adalah bagian Link Layer Protokol yang tertulis SubNet 1 dan SubNet 2. Jelas tampak dari gambar bahwa dari berbagai lapisan protokol yang berubah cukup drastis adalah header Ethernet-nya.

Perlu dicatat bahwa istilah gateway atau router digunakan untuk alat yang menyambungkan dua subnetwork. Di jaringan LAN biasanya digunakan istilah router dalam OSI di kenal sebagai intermediate system. Dalam terminologi OSI, gateway digunakan untuk melakukan konversi protokol antara dua jaringan / aplikasi.

Terkadang ada aplikasi yang tidak membutuhkan keandalan & integritas data yang ketat, tetapi lebih penting harus cepat / real-time, seperti pengiriman video atau suara di Telepon melalui Internet. Saat kita menonton video (youtube) atau telepon di Internet, kadang tidak semua pixel atau suara berhasil dikirim dengan baik, akan tetapi informasi yang di sampaikan tetap bisa di mengerti walaupun ada beberapa pixel yang hilang. Untuk aplikasi jenis ini dapat digunakan UDP sebagai pengganti TCP karena lebih cepat. UDP memberikan sambungan connectionless / datagram end-to- end pada lapisan transport. UDP beroperasi tanpa perlu menunggu acknowledge dari komputer penerima, dan tidak peduli jika ada sedikit data yang hilang di jalan.

Referensi Banyak sekali buku dan paper yang telah ditulis untuk menjelaskan berbagai aspek tentang TCP/IP, termasuk informasi detail tentang cara pembuatan dan implementasi TCP/IP. Beberapa diantara-nya bahkan dapat di ambil secara gratis di Internet. Beberapa referensi yang baik tentang TCP/IP, antara lain adalah:

• TCP/IP Illustrated, Volume I: The Protocols oleh W.R. Stevens (Addison-Wesley, 1994) • Troubleshooting TCP/IP oleh Mark Miller (John Wiley & Sons, 1999) • Guide to TCP/IP, 2/e oleh Laura A. Cappell and Ed Tittel (Thomson Course Technology, 2004) • TCP/IP: Architecture, Protocols, and Implementation with IPv6 and IP Security oleh S. Feit (McGraw-Hill, 2000) • Internetworking with TCP/IP, Vol. I: Principles, Protocols, and Architecture, 2/e, oleh D. Comer (Prentice-Hall, 1991) • "TCP/IP Tutorial" oleh J. Socolofsky and C.J. Kale (RFC 1180, Jan. 1991) (http://www.isi.edu/in-notes/rfc1180.txt) • "TCP/IP and tcpdump Pocket Reference Guide", (http://networking.champlain.edu/download/tcpip/tcpip_prg.pdf) oleh The SANS Institute. BAB 4: Teknik Penghayatan Kerja TCP/IP

Salah satu teknik belajar cara kerja jaringan Internet yang saya lakukan sendiri adalah belajar melihat dengan mata kepala sendiri paket-paket data yang lewat di jaringan dan mempelajari isi paket data tersebut. Saya sendiri belajar TCP/IP (Internet) dengan cara ini sejak tahun 1985-1986, hampir setiap hari memperhatikan paket data yang lewat di jaringan dan mempelajarinya dengan membaca berbagai dokumen standard Internet yang dapat di ambil secara gratis di Internet, terutama dari situs Internet Engineering Task Force http://www.ietf.org. Dokumen standard ini dikenal dengan istilah Request For Comment (RFC).

Salah satu referensi yang cukup baik untuk menganalisa kerja protokol TCP/IP adalah http://www.howtogeek.com/104278/how-to-use-wireshark-to-capture-filter-and-inspect-packets/

Pada hari ini, tersedia cukup banyak software protocol analyzer atau dalam bahasa awam-nya sering di sebut sebagai packet sniffer (pencium paket). Protocol analyzer umumnya berupa software yang dijalankan di sebuah komputer atau sebuah hardware yang khusus. Di kedua konfigurasi alat tersebut, card jaringan / Network Interface Card (NIC) harus di operasikan dalam mode promiscous dimana NIC akan menangkap semua paket yang lewat di jaringan, tidak hanya paket yang ditujukan pada NIC tersebut saja. Hampir semua protocol analyzer akan menampilkan / menginterpretasikan sebagian dari paket tersebut.

Dengan menggunakan packet sniffer ini, maka lima (5) lapisan protokol jaringan komputer yang biasanya digambarkan sebagai kotak-kotak akan menjadi lebih hidup, karena kita dapat melihat isi dari lapisan protokol jaringan tersebut.

Cukup banyak software paket sniffer yang gratis / murah yang dapat beroperasi di Linux maupun di Windows. Salah satu yang paling populer adalah wireshark. Wireshark tersedia untuk Linux maupun Windows. Bagi anda yang lebih suka tampilan text, dapat mencoba tcpdump, di Windows di kenal dengan nama windump.

Packet Sniffer di Linux/Unix Packet Sniffer berbasis Linux / Unix perlu menggunakan libpcap ( http://www.tcpdump.org/), yang harus di install sebelum menginstalasi program sniffer di Linux. Di berbagai distro Linux, umumnya libcap akan secara standard / default terinstall, jadi kita tidak perlu pusing lagi dengan hal tersebut. Adapun software sniffer di Linux antara lain adalah:

• wireshark ( https://www.wireshark.org/ ) merupakan salah satu aplikasi packet sniffer terbaik saat buku ini ditulis. • tcpdump ( http://www.tcpdump.org/), sebuah command-line packet sniffer. Tcpdump biasanya tersedia sebagai standard di berbagai distribusi.

Packet Sniffer di Windows Packet sniffer berbasis Windows perlu menggunakan WinPcap ( http://www.winpcap.org/install/default.htm) yang perlu di install sebelum menginstall program packet sniffer. Ada beberapa program packet sniffer di Windows, antara lain adalah: • Wireshark ( https://www.wireshark.org/ ) merupakan salah satu aplikasi packet sniffer terbaik saat buku ini ditulis. • WinDump (http://www.winpcap.org/windump/install/default.htm) sebuah command line packet sniffer di DOS.

Berbagai tool yang berbasis WinPcap dapat dilihat di http://www.winpcap.org/misc/links.htm.

Instalasi Wireshark di Linux Selanjutnya akan di jelaskan teknik sniffing menggunakan Wireshark. Instalasi Wireshark relatif sederhana di Linux yang berbasis Ubuntu / Debian, dengan menggunakan perintah

sudo su apt-get update apt-get install wireshark apt install wireshark (untuk Ubuntu 16.04)

Sementara instalasi di Windows seharusnya juga tidak terlalu sulit dengan .exe yang tersedia.

Di Linux, Wireshark dapat di operasikan melalui beberapa cara baik melalui interface grafis GUI maupun terminal CLI. Untuk memperoleh hasil maksimal, pastikan anda menjalankannya sebagai root, misalnya melalui CLI

sudo su wireshark

Biasanya akan keluar peringatan yang bunyinya

Running as user "root" and group "root". This could be dangerous.

Kita dapat membiarkan peringatan tersebut dan melanjutkan menjalankan wireshark.

Mengoperasikan Wireshark Tampilan awal Wireshark relatif sederhana. Bagi anda yang masih pemula dalam melakukan sniffing, hanya dua (2) tombol / menu yang penting yang sering digunakan yaitu:

• Capture • Analyze

Tekan tombol Capture untuk memulai proses Capture (menangkap) paket yang lewat di jaringan. Ada beberapa sub menu dari tombol Capture, seperti, memilih Interface yang ingin di monitor, start proses capture dll. Gambar 6: Tampilan Wireshark saat menangkap Paket yang lewat

Pada menu Capture Interfaces kita dapat melihat semua interface yang ada di computer yang kita gunakan. Kita dapat memilih interface mana yang ingin dilakukan capture paket yang lewat. Pada Linux yang konvensional biasanya interface yang digunakan adalah eth0 atau wlan0.Tekan tombol Start untuk mulai melakukan sniffing.

Pada gambar di perlihatkan tampilan Wireshark saat menangkap paket yang lewat di jaringan. Tombol “Stop” berwarna merah dapat kita tekan jika di rasakan cukup banyak paket yang sudah di tangkap. Secara umum tampilan wireshark di bagi tiga (3) bagian ke bawah.

1. Bagian 1, paling atas, memperlihat daftar paket yang di tangkap sesuai dengan waktu di tangkapnya. Detail informasi yang ditampilkan adalah waktu relatif (dari waktu mulai wireshark di aktifkan), IP source (pengirim paket), IP destination (tujuan paket), protokol yang digunakan, panjang paket, dan informasi tentang paket secara umum.

2. Bagian 2, bagian tengah, dalam bahasa sederhana sebetulnya menampilkan jumlah dan detail lapisan protokol yang ada dalam paket tersebut. Pada gambar di perlihatkan ada lima (5) lapisan protokol dalam paket tersebut. Hanya saja penampilannya di balik, dari paling atas ke bawah adalah, lapisan fisik, data link, network, transport dan aplikasi. Dalam hal ini protokol aplikasi yang digunakan adalah Hypertext Transfer Protocol (HTTP). Kita dapat meng-klik masing-masing lapisan untuk melihat lebih detail. Jelas disini bahwa lapisan protokol tidak berbentuk kotak-kotak seperti dalam teori, tapi bisa kita lihat isinya. 3. Bagian 3, bagi mereka yang ingin melihat isi paket dalam format hexadesimal dan ASCII dapat di evaluasi dengan melihat isi bagian 3 ini.

Gambar 7: Paket ARP

Pada gambar di atas diperlihatkan sebuah paket ARP yang berhasil di tangkap oleh Wireshark. Berbeda dengan paket yang umum digunakan untuk mentransfer data, paket ARP hanya ada tiga (3) lapisan protokol saja, yaitu, lapisan fisik, data link dan ARP. Fungsi paket ARP adalah untuk bertanya / menjawab ke jaringan MAC address dari komputer yang ingin di tuju. Mari kita lihat lebih detail disini, komputer dengan MAC address 00:27:22:1e:87:f9 (IP address 192.168.0.103) mengirimkan paket ke MAC address broadcast ff:ff:ff:ff:ff:ff, dengan protocol ARP yang bertanya dengan OpCode 1 berupa request / permohonan MAC address komputer dengan IP address 192.168.0.142.

Jika anda ingin mencek apakah informasi MAC address tersebut sudah masuk dalam daftar tabel MAC address di komputer kita dapat dilihat menggunakan perintah

arp -na ip neighbour show

Tampilannya kira-kira, # arp -na ? (192.168.99.7) at 00:80:C8:E8:1E:FC [ether] on eth0 ? (192.168.99.254) at 00:80:C8:F8:5C:73 [ether] on eth0

# ip neighbor show 192.168.99.7 dev eth0 lladdr 00:80:c8:e8:1e:fc nud reachable 192.168.99.254 dev eth0 lladdr 00:80:c8:f8:5c:73 nud reachable

Selanjutnya mari kita lihat lebih dekat lagi dengan isi dari masing-masing lapisan protokol.

Pada gambar di atas di perlihatkan kita membuka isi dari lapisan data link protokol. Terlihat dengan jelas isi dari lapisan protokol data link adalah,

• MAC address sumber • MAC address tujuan • Protokol yang ada di atas lapisan data link, jika protokol yang beroperasi di atasnya adalah IPv4 maka tipe yang digunakan adalah 0x0800 Gambar 8: Lapisan Protokol Network, Internet Protocol

Pada gambar di atas dibuka lapisan protokol network yang beroperasi di atas lapisan data link. Lapisan protocol network yang digunakan disini adalah Internet Protocol. Pada bagian Internet Protocol (IP), ada beberapa informasi penting yang bisa kita lihat seperti,

• Versi IP, untuk IPv4, maka field versi berisi 0100 • IP source • IP destination • Protocol di atas IP, jika yang beroperasi TCP maka nomor protocol adalah 6 (TCP). • Panjang paket, biasanya 1500 byte • Time To Live (TTL), adalah banyak-nya router yang bisa di lalui.

Nilai TTL akan selalu berkurang satu jika melalui sebuah router. Pada saat nilai TTL menjadi NOL maka paket akan dibuang secara automatis, dan tidak akan di teruskan oleh router. TTL sangat penting artinya karena tidak ada sama sekali tentang informasi route di tempuh oleh sebuah paket, artinya bisa saja terjadi looping pada sebuah paket artinya paket bulak balik antara dua router. Gambar 9: TCP Protocol hasil penyadapan Wireshark

Pada gambar di atas di perlihatkan protocol TCP yang di sadap menggunakan wireshark. Beberapa hal yang penting untuk dilihat, adalah,

• Source Port • Destination Port • Squence Number • Acknowledgement Number • Flag – menentukan apakah ini paket awal, atau proses transfer data. Pada saat proses transfer data biasanya flag yang digunakan adalah ACK 0x010 • Windows – lebarnya paket yang berurutan yang bisa dikirim tanpa menunggu ACK (Acknowledge).

Port menentukan aplikasi apa di tuju / sumber. Beberapa contoh nomor port yang sering digunakan antara lain adalah,

Web / http - 80 https - 443 mail SMTP - 25 mail POP3 - 110 mail IMAP - 143

Client biasanya menggunakan port yang tinggi, di atas 1024. Gambar 10: Paket Mail SMTP yang tertangkap wireshark

Jika kita sedang melakukan penyadapan, kadang kita akan menemuka paket mail dengan protokol SMTP yang tertangkap wireshark. Pada paket di atas kita melihat paket dikirim dari IP address 222.124.18.79 yang berada di Internet menuju ke IP address 192.168.0.133 yang berada di LAN lokal. Sumber paket berasal dari aplikasi mail server SMTP dengan nomor port 25 menuju client email yang berada di port 40066. Di atas protocol TCP, beroperasi Simple Mail Transfer Protocol (SMTP) dengan isi berita

220 fm2.smtp.telkom.net ESMTP Smtpd; Sat, 31 Dec 2016 09:20:03 +0700

Bagi anda yang ingin mempelajari lebih lanjut isi dari protocol TCP yang dikirim, kita dapat mengklik protocol TCP tersebut. Kita akan melihat banyak hal di row yang berada di tengah.

Kita dapat melihat hal-hal yang menarik dari isi paket yang di capture oleh Wireshark. Terutama kalau data yang di transfer berbentuk ASCII dan dapat dibaca dengan row ke tiga / paling bawah. Dalam contoh paket yang diterima di perlihatkan ada paket yang berisi kata-kata

220 fm2.smtp.telkom.net ESMTP Smtpd; Sat, 31 Dec 2016 09:20:03 +0700

Hal ini menunjukan bahwa paket yang kita tangkap adalah sebuah potongan transaksi proses pengiriman e-mail. Ini penting sekali, karena kita dapat menyadap seluruh aliran komunikasi yang terjadi dari satu paket tersebut. Tentunya kita ingin sekali melihat isi mail yang sedang di transaksikan. Hal ini dapat dilakukan melalui menu Analyze. Pada menu Analyze ada beberapa sub-menu, seperti Display Filter, Apply as Filter, Prepare a Filter, Enable Protocols, Decode As, User Specified Decodes dan terakhir yang paling asik adalah menu Analyze untuk Follow TCP Stream. Dengan menu Follow TCP Stream kita dapat menyatukan semua paket transaksi yang ada menjadi sebuah kesatuan seperti tampak pada gambar berikut.

Gambar 11: Hasil penyadapan komunikasi e-mail Selain isi komunikasi e-mail yang dapat kita baca, sebetulnya kita dapat mempelajari cara kerja protokol. Isi protokol yang dikirim oleh server SMTP menggunakan warna biru, sedangkan informasi / protokol yang dikirim oleh client menggunakan warna merah.

Server biasanya menjawab dengan angka, seperti 220, 250 dsb. Biasanya berita kesalahan akan dikirim dengan angka 4xx. Sementara dari sisi client akan mengirim perintah dalam bentuk teks, seperti HELO, EHLO, MAIL FROM, RCPT TO, DATA dsb. Lebih detail tentang cara kerja SMTP dapat di baca secara detail di RFC 821 https://tools.ietf.org/rfc/rfc821.txt yang ditulis oleh Jon Postel di bulan Agustus 1982.

Demikian lah kita dapat mempelajari banyak hal dari proses sniffing paket data yang dikirim melalui jaringan. Tentunya ilmu sniffing ini dapat menjadi ilmu yang bermanfaat dan dapat memungkinkan kita mengerti teknik jaringan Internet. Tapi seperti sebuah pisau dapat digunakan untuk hal yang tidak baik, seperti mencuri password, membaca isi mail dsb.

Semoga ilmu ini dapat dimanfaatkan untuk hal yang baik. Referensi

• http://www.wireshark.org/docs/ • http://www.wireshark.org/download/docs/user-guide-us.pdf • http://www.howtogeek.com/104278/how-to-use-wireshark-to-capture-filter-and-inspect- packets/ • http://www.howtogeek.com/107945/how-to-identify-network-abuse-with-wireshark/ BAB 5: Komponen Fisik Jaringan Internet

Peralatan fisik jaringan merupakan lapisan terendah dari arsitektur jaringan komputer. Dalam arsitektur jaringan ini di kenal sebagai physical layer / lapisan fisik. Komponen fisik ini berfungsi secara fisik untuk menghubungkan satu komputer dengan komputer yang lain. Secara fisik ada banyak jenis media yang dapat digunakan sebagai saluran, seperti:

• Saluran Telepon. Saluran ini merupakan saluran yang paling konvensional & kecepatan rendah. Beberapa teknologi baru dapat digunakan untuk mengirimkan data pada kecepatan sampai 9Mbps pada kabel telepon. • Kabel LAN, dapat berupa kabel Unshielded Twisted Pair (UTP), Shielded Twisted Pair (STP), coax RG 58, dan fiber optik. • Radio. Memungkinkan kita membangun jaringan dengan lebih flexibel & menjadi teknologi paling di minati di Indonesia. Bahkan menjadi contoh bagi banyak negara berkembang lainnya. • Kabel Fiber Optik. Memungkinkan membangun jaringan pada kecepatan Gbps.

Selain kabel / radio yang sifatnya sangat fisik, biasanya kita juga membutuhkan peralatan tambahan untuk mengkaitkan berbagai kabel / radio ini ke jaringan lain atau ke komputer. Fungsi peralatan ini sebetulnya untuk mengubah sinyal digital (di komputer) menjadi sinyal analog yang dapat di salurkan melalui media penghubung. Umumnya peralatan penghubung ini dapat berupa

• Modem telepon, pada dasarnya hanya berfungsi sebagai alat untuk mengkonversikan sinyal suara (di kabel telepon) ke data biner yang di kenal komputer. Modem telepon konvensional hanya dapat digunakan sampai kecepatan 56Kbps. Beberapa teknologi baru yang di kembangkan melalui kabel telepon terutama yang marak belakangan ini adalah teknologi Asymmetric (ADSL) dapat digunakan sampai kecepatan 9Mbps. • Modem 3G / 4G / Modem Selular, memungkinkan kita untuk menyalurkan data melalui jaringan selular. Bagi kita yang berada di dekat BTS 3G / 4G mungkin akan dapat memperoleh akses data kecepatan sampai dengan beberapa belas Mbps. • Card Jaringan, atau Card LAN, atau Card Ethernet. Secara prinsip berfungsi mirip dengan modem untuk mentranslasikan data digital ke sinyal analog di kabel LAN atau di radio. Kecepatan yang dapat digunakan saat ini sudah dalam orde 100 Mbps s/d Gbps. Beberapa teknologi WiFi yang paling baru sudah ke kecepatan > 1 Gbps.

Di samping itu ada beberapa peralatan penghubung antar jaringan komputer yang sering digunakan, seperti:

• Hub • Repeater • Bridge • Router

Masing-masing mempunyai fungsi dan kelebihannya. Dari yang paling sederhana hub & repeater hingga router yang sangat kompleks. Penjelasan panjang tentang masing-masing komponen jaringan akan dilakukan pada bagian selanjutnya. Kabel Penghubung. Kabel Unshielded Twisted Pair (UTP) merupakan kabel yang banyak digunakan untuk merangkai / membangun jaringan Lokal. Kabel UTP lebih murah daripada kabel coax atau fiber optik, oleh karenanya banyak di temui dalam instalasi jaringan lokal. Kabel UTP mempunyai delapan buah kabel di dalamnya yang terhubung melalui konektor RJ-45 yang merupakan kependekan dari Registered Jack 45. RJ-45 bentuknya sangat mirip dengan konektor telepon (RJ-11). Konektor telepon RJ-11 mempunyai empat kabel, sedang konektor RJ-45 di sediakan untuk delapan (8) kabel di dalamnya.

Tidak semua delapan (8) kabel UTP tersebut digunakan untuk mengalirkan data. Hanya pin 1, 2, 3 dan 6 yang digunakan. Pada LAN card di komputer dan Hub, fungsi masing-masing PIN adalah

Pin Komputer Hub 1 TX+ RX+ 2 TX- RX- 3 RX+ TX+ 6 RX- TX-

Perhatikan bahwa TX+ harus masuk ke RX+, dst. Penggunaan hub untuk mengkaitkan banyak komputer di LAN telah dirancang agar kabel UTP yang digunakan dapat di pasang / di crimping lurus saja.

Yang akan bermasalah adalah jika kita ingin menyambung dua komputer tanpa hub sama sekali. Pada masa lalu, penyambungan dua komputer tanpa hub agak repot, kabel dari Pin 1 harus di sambung ke Pin 3, kabel dari Pin 2 harus di sambung ke pin 6. Pada hari ini, Ethernet sudah dapat secara automatis mendeteksi, jadi proses cross ini tidak perlu lagi dilakukan. Dengan kata lain, sekarang ini, sambungan antara dua (2) komputer dapat di lakukan dengan kabel straight.

Kedua hal ini, menyebabkan standard penyambungan kabel UTP di standardkan berdasarkan warna kabel UTP.

Pin Straight (PC-Hub) Cross (PC-PC) 1 Hijau-putih Merah-putih 2 Hijau Merah 3 Merah-putih Hijau-putih 4 Biru Biru 5 Biru-putih Biru-putih 6 Merah Hijau 7 Coklat-putih Coklat-putih 8 Coklat Coklat

Lebih jelas lagi jika kita dapat melihat-nya pada gambar.

Gambar 12: Warna Kabel UTP Tampilan konektor RJ-45 yang terpasang kabel straight seperti tampak pada gambar yang di ambil dari situs http://en.kioskea.net/faq/1524-how-to-crimp-a-rj45-cable

Gambar 13: Sambungan UTP

Dengan menggunakan kabel UTP pada hari kita sudah bisa menikmati jaringan dengan kecepatan sampai dengan 1Gbps (1000Mbps).

Sekedar catatan tambahan, karena pada kenyataannya hanya kabel no 1, 2, 3 & 6 yang digunakan untuk mengalirkan data. Dalam aplikasi Wireless Internet yang membutuhkan pemasangan peralatan Access Point di atas tower, sering kali kabel no. 4, 5, dan 7,8 digunakan untuk mengalirkan daya / tegangan +12V dan ground-nya untuk memberi daya ke Access Point di atas tower. Hal ini di kenal sebagai Power Over Ethernet (POE). Tabel Kategori kabel LAN dapat dilihat di bawah ini,

Kategori Kabel Bandwidth (MHz) Penggunaan 1 - Kabel Telepon 2 1 Kabel Telepon 3 16 Kabel Telepon, 10Base-T 4 20 Token-Ring, 10Base-T 5 100 100Base-TX, 10Base-T 5e 100 1000Base-T, 100Base-TX 6 250 1000Base-T, 100Base-TX 6a 500 10GBase-T 7 600 10GBase-T 7a 1000

Untuk memberikan gambaran proses krimping kabel LAN, berikut adalah dua (2) gambar yang di ambil dari situs http://www.littledigitalhome.com/cms/home-network/cables-connectors.html

Gambar 14: Alat krimping kabel LAN

Gambar 15: Krimping kabel LAN

Proses krimping tidak terlalu sulit kalau menggunakan alat yang baik. Proses singkatnya adalah sebagai berikut,

• Buang pembungkus kabel sekitar 2 cm. • Atur sesuai dengan warna kabel straight. • Lurusan semua kabel supaya rapih. • Potong menggunakan tang potong agar ujung kabel agar lurus. • Masukan kabel ke krimping. • Tekan alat krimping, sekuat mungkin.

Jika kita mempunyai alat krimping kabel yang agak baik, maka kita tidak perlu menekan terlalu keras. Teknologi Wireless

Gambar 16: Antenna Wajanbolic e-goen

Teknologi yang tidak kalah menarik adalah teknologi Internet menggunakan Wireless atau radio. Pada masa lalu, di tahun 1985-1996 kita bangsa Indonesia menggunakan teknologi paket radio dengan kecepatan sangat rendah, hanya sekitar 0.0012-0.0096Mbps bekerja pada frekuensi 144MHz dan 432MHz. Pada hari ini, kita menikmati teknologi Internet wireless yang dikenal dengan sebutan WiFi (Wireless Fidelity) yang bekerja pada frekuensi 2400MHz dan 5800MHz dengan kecepatan maksimum mencapai 150-300Mbps. Beberapa teman saat ini mulai bereksperimen di 24GHz pada kecepatan 1.28+ Gbps!

Sejak bulan January 2005, pemerintah Indonesia telah membebaskan ijin penggunaan frekuensi 2400MHz tersebut. Oleh karena itu kita bangsa Indonesia dapat secara bebas menggunakan frekuensi tersebut tanpa perlu takut di sweeping / di ambil peralatannya oleh polisi. Sejarah perjuangan pembebasan frekuensi 2.4GHz dapat di baca di situs Sejarah Internet Indonesia http://lms.onnocenter.or.id/wiki/index.php/Sejarah_Internet_Indonesia

Bagi anda yang ingin mendalami lebih lanjut tentang teknologi Internet Wireless kecepatan tinggi, sangat disarankan untuk mengambil ebook dari http://wndw.net tepatnya http://wndw.net/pdf/wndw-id/wndw-id-ebook.pdf atau membaca buku-buku yang berkaitan Wireless Internet.

Salah satu ide legendaris dari Pak Gunarso, Purwakarta, Indonesia adalah antenna wajanbolic untuk membangun Internet murah. Antenna wajanbolic cukup baik untuk digunakan pada jarak 3-4 km tergantung dari sumber WiFi yang di tembak. Antenna wajanbolic & Pak Gunarso tampak pada gambar.

Tentunya bagi kita yang serius membangun jaringan wireless jarak jauh sebaiknya melirik peralatan yang lebih serius, seperti Ubiquity atau Mikrotik. Ubiquity dan Mikrotik yang di lengkapi dengan reflector parabola biasanya mampu untuk menyambungkan lokasi berjarak s/d 50km pada kecepatan 10-100 Mbps.

Bagi mereka yang lebih serius dapat melirik peralatan Ubiquity seperti UBNT AirFiber yang mampu menyambungkan dua tempat pada kecepatan 1.28Gbps dengan harga yang relatif terjangkau sekitar US$550 / buah.

Kemampuan untuk merancang jaringan wireless jarak jauh menjadi sangat penting. Bagi mereka yang ingin merancang secara sederhana ada dua (2) pilihan, yaitu,

1. melalui web http://airlink.ubnt.com. AirLink sangat membantu untuk memperkirakan sambungan wireless dua titik, yang menggunakan peralatan UBNT. 2. Menggunakan aplikasi Radio Mobile Wireless (RMW) yang bisa di ambil di http://www.cplus.org/rmw/download/download.html. RMW menjadi sangat menarik karena bisa digunakan untuk segala jenis peralatan wireless dan dapat dibuat dalam bentuk jaringan dengan banyak radio seperti tampak pada gambar.

Gambar 17: Rancangan Jaringan Wireless di Pulau Serui, Papua

Bagi anda yang ingin mempelajari lebih lanjut tentang teknik wireless Internet, sangat di sarankan untuk membaca ebuku Jaringan Wireless di Negara Berkembang (Wireless Networking in Developing Countries) yang dapat di ambil secara bebas di http://wndw.net/pdf/wndw-id/wndw-id- ebook.pdf

Kartu Jaringan & Sambungan Jaringan Komputer yang di jual pada hari ini hampir pasti mempunyai card jaringan built-in di motherboard- nya, bahkan beberapa laptop baru memiliki card jaringan wireless built-in. Card jaringan, atau Card Ethernet, atau Network Interface Card (NIC) ditemukan pertama kali di Xerox Palo Alto Research Center (PARC) di tahun 70-an oleh Dr. Robert M. Metcalfe. Card Ethernet pertama berjalan dengan kecepatan 3-Mbps dan dikenal sebagai Ethernet Eksperimental.

Card Ethernet merupakan sebuah card yang terhubung ke card yang lain melalui ethernet hub dan kabel UTP atau hanya menggunakan sebuah konektor BNC dengan kabel coax yang di terminasi di ujung-ujungnya. Pada masa lalu, sebagian jaringan masih menggunakan kabel coax yang di sambungkan ke card menggunakan konektor BNC. Akan tetapi maintenance jaringan dengan kabel coax ini ternyata sangat menyakitkan hati, oleh karena itu praktis pada hari ini, sebagian besar card jaringan yang ada hanya menggunakan kabel UTP saja.

Gambar 18: Kartu LAN

Pada hari ini, sudah mulai di jual LAN card yang tersambung langsung ke konektor USB. Sehingga laptop yang mengandalkan USB dapat memiliki Ethernet tambahan. Cara Kerja Ethernet Dasar pemikiran penggunaan ethernet ialah "berbagi kabel”. Lebih dari dua komputer dapat menggunakan satu kabel untuk berkomunikasi bersamaan. Karena hanya digunakan satu kabel saja, maka proses pengirimkan data harus dilakukan bergantian. Mirip ketika terjadi pembicaraan di suatu forum atau rapat, Jika seseorang sedang berbicara, maka orang lain seharusnya diam dan mendengarkan. Jika pada saat yang sama terdapat dua orang yang berbicara, pendengar akan merasa terganggu

Sebelum satu card ethernet mengirimkan datanya pada kabel, dia harus mendeteksi terlebih dahulu ada tidaknya card lain yang sedang menggunakan kabel. Jika tidak ada, maka dia akan mengirimkan data. Jika ada, maka card ethernet yang bersangkutan akan menunggu sampai kabel dalam keadaan kosong.

Jika pada saat yang bersamaan, dua card mengirimkan data maka terjadilah collision/tabrakan (hal ini dideteksi oleh card yang bersangkutan dengan memeriksa tegangan kabel, jika tegangan ini melampaui batas tertentu, maka telah terjadi collision). Jika collision terjadi, maka masing masing card ethernet berhenti mengirimkan data dan menunggu lagi dengan selang waktu yang acak untuk mencoba mengirim data kembali. Karena selang waktu pengiriman data masing masing card yang acak ini, maka kemungkinan collision lebih lanjut menjadi lebih kecil.

Proses diatas dikenal dengan nama CSMA/CD (Carrier Sense Multiple Access/Collision Detection).

Karena dalam satu kabel terdapat banyak card ethernet, maka harus ada suatu metoda untuk mengenali dan membedakan masing masing card ethernet tersebut. Untuk itu, pada tiap card ethernet telah tertera kode khusus sepanjang 48 bit, yang dikenal sebagai ethernet address atau MAC address.

Duplex adalah kemampuan sebuah alat untuk mengirim dan menerima data pada saat yang sama. Full duplex menggunakan pasangan kabel (atau frekuensi) yang berbeda untuk mengirim dan menerima data oleh karena itu aliran data yang masuk tidak mengganggu aliran data yang keluar. Half duplex, atau dikenal juga sebagai simplex, menggunakan pasangan kabel (atau frekuensi) yang sama untuk mengirimkan dan menerima data. Peralatan yang akan mengirim data biasanya akan menunggu giliran sampai yakin bahwa jalur yang akan digunakan bersih / tidak ada yang menggunakan. Pendeteksi error dan mekanisme re-transmisi berusaha menjamin bahwa data akan mencapai tujuan. Tentunya kecepatan data akan rendah dan error akan tinggi, jika sebuah NIC full- duplex berbicara dengan NIC half-duplex. Pada NIC modern biasanya akan melakukan auto- negosiasi duplex antara card jaringan. Oleh karena itu, biasanya tidak menjadi masalah bagi sistem operasi komputer.

Beberapa peralatan penghubung antar jaringan komputer yang sering digunakan, akan di jelaskan dengan lebih rinci.

• Repeater – dalam jaringan data, sebuah repeater akan me-relay message antar jaringan yang mungkin menggunakan tipe kabel & protocol yang berbeda. Hub dapat dilihat sebagai repeater karena mengirimkan ulang semua message ke komputer lain di jaringan. Sebuah repeater tidak cukup pandai untuk dapat melakukan operasi routing seperti yang dilakukan oleh bridge atau router.

• Hub adalah sebuah alat dimana kita menyambungkan semua peralatan di jaringan lokal agar dapat berbicara satu dengan lainnya. Secara fisik hub akan menyambungkan semua port jaringan, sehingga semua traffik akan bersatu di hub, tidak peduli apakah dari server atau klien. Hub berisi peralatan elektronik yang sangat sedikit sekali. Tidak mungkin mengatur traffik yang lewat oleh hub. Jika komputer saling berkirim data, dan terjadi tabrakan data di hub, maka komputer hanya akan mengirim ulang data yang dikirim pada interval yang random / acak & tidak mengharapkan hub memperbaiki. Oleh karena itu, peralatan yang di sambung ke hub biasanya di set untuk berkomunikasi half-duplex.

• Switch juga sebuah alat dimana kita menyambungkan semua peralatan di jaringan lokal agar dapat berbicara satu dengan lainnya. Berbeda dengan hub, semua traffik dari komputer A ke komputer B hanya akan di terima oleh komputer B saja.. Komputer lain yang tersambung ke switch tidak akan menerima traffic dari komputer A ke komputer B, kecuali untuk traffik broadcast yang memang ditujukan ke semua komputer. Berbeda dengan hub, sebuah switch mempunyai kemampuan untuk mengatur traffic sehingga aliran traffik menjadi lebih baik. Peralatan yang tersambung ke switch sebaiknya di set full-duplex untuk memaksimalkan keuntungan bandwidth maksimal dari switch.

• Bridge adalah alat yang alat yang mengkaitkan dua jaringan lokal (LAN), atau dua segmen LAN yang menggunakan protokol yang sama, seperti Ethernet atau Token Ring.

• Router biasanya merupakan bagian dari jalur yang di lalui data untuk mencapai tujuan (destination) dari sumber (source)-nya. Setiap router dalam jalur yang dilewati data tersebut biasa di sebut sebagai hop. Tentunya kita berasumsi bahwa setiap router mempunyai tabel routing untuk menyampaikan paket ke tujuan. Router di Internet biasanya menggunakan teknik routing yang dinamik untuk mengetahui route yang dibutuhkan. Di aplikasi jaringan lokal yang sederhana, yang kadang-kadang router di bangun dari mesin Linux, tabel routing mungkin cukup berupa tabel yang statis.

Local Area Network (LAN) adalah sekumpulan port di hub, switch atau tersambung ke Wireless Access Point (AP) yang berkomunikasi satu sama lain. Sangat mungkin untuk membangun sebuah LAN yang tersambung ke beberapa / banyak switch. Sebuah switch sederhana dapat di sambung untuk membangun LAN dengan banyak port. Hal ini kadang di sebut sebagai “daisy chaining”. Switch murni, tidak mempunyai kontrol akses antara komputer yang tersambung di LAN yang sama. Oleh karenanya sebuah network administrator biasanya memasang server yang dapat di percaya di jaringan LAN yang sama. Aturan sederhananya, dalam sebuah LAN sebaiknya hanya ada komputer dengan keluarga IP address yang sama. Berkomunikasi ke LAN lain membutuhkan router yang menghubungkan ke dua LAN tersebut. Router juga mempunyai kemampuan untuk memfilter traffic antara ke dua LAN yang menjamin adanya jaminan keamanan. Switch yang lebih mahal & lebih besar, kadang kala sering bisa di konfigurasi untuk mengalokasikan sebuah port untuk Virtual LAN tertentu yang di pilih oleh network administrator. Dalam hal ini, sebuah switch dapat menjadi tempat bagi beberapa LAN. Router tetap dibutuhkan untuk menginterkoneksikan masing-masing VLAN.

Switch dan hub biasanya menjadi tempat menyambungkan server / komputer menjadi sebuah jaringan LAN. Router Router yang memungkinkan berbagai LAN yang terdiri dari switch / hub untuk saling berkomunikasi. Router umumnya di lengkapi firewall juga dapat dikonfigurasi untuk memfilter traffic berdasarkan kriteria yang ditentukan. Misalnya kita dapat mengijinkan hanya traffic web (port 80) yang dapat lewat. Tentunya kita perlu memberikan IP address di masing-masing port router dari keluarga IP address yang digunakan di masing-masing LAN yang ingin di kaitkan. Router yang digunakan di rumah / kantor untuk menyambungkan diri ke Internet, biasanya di lengkapi dengan kemampuan untuk melakukan Network Address Translation (NAT). Pertanyaan yang sering di tanyakan - Apakah Gateway? Gateway adalah nama lain dari router.

Bagi anda yang ingin mempunyai router untuk belajar, pada dasarnya mempunyai beberapa pilihan, yaitu,

• Menggunakan simulator jaringan PacketTracer, ini terbatas untuk router Cisco saja. • Menggunakan simulator jaringan GN3, ini lebih flexible karena dapat mensimulasikan Mikrotik, Openwrt, Cisco maupun berbagai server menggunakan virtualbox yang tersambung ke GNS3. GNS3 adalah open source dapat di install dengan mudah di Linux, atau di ambil di https://gns3.com/software • Membuat router sendiri pada laptop / komputer menggunakan sistem operasi Linux, seperti ubuntu. Untuk laptop dapat menggunakan USB ethernet agar memiliki beberapa connector LAN. • Membeli router murah, ada banyak router seharga Rp. 100-150.000,- bisa dilihat di bukalapak.com dengan keyword “OpenWRT”.

Membuat sendiri sistem operasi router dapat dilakukan menggunakan OpenWRT di Linux (tidak bisa di Windows). Catatan tentang cara membuat sendiri untuk beberapa jenis router bisa di baca di http://lms.onnocenter.or.id/wiki/index.php/Openwrt. Detail tentang router yang bisa di flash menggunakan openwrt bisa di lihat di http://wiki.openwrt.org/toh/start Referensi

• http://wndw.net • http://en.kioskea.net/faq/1524-how-to-crimp-a-rj45-cable • http://www.ertyu.org/steven_nikkel/ethernetcables.html • http://lms.onnocenter.or.id/wiki/index.php/Sejarah_Internet_Indonesia:Pembebasan_Frekuen si_2.4Ghz • http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_detection • http://en.wikipedia.org/wiki/Router_%28computing%29 • http://wiki.openwrt.org/toh/start • http://lms.onnocenter.or.id/wiki/index.php/Openwrt BAB 6: Lapisan Protokol Data Link

Keluarga protokol TCP/IP di disain untuk dapat dioperasikan di atas hampir semua teknologi jaringan lokal (LAN) maupun wide area network (WAN). Tentu protokol di tingkat network interface perlu diatur supaya IP dapat dijalankan di atas berbagai interface / teknologi jaringan fisik yang ada.

Dasar dari jaringan komputer adalah sebetulnya komunikasi data antara DUA (2) komputer melalui media komunikasi yang sama. Proses ini dalam dunia telekomunikasi di kenal dengan nama komunikasi data. Komunikasi data terbatas pada komunikasi antara DUA (2) komputer melalui media komunikasi yang sama. Berbeda dengan jaringan komputer yang lebih kompleks yang memungkinkan komunikasi antar banyak komputer melalui berbagai jenis jaringan. Pada jaringan komputer, komunikasi data antara DUA (2) komputer di masukan dalam lapisan data link. Protokol yang digunakan dalam data link ini akan berbeda tergantung media komunikasi yang digunakan. Jadi protokol data link dalam media WiFi akan berbeda dengan media kabel LAN.

Dalam bagian ini tidak akan di bahas semua jenis protokol yang ada pada data link layer karena terlalu banyak. Kita hanya akan membahas beberapa protokol yang paling banyak digunakan, dan menjadi dasar dari komunikasi pada lapisan data link. Mari kita bahas lebih lanjut.

Komunikasi Asinkron Yang Paling Sederhana

Gambar 19: Komunikasi Data Asinkron dan Sinkron

Umumnya paket data yang dikirim pada komunikasi data antar komputer di Internet menggunakan metoda komunikasi data sinkron. Dalam bahasa sederhana, komunikasi data sinkron adalah pengiriman data yang dilakukan secara terus menerus tanpa henti sampai satu frame selesai dikirim. Lawan-nya adalah komunikasi asinkron, dimana data dikirim terputus-putus tidak dalam satu kesatuan, dan tidak tentu waktu pengirimannya. Oleh karena-nya dalam komunikasi asinkron dibutuhkan tanda start dan stop untuk mengetahui bahwa ada data yang dikirim. Komunikasi asinkron sering di sebut komunikasi start-stop. Pada gambar di perlihatkan beda komunikasi tsb.

Untuk setiap jenis saluran fisik yang digunakan, umumnya kita akan menggunakan protocol data link yang berbeda-beda. Masing-masing protocol data link di rancang untuk mengambil manfaat maksimal dari sebuah saluran fisik tertentu. Pada bagian ini akan di jelaskan beberapa contoh protokol link untuk beberapa jenis saluran fisik, seperti, saluran dial-up, LAN / Ethernet, Wireless LAN dan radio paket.

Secara umum akan terlihat bahwa format frame dari masing-masing protokol data link mempunyai kemiripan satu dengan yang lainnya. Umumnya berbasis pada format frame High Level Data Link Controller (HDLC) yang merupakan protokol bit-oriented biasanya digunakan dalam komunikasi data yang sifatnya sinkron. Frame protokol keluarga Wireless LAN barangkali merupakan format yang paling kompleks dari semua frame yang ada.

Point-to-Point Protocol (PPP) Serial Line Internet Protocol SLIP RFC 1055 dan Point-to-Point Protocol PPP RFC 1661 adalah dua protokol yang sering digunakan di komunikasi melalui saluran serial di komputer. Pada hari ini, SLIP dan PPP telah menjadi bagian dari semya sistem operasi di PC. Kita akan menggunakan PPP melalui modem telepon untuk tersambung ke Internet melalui ISP baik itu dial-up maupun sambungan 24 jam.

Salah satu kelebihan PPP adalah kemampuan untuk melakukan negosiasi pada saat sambungan awal, seperti password, IP address, kompresi, dan enkripsi. Di samping itu PPP mendukung komunikasi beberapa protokol sekaligus di atas satu sambungan. Di jaringan seperti ISDN, PPP mendukung inverse multiplexing dan alikasi bandwidth secara dynamic melalui Multilink-PPP (ML-PPP) diterangkan di RFC 1990 (http://tools.ietf.org/rfc/rfc1990.txt) dan RFC 2125 (http://tools.ietf.org/rfc/rfc2125.txt).

Gambar 20: Frame protokol data link PPP

PPP biasanya menggunakan format frame High Level Data Link Controller (HDLC) yang merupakan protokol bit-oriented biasanya digunakan dalam komunikasi data yang sifatnya sinkron. RFC 1661 tidak menyaratkan penggunan HDLC. HDLC mendefiniskan kolom pertama dan dua kolom yang terakhir dari frame.

• Flag: 8-bit pattern "01111110" yang digunakan sebagai batas awal dan akhir pengiriman data / paket. • Address: Untuk PPP, digunakan address broadcast 8-bit, "11111111". • Frame Check Sequence (FCS): 8-bit sisa dari kalkulasi cyclic redundancy check (CRC), digunakan untuk dekteksi kesalahan bit. • RFC 1661 pada dasarnya menjelaskan penggunaan ke tiga kolom yang lain dalam frame: • Protocol: 8 atau 16 bit yang menentukan jenis datagram yang dibawa di kolom informasi. Kolom protokol menentukan jenis protokol yang digunakan di lapisan network (apakah itu IP, IPX atau DDP), atau PPP Link-layer Control Protocol (LCP). Daftar lengkap nilai PPP yang mungkin dapat di peroleh dari IANA list of PPP protocols. (http://www.iana.org/assignments/ppp-numbers/ppp-numbers.xml) • Information: berisi datagram dari protokol yang di spesifikasikan di kolom protokol. Kolom ini dapat kosong, atau berisi beberapa oktet, hingga maksimum 1500 oktet (default). Tentunya untuk nilai yang berbeda dapat di negosiasikan. • Padding: bersifat optional untuk menambah panjang dari kolom informasi. Mungkin dibutuhkan di beberapa implementasi untuk menjamin panjang frame minimum dan/atau untuk menjamin alignment batas dari komputer word.

Operasional PPP pada dasarnya sebagai berikut:

• Sesudah link fisik tersambung, setiap host akan mengikim paket Link Control Protocol (LCP) untuk mengkonfigurasi dan test data link. Pada saat ini panjang maksimum frame, protokol authentikasi (Password Authentication Protocol, PAP, atau Challenge-Handshake Authentication Protocol, CHAP), protokol link quality, protokol kompresi, dan berbagai parameter konfigurasi di negosiasikan. Authentikasi, jika digunakan, akan dilakukan setelah sambungan fisik terjadi. • Setelah sambungan fisik terjadi, satu atau lebih protokol lapisan network dikonfigurasikan menggunakan Network Control Protocol (NCP) yang sepadan. Jika digunakan IP, PPP akan mengunakan IP Control Protocol (IPCP). Setelah setiap protokol lapisan network selesai di konfigurasikan, datagram dari masing-masing protokol dapat dikirim melalui sambungan. Ada banyak Network Control Protocol (NCP) dapat digunakan untuk IP, IPX (NetWare), DDP (AppleTalk), DECnet, dll. • Sambungan akan terus tersambung untuk komunikasi sampai paket Link Control Protocol (LCP) dan/atau NCP memutuskan sambungan PPP.

Local Area Network Pada hari ini, jaringan lokal atau lebih dikenal sebagai Local Area Network (LAN) merupakan jaringan yang paling banyak di implementasikan untuk membentuk sebuah jaringan komputer.

Komputer yang terkait ke jaringan LAN biasanya di lengkapi dengan card Ethernet atau Network Interface Card / NIC atau lebih di kenal sebagai card LAN di toko-toko. Sebetulnya ada banyak tipe teknologi NIC, seperti, TokenRing, ARCNET dll, tapi yang paling populer adalah Ethernet & Wireless Ethernet / Wireless LAN.

Data melalui ethernet di kirim dalam unit frame, dimana setiap frame mempunyai awal dan akhir yang sangat jelas, Tampak pada gambar adalah struktur sebuah frame Ethernet versi 2.0 yang banyak di gunakan saat ini.

Gambar 21: Frame protokol data link Ethernet Dalam frame Ethernet II, di definisikan:

• Preamble: digunakan untuk sinkronisasi kecepatan / modem, 64 bit. • Alamat Ethernet Tujuan (Destination Address): dari mesin yang dituju, 48 bit • Alamat Ethernet Asal / Pengirim (Source Address): dari mesin pengirim, 48 bit • Tipe: Tipe data yang dikirim, seperti, IP, ARP, RARP, dll, 16 bit. • Kolom Data / Informasi: 46-1500 bytes, yang membawa informasi dan protokol yang lebih tinggi keluarga TCP/IP. • CRC Cyclical Redundancy Check: digunakan untuk mendeteksi kesalahan, 32 bit

Alamat Ethernet, atau lebih di kenal sebagai Media Access Control (MAC) address, kira-kira equivalen dengan nomor seri dari NIC. Setiap paket yang dikirim oleh NIC akan di bungkus di dalam frame Ethernet yang menggunakan MAC address untuk mengarahkan traffik di jaringan lokal. Oleh karena itu MAC address hanya penting di jaringan lokal saja. Pada saat paket berjalan di Internet, loncat dari satu router ke router yang lain IP address tidak berubah. Tapi MAC address akan di alokasikan lagi oleh setiap router yang di lewati. Proses / mekanisme perolehan informasi MAC address di jaringan menggunakan Address Resolution Protocol (ARP).

Panjang informasi yang sering digunakan adalah 1500 byte. Ini dikenal dengan nama Maximum Transmission Unit (MTU). Perlu kita sadari bahwa semakin panjang sebuah paket maka kemungkinan untuk tabrakan (collision) di jaringan semakin tinggi. Pada jaringan yang padat, kita perlu memperkecil MTU. Di Linux, kita dapat dengan mudah mengubah panjang MTU dengan perintah, misalnya untuk MTU 512 adalah

ifconfig eth0 mtu 512

Sebetulnya masih banyak tipe , beberapa diantaranya dapat dilihat di http://telecom.tbi.net/frmlan.html, http://www.erg.abdn.ac.uk/users/gorry/course/lan-pages/, dan http://en.wikipedia.org/wiki/Ethernet.

WLAN: Wireless LAN IEEE 802.11 Salah satu teknologi jaringan yang paling diminati adalah teknologi Wireless LAN yang memungkinkan kita membangun jaringan Internet pada kecepatan tinggi 100Mbps s/d 1+ Gbps menggunakan radio pada frekuensi 2.4GHz, 5.8GHz, 24GHz, 60GHz tanpa menggunakan Telkom. Hal ini memungkinkan untuk membuat akses Internet menjadi murah.

Teknologi Wireless Local Area Network (WLAN) di definisikan melalui spesifikasi protokol IEEE 802.11. Pada saat ini ada cukup banyak spesifikasi yang ada, beberapa yang dominan adalah 802.11, 802.11a, 802.11b, 802.11g, 802.11n, 802.11ac dan masih banyak lagi. Semua menggunakan protokol Ethernet dan CSMA/CA (carrier sense multiple access with collision avoidance jadi bukan CSMA/CD) dalam mengakses channel radio secara bersama-sama.

• 802.11 – mendefinisikan jaringan wireless LAN yang mampu memberikan kecepatan 1 / 2 Mbps pada frekuensi 2.4GHz menggunakan modulasi Frequency Hopping Spread Spectrum (FHSS) atau Direct Sequence Spread Spectrum (DSSS). Teknologi IEEE 802.11 FHSS yang dominan pada hari ini adalah Bluetooth. • 802.11a – merupakan extension dari 802.11 yang digunakan untuk Wireless LAN dan dapat memberikan kecepatan sampai dengan 54 Mbps di frekuensi 5-5.8 GHz. 802.11a menggunakan teknik modulasi / pengkodean Orthogonal Frequency Division Multiplexing (OFDM) yang berbeda dengan FHSS atau DSSS. • 802.11b (juga di kenal sebagai 802.11 kecepatan tinggi, atau Wireless Fidelity / WiFi) – merupakan extension dari 802.11 yang digunakan untuk Wireless LAN dan memberikan kecepatan sampai dengan 11 Mbps (dan dapat turun automatis menjadi 5.5, 2 dan1 Mbps) pada frekuensi 2.4 GHz. 802.11b hanya menggunakan DSSS. 802.11b merupakan ratifikasi dari standard 802.11 yang awal, yang memungkinkan jaringan wireless LAN mempunyai kemampuan yang hampir sama dengan Ethernet kabel. • 802.11g – memungkinkan wireless LAN kecepatan tinggi 54Mbps di 2.4GHz untuk jarak dekat. 802.11g menggunakan teknik pengcodean / modulasi OFDM. • 802.11n – perbaikan dari standard 802.11 dengan menambahkan multiple-input multiple- output antenna (MIMO). 802.11n beroperasi di band 2.4 GHz dan 5 GHz. Kecepatan data maksimum 54 Mbit/s s/d 600 Mbit/s. • 802.11ac – Akan memberikan throughput paling tinggi di 5GHz. Untuk multi-station WLAN akan dapat throughput throughput 1 Gbps, dan throughput satu link 500 Mbps, dengan menggunakan RF bandwidth yang lebar (80 atau 160 MHz), lebih banyak stream (s/d 8), dan high-density modulation (s/d 256 QAM). • 802.11ad "WiGig" – standard yang banyak di push oleh pabrikan hardware. Menggunakan 2.4 GHz, 5 GHz dan 60 GHz, throughput maksimum s/d 7Gbps.

Modulasi yang digunakan di 802.11 awalnya adalah Phase-Shift Keying (PSK). Metoda modulasi yang digunakan di 802.11b adalah Complementary Code Keying (CCK), yang memungkinkan kecepatan tinggi dan lebih tahan terhadap interferensi propagasi multipath. 802.11a menggunakan modulasi Orthogonal Frequency-Division Multiplexing (OFDM) yang memungkinkan kecepatan tinggi sampai 54 Mbps. Teknologi terus berkembang saat buku ini di tulis kita cukup biasa menggunakan 802.11n pada kecepatan 150-300Mbps. Pada saat buku ini di baca, kemungkinan kita akan biasa dengan 802.11ac dan 802.11ad yang bisa mencapai kecepatan 7Gbps.

Untuk jarak dekat & low power (kurang dari 10 meter) terutama di peralatan personal, seperti PDA, Bluetooth dan standard IEEE 802.15 menjadi dominan. Untuk jarak jauh dan kota besar, WiMAX dan IEEE 802.16 menjadi dominan.

Struktur MAC frame IEE 802.11 tampak sebagai berikut tampak pada gambar

Gambar 22: Frame protocol data link dari Wireless LAN IEEE 802.11

Definisi kolom di MAC IEEE 802.11b adalah:

• Frame Control (FC): Versi protokol dan jenis frame yang di jelaskan lebih detail di Frame Control. • Duration/ID (ID): digunakan untuk untuk message poll untuk power-save. Nilai waktu-nya digunakan untuk perhitungan Network Allocation Vector (NAV). • Sequence Control (SC): terdiri dari nomor fragment dan nomor urut. Digunakan untuk merepresentasikan urutan dari berbagai potongan dari frame yang sama, atau untuk mendeteksi duplikasi. • Kolom alamat (1-4): berisi 4 address (source, destination, transmittion dan receiver address) tergantung pada bit ToDS dan FromDS yang ada di Frame Control. • Kolom Data / Informasi: 0-2312 bytes, yang membawa informasi dan protokol yang lebih tinggi keluarga TCP/IP. • CRC Cyclical Redundancy Check: digunakan untuk mendeteksi kesalahan, 32 bit

ToDS FromDS Address 1 Address 2 Address 3 Address 4 0 0 DA SA APA - 0 1 DA APA SA - 1 0 APA SA DA - 1 1 RA TA DA SA

Dimana: DA Destination Address (alamat tujuan) SA Source Address (alamat pengirim) RA Receipent Address (alamat penerima) TA Transmitter Address (alamat pemancar) APA Access Point Address (alamat access point)

Format Frame Control (FC) adalah sebagai berikut:

• Protocol Version: menjelaskan versi standard IEEE 802.11 yang digunakan. • Type: menjelaskan bahwa paket yang dikirim apakah – Management, Control atau Data. • Sub-type: adalah Authentication frame, Deauthentication frame; Association request frame; Association response frame; Reassociation request frame; Reassociation response frame; Disassociation frame; Beacon frame; Probe frame; Probe request frame dan Probe response frame. • ToDS: di set 1 jika frame dikirim ke Distribution System (DS). • FromDS: di set 1 jika frame di terima dari Distribution System (DS). • More Fragment: di set 1 jika akan ada fragmen (potongan paket) selanjutnya yang merupakan bagian dari frame ini yang akan dikirim. • Retry: menunjukan bahwa potongan yang dikirim pernah dikirim sebelumnya, Bagi penerima, hal in menunjukan bahwa ada duplikasi pengiriman frame. • Power Management: menunjukanm bawa stasiun / PC akan masuk ke mode power management (irit batere) setelah frame ini dikirim. • More Data: menunjukan bahwa ada banyak frame di antrian dari PC / station ini. • WEP (Wired Equivalent Privacy): menujukan bahwa data yang dikirim di enkrip berdasarkan algoritma WEP. • Order: menunjukan bahwa frame yang dikirim menggunakan aturan yang ketat. Bit b3 b2 Penjelasan Bit b7 b6 b5 b4 Penjelasan 00 Management 0000 Associate Request 00 Management 0001 Associate Responds 00 Management 0010 Reassociate Request 00 Management 0011 Reassociate Responds 00 Management 0100 Probe Request 00 Management 0101 Probe Responds 00 Management 0110-0111 Reserved 00 Management 1000 Beacon 00 Management 1001 ATIM 00 Management 1010 Disassociation 00 Management 1100 Deauthentication 00 Management 1101-1111 Reserved 01 Control 0000-0001 Reserved 01 Control 1010 PS-Poll 01 Control 1011 RTS 01 Control 1100 CTS 01 Control 1101 ACK 01 Control 1110 CF End 01 Control 1111 CF End + CF-ACK 10 Data 0000 Data 10 Data 0001 Data + CF-ACK 10 Data 0010 Data + CF-Poll 10 Data 0011 Data + CF-ACK + CF-Poll 10 Data 0100 Null Function (no data) 10 Data 0101 CF-ACK (no data) 10 Data 0110 CF-Poll (no data) 10 Data 0111 CF-ACK + CF-Poll (no data) 10 Data 1000-1111 Reserved

Keterangan teknis lebih mendalam tentang format frame protokol Wireless LAN IEEE 802.11b terutama dapat di ambil di http://umsis.miami.edu/~ksarinna/IEEE80211b.html.

Keterangan lebih lanjut tentang berbagai informasi tentang teknologi Wireless LAN cukup mudah di peroleh di Google. Terutama untuk membuat infrastruktur Intrenet murah ada beberapa site yang mungkin bisa untuk memulai-nya adalah http://wndw.net, http://nuke.freenet-antennas.com/, http://www.seattlewireles.net, http://www.wlan.org.uk, dan http://wireless.ictp.trieste.it.

Paket Radio Teknik radio paket merupakan teknik awal dari berbagai teknik Internet menggunakan radio amatir / 2 meter-an. Teknik ini cukup populer di Indonesia di awal tahun 80-an. Memang kecepatan jaringan komputer yang menggunakan radio paket sangat rendah, hanya sekitar 1200-9600 bps, sangat rendah di bandingkan dengan teknologi WiFi 11Mbps – 1.28Gbps yang sekarang kita nikmati.

Akan tetapi, saya sendiri cukup kaget mengetahui bahwa teknologi radio paket masih di gunakan oleh banyak saudara kita di Indonesia khususnya di daerah-daerah terpencil di Nusa Tenggara dll. Melihat kenyataan ini, saya memasukan pembahasan frame protokol AX.25 yang merupakan standard yang digunakan di radio paket. Adapun format frame AX.25 radio paket adalah sebagai berikut:

Gambar 23: Frame protocol data link AX.25

AX.25 sama seperti PPP menggunakan format frame High Level Data Link Controller (HDLC) yang merupakan protokol bit-oriented biasanya digunakan dalam komunikasi data yang sifatnya sinkron. HDLC mendefiniskan kolom pertama dan dua kolom yang terakhir dari frame.

• Flag: 8-bit pattern "01111110" yang digunakan sebagai batas awal dan akhir pengiriman data / paket. • Control: 8 / 16bit , adalah kolom kontrol pada AX.25 yang mengacu pada operasi HDLC balances operation yang pada dasarnya terdiri dari tiga (3) mekanisme, yaitu, frame informasi (I), supervisory (S) dan unnumbered (U). Frame untuk mengirimkan data adalah frame informasi (I). • Address: 112 / 224 bit, pada AX.25, digunakan callsign Amatir radio untuk stasiun tujuan, stasiun penerima, dan beberapa stasiun relay jika ada. Di tambah Secondary Station Identifier (SSID). Total per address akan memakan 7 byte ( 48bit). • Protocol: 8 bit yang menentukan jenis datagram yang dibawa di kolom informasi. Kolom protokol menentukan jenis protokol yang digunakan di lapisan network (apakah itu IP, ARP, NET/ROM, TEXNET, FlexNet dll). • Information: berisi datagram dari protokol yang di spesifikasikan di kolom protokol. Kolom ini dapat kosong, atau N kali 8 bit. • Frame Check Sequence (FCS): 16-bit sisa dari kalkulasi cyclic redundancy check (CRC), digunakan untuk dekteksi kesalahan bit.

Teknik Control secara lengkap dan Protokol ID yang di dukung di AX.25 dapat dilihat di spesifikasi AX.25 versi 2.2 yang dapat di ambil dari http://www.tapr.org.

Bagi anda yang berminat untuk mengoprek teknologi radio paket, terutama mengunakan Linux, dapat mengambil berbagai referensi-nya di

http://125.160.17.21/speedyorari/index.php?dir=orari-diklat/teknik/packet-radio

Address Resolution Protocol (ARP) MAC Address ini adalah kunci komunikasi dua buah komputer dalam jaringan yang sama. Yang menjadi masalah adalah bagaimana mengetahui MAC address dari komputer yang ingin kita tuju? Yang menjadikan lebih sulit adalah proses ini harus dibuat pandai, sehingga pengguna tidak perlu mengetahui proses ini. Mari kita perhatikan penjelasan berikut ini.

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 address. 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.ietf.org/rfc/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, misalnya dengan IP address 192.168.1.1, mempunyai MAC address berapa? Hal ini di perlukan, 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-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/arp- parameters.xml. 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 192.168.0.3 MAC address 00:03:0d:e3:db:76 yang terhubung ke jaringan LAN. Tampak pada gambar adalah tabel ARP yang terdapat di komputer 192.168.0.3 tersebut.

Gambar 24: Tabel ARP di komputer penanya

Komputer 192.168.0.3 ingin berhubungan dengan komputer 192.168.0.222 yang belum di ketahui MAC Addess-nya. Maka Komputer 192.168.0.3 akan mengirimkan ARP Request menanyakan MAC address komputer 192.168.0.222, yang di tandai dengan MAC address 00:00:00:00:00:00 pada MAC address target di message ARP Request.

Gambar 25: Komputer bertanya MAC address komputer / router tujuan

Komputer 192.168.0.222 dengan MAC address 98:fc:11:cf:ea:99 yang berada di LAN memonitor permohonan dari komputer 192.168.0.3. Maka komputer 192.168.0.222 akan menjawab dengan ARP responds, yang memberikan MAC address komputer 192.168.0.222. Gambar 26: Komputer / Router tujuan menjawab permohonan MAC address

Informasi MAC address komputer 192.168.0.222, terdengar oleh komputer 192.168.0.3. Oleh karena itu, informasi MAC Address akan dimasukan ke dalam ARP Table yang ada di komputer 192.168.0.3, seperti tampak pada gambar.

Gambar 27: Tabel ARP di Komputer penanya 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 kita akan menggunakan tcpdump yang tersedia di Linux, misalnya 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@ubuntu64:/etc/apt# arp -a ? (192.168.0.222) at 98:fc:11:cf:ea:99 [ether] on eth0 ? (192.168.0.220) at c0:c1:c0:89:66:ad [ether] on eth0 ? (192.168.0.2) at on eth0 TKJBook.local (192.168.1.254) at 00:90:a9:b2:97:8f [ether] on eth0 TS5200D494.local (192.168.0.9) at 10:6f:3f:17:94:94 [ether] on eth0 LS-WSXLD91.local (192.168.0.8) at 00:24:a5:48:bd:91 [ether] on eth0

Atau melalui perintah arp -n yang lebih enak di pandang, seperti berikut:

root@ubuntu64:/etc/apt# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.0.222 ether 98:fc:11:cf:ea:99 C eth0 192.168.0.2 (incomplete) eth0 192.168.1.254 ether 00:90:a9:b2:97:8f C eth0 192.168.0.9 ether 10:6f:3f:17:94:94 C eth0 192.168.0.8 ether 00:24:a5:48:bd:91 C eth0 BAB 7: Internet Layer (IPv4)

Protokol IP merupakan inti dari protokol TCP/IP. Seluruh data yang berasal dari protokol pada layer diatas IP harus dilewatkan, diolah oleh protokol IP, dan dikirimkan sebagai paket IP, agar sampai ke tujuan. Dalam melakukan pengiriman data, IP memiliki sifat yang dikenal sebagai tidak reliable, tidak andal, conectionless, datagram delivery service.

Ada dua kata yang menarik dari sifat IP diatas, yaitu unreliable (tidak andal) dan connectionless. Internet Protocol (RFC 791) (http://www.ietf.org/rfc/rfc791.txt), memberikan servis yang kira-kira equivalen dengan dengan lapisan network di OSI. IP memberikan servis transport datagram (connectionless) di jaringan. Servis ini tidak andal karena Internet Protokol tidak menggaransi penyampaian paket atau pemberitahuan ke host tujuan kalau ada paket loss, error, atau kemacetan di jaringan. IP datagram berisi sebuah message, atau potongan message, yang panjangnya dapat sampai dengan 65,535 byte (oktet). IP tidak memberikan mekanisme flow control yang mengatur aliran data.

Unreliable / Ketidakandalan berarti bahwa Protokol IP tidak menjamin datagram yang dikirim pasti sampai ke tempat tujuan. Protokol IP hanya berjanji ia akan melakukan usaha sebaik baiknya (best effort delivery service), agar paket yang dikirim tersebut sampai ke tujuan.

Jika di perjalanan paket tersebut terjadi hal-hal yang tidak diinginkan (salah satu jalur putus, router mengalami kongesti/macet, atau host/network tujuan sedang down), protokol IP hanya memberitahukan ke pengirim paket. Proses pemberitahuan biasanya menggunakan protokol Internet Control Message Protocol (ICMP). ICMP akan memberitahukan bahwa terjadi masalah dalam pengiriman paket IP ke tujuan. Jika diinginkan keandalan yang lebih baik, keandalan itu harus disediakan oleh protokol yang berada diatas layer IP ini (yaitu TCP dan aplikasi pengguna).

Sedangkan kata connectionless berarti dalam mengirim paket dari tempat asal ke tujuan, pihak pengirim dan penerima paket IP sama sekali tidak mengadakan perjanjian (handshake) terlebih dahulu.

Datagram delivery service berarti setiap paket data yang dikirim adalah independen terhadap paket data yang lain. Akibatnya, jalur yang ditempuh oleh masing masing paket data IP ke tujuannya bisa jadi berbeda satu dengan lainnya. Karena jalur yang ditempuh berbeda, kedatangan paket pun bisa jadi tidak berurutan.

Gambar 28: Route perjalanan paket yang bisa berbeda-beda Pada gambar perjalanan IP, paket 3,4,5 melalui jalur berbeda dengan 1 dan 2. Paket 3 ditransmisikan ulang karena router yang di lalui down, sehingga kedatangannya tak urut seperti semula

Mengapa metoda seperti ini dipakai dalam pengiriman paket IP? Hal ini dilakukan untuk menjamin tetap sampainya paket IP ini ke tujuan, walaupun salah satu jalur ke tujuan itu mengalami masalah.

Jika kita renungkan, maka sebetulnya jaringan Internet sangat mengerikan karena lapisan protokol IP ini sama sekali tidak menjamin apa-apa. Oleh karena itu, sangat mengagumkan melihat Internet hari ini yang bisa mengkaitkan ratusan juta komputer menggunakan mekanisme yang sangat tidak reliable melalui Internet Protocol yang ada di lapisan protokol network.

Internet Protocol versi 4

Gambar 29: Format Internet Protocol versi 4

Format header Internet Prototol (IP) versi 4 pada gambar. Format dari diagram konsisten dengan RFC, bit berurut dari kiri-ke-kanan dimulai dari nol. Setiap baris merepresentasikan sebuah word 32-bit. Perlu diperhatikan bahwa header IP akan paling tidak panjangnya 5 word (20 byte). Kolom di header, dan fungsinya adalah sebagai berikut:

• Version: berisi versi Internet Protocol (IP) (4 bit). Versi yang sering digunakan pada hari ini adalah IP versi 4, maka kolom ini akan berisi 0100. Sebetulnya, ada banyak versi IP dan ini di terangkan di IANA List of IP Version Numbers. (http://www.iana.org/assignments/version-numbers/version-numbers.xml). Perkembangan lebih lanjut akan menggunakan IP versi 6 (IPv6) tidak akan di bahas dalam bagian ini, akan di bahas pada bagian lain atau buku yang lain. • Internet Header Length (IHL): Mengindikasikan panjang dari datagram header dalam 32 bit (4 oktet) word. Panjang minimum header adalah 20 oktet, oleh karena itu kolom ini akan mempunyai nilai minimum 5 (0101). Karena nilai maksimum dari kolom ini adalah 15, maka IP header tidak mungkin lebih panjang dari 60 oktet. • Type of Service (TOS): memungkinkan bagi host pengirim paket untuk meminta perbedaan kelas dalam mengirimkan paket. Walaupun tidak sepenuhnya di dukung oleh IPv4 yang banyak digunakan hari ini. Kolom TOS memungkinkan host pengirim meminta servis berbeda di lapisan transport / lapisan internet, dan dapat menspesifikasikan prioritas (0-7), atau dapat meminta route yang di optimisasi berdasarkan biaya, delay, throughput, atau keandalan. • Total Length: mengindikasikan panjang (dalam byte, atau oktet) dari keseluruhan paket, termasuk header dan data.Karena keterbetasan panjang kolom ini, maka panjang maksimum IP paket adalah 64KB, atau 64,535 byte. Pada praktisnya panjang paket di batasi oleh maximum transmission unit (MTU). • Identification: digunakan jika sebuah paket dipotong-potong menjadi potongan yang lebih kecil pada saat dikirim pada salah satu subnetwork yang dilewati. Dengan identifikasi ini, potongan-potongan paket yang diterima router tujuan dapat mengassembling kembali menjadi sebuah paket utuh kembali. • Flags: juga digunakan pada proses pemotongan / fragmentasi dan reassembly. Bit pertama disebut More Fragments (MF) bit, dan digunakan untuk memberi tanda pada potongan akhir dari paket sehingga bagian penerima tahu bahwa potongan paket yang diterima dapat di reassimbly. Bit kedua disebut Don't Fragment (DF) bit, yang akan meniadakan proses pemotongan paket. Bit ke tiga tidak digunakan dan selalu di set ke 0. • Fragment Offset: menunjukan posisi potongan dari paket yang awal. Potongan pertama dari sebuah paket, akan bersisi offset yang sama dengan 0.Potongan selanjutnya akan ditunjukan oleh offset dengan kenaikan 8 byte. • Time-to-Live (TTL): mempunyai nilai antara 0 sampai 255 (8 bit). TTL menunjukan berapa hop / router yang di ijinkan untuk dilewati oleh paket sebelum paket tersebut akan dibuang dari jaringan. Setiap router yang dilewati akan mengurangi nilai TTL satu (1) buah, jika nilai TTL mencapai 0 maka paket akan automatis dibuang dan router terakhir akan mengirimkan paket ICMP time excedeed. Hal ini dilakukan untuk mencegah paket IP terus menerus berada didalam network. • Protocol: menunjukan protokol yang dibawa diatas Internet Protocol, pilihan yang ada termasuk ICMP (1), TCP (6), UDP (17), atau OSPF (89). Daftar lengkap nomor protocol ini dapat dilihat di IANA list of Protocol Numbers (http://www.iana.org/assignments/protocol- numbers/protocol-numbers.xml) Daftar ini juga dapat dilihat di file protocols yang biasanya ada di /etc/protocols (Linux/Unix). • Header Checksum: berisi informasi yang menjamin agar header IP bebas dari error (16 bit). Perhatikan bahwa IP memberikan servis yang tidak reliable, oleh karena ini kolom ini hanya mencek header saja, bukan keseluruhan paket. • Source Address: IP address dari host pengirim paket (32 bit) • Destination Address: IP address dari host yang dituju oleh paket (32 bit) • Options: option yang dapat diberikan ke sebuah paket yang dikirim, seperti routing yang khusus, atau keamanan. Daftar option dapat sampai dengan 40 byte (10 word), dan akan diisi untuk memenuhi batas word. Daftar IP option dapat diperoleh dari IANA list of IP Option Numbers (http://www.iana.org/assignments/ip-parameters/ip-parameters.xml). Beberapa contoh options adalah: 1. Strict Source Route. Berisi daftar lengkap IP address dari router yang harus dilalui oleh paket ini dalam perjalanannya ke host tujuan. Selain itu paket balasan atas paket ini,yang mengalir dari host tujuan ke host pengirim, diharuskan melalui router yang sama. 2. Loose Source Route. Dengan men-set option ini, paket yang dikirim diharuskan singgah di beberapa router seperti yang disebutkan dalam field option ini. Jika diantara kedua router yang disebutkan terdapat router lain, paket masih diperbolehkan melalui router tersebut.

Tidak banyak informasi tentang jalur yang dapat / akan digunakan untuk mengirim paket. Teknik pemilihan jalur untuk mengirim paket di kenal sebagai teknik routing yang di jelaskan pada bagian yang lain. Format IP Address versi 4

Bentuk biner IP address versi 4 merupakan bilangan biner 32 bit yang dipisahkan oleh tanda pemisah berupa tanda titik setiap 8 bitnya. Tiap 8 bit ini disebut sebagai oktet. Bentuk IP address adalah sebagai berikut

xxxxxxxx . xxxxxxxx . xxxxxxxx . xxxxxxxx

Setiap simbol “x” dapat digantikan oleh angka 0 dan 1, misalnya sebagai berikut :

10000100 . 1011100 . 1111001 . 00000001

Bentuk dotted decimal Notasi IP address dengan bilangan biner seperti diatas tidaklah mudah dibaca. Untuk membuatnya lebih mudah dibaca dan ditulis, IP address sering ditulis sebagai 4 bilangan desimal yang masing- masing dipisahkan oleh titik. Format penulisan seperti ini disebut “dotted-decimal notation” (notasi desimal bertitik). Setiap bilangan desimal tersebut merupakan nilai dari satu oktet (delapan bit) IP address. Gambar berikut memperlihatkan bagaimana sebuah IP address yang ditulis dengan notasi dotted-decimal:

Gambar 30: IP versi 4 dalam format desimal

IP address versi 4 dan artinya Jika dilihat dari bentuknya, IP address terdiri dari 4 buah bilangan biner 8 bit. Nilai terbesar dari bilangan biner 8 bit ialah 255 (= 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20). Karena IP address terdiri dari 4 buah bilangan 8 bit, maka jumlah IP address yang tersedia ialah 255 x 255 x 255 x255. IP address sebanyak ini harus dibagi bagikan ke seluruh pengguna jaringan internet di seluruh dunia.

Untuk mempermudah proses pembagiannya, IP address dikelompokkan dalam kelas kelas. Dasar pertimbangan pembagian IP address ke dalam kelas-kelas adalah untuk memudahkan pendistibusian pendaftaran IP address. Dengan memberikan beberapa blok IP address kepada ISP (Internet Service Provider) di suatu area diasumsikan penanganan komunitas lokal tersebut akan lebih baik, dibandingkan dengan jika setiap pemakai individual harus meminta IP address ke otoritas pusat, yaitu Internet Assigned Numbers Authority (IANA) http://www.iana.org.

Cikal bakal IANA di tahun 1972, hingga menjadi IANA pada tahun 1988 dioperasikan satu orang yaitu Legendaris Jon Postel hingga akhir hayatnya di tahun 1998. Jon Postel adalah satu orang di dunia yang menanamkan fondasi dasar Internet hari ini. Pengoperasian IANA pada saat ini dilakukan oleh Internet Corporation for Assigned Names and Numbers (ICANN) http://www.icann.org/ IP Address, Subnetmask dan Subnetting Sebetulnya ada dua (2) aturan teknik subnetting di jaringan TCP/IP. Aturan yang awal adalah RFC 950, aturan yang baru dapat dilihat di RFC 1812. Untuk teknik Subnetting yang baru kita perlu khatam aljabar biner terutama operasi AND.

Dunia Menurut RFC 950 – Cara Lama Bagian ini di tulis untuk keperluan sejarah saja, karena sebetulnya cara praktis tidak dilakukan di Internet yang besar. Sebagian LAN mungkin masih menggunakan cara ini.

Untuk IPv4, panjang total sebuah IP address adalah 32 bit. Hal ini tidak berlaku di IPv6 yang mempunyai address space lebih panjang lagi. Biasanya IP address ditulis dalam kumpulan empat (4) nomor merepresentasikan nilai desimal dari address byte (8 bit). Setiap nilai di pisahkan dengan titik, notasi ini dikenal sebagai dotted decimal (desimal bertitik). Contoh IP address adalah 202.159.123.23.

IP address sebetulnya mempunyai hirarki untuk keperluan routing, dan biasanya dibagi menjadi dua sub-kolom. Network Identifier (NET_ID) memberitahukan TCP/IP subnet yang tersambung ke Internet. NET_ID digunakan untuk routing antar jaringan, sama seperti kode negara, kode wilayah, kode kota di pesawat telepon yang kita gunakan. Host Identifier (HOST_ID) menentukan host tertentu di dalam subnetwork

Untuk memudahkan membayangkan konsep IP address, mari kita lihat persamaan konsep IP address dengan nomor telepon. Contoh, sebuah nomor telepon Jakarta 021 421-4567. NET_ID untuk telepon di Jakarta adalah 021, sedang HOST_ID atau pesawat teleponnya 421-4567. Tentunya jaringan telepon di Jakarta lumayan rumit dengan di layani dengan beberapa sentral telepon, khusus untuk pesawat 421-xxxx sebetulnya dilayani sentral telepon Cempaka Putih. Jadi sebetulnya kita dapat pecah lagi menjadi NET_ID 021, SUBNET_ID 421 dan HOST 4567. Dengan cara ini akan memudahkan bagi operator telepon untuk melakukan routing sambungan telepon antar sentral telepon. Setiap sentral telepon cukup mencocokan NET_ID atau SUBNET_ID saja untuk mencapai pesawat telepon yang di tuju. Dengan cara / konsep yang sama IP address bekerja.

Gambar 31: Kelas IPv4 cara lama

Untuk memenuhi kebutuhan besar jaringan yang berbeda, IP mendefinisikan beberapa kelas alamat. Pada teknik lama, di perkenalkan kelas A, B dan C yang hanya berbeda pada panjang NET_ID:

• Kelas A, NET_ID 8 bit, HOST_ID 24 bit. Kelas A untuk jaringan yang sangat besar dan dapat memberikan alamat bagi 16.777.214 (2^24 – 2) host per jaringan. Bit pertama dari IP address kelas A adalah 0 dan NET_ID menempati byte pertama. Hanya ada 128 (2^7) kemungkinan jaringan yang memiliki kelas A NET_ID. Pada kenyataannya, digit pertama kelas A adalah antara 1 sampai 126, dan hanya sekitar kurang lebih 90 kelas A yang telah dialokasikan.

• Kelas B, NET_ID 16 bit, HOST_ID 16 bit. Kelas B di peruntukan bagi jaringan yang lumayan besar dan dapat memberikan alamat bagi 65.534 (2^16 – 2) host per jaringan. Dua bit pertama IP address kelas B adalah 10. IP address kelas B mempunyai nomor pertama 128 sampai 191, ada 16.384 (2^14) kemungkinan kelas B NET_ID. Kelas B sudah lama habis, sangat sulit sekali untuk memperoleh kelas B yang baru. Di Indonesia hanya ada 2-3 buah alokasi IP kelas B, satu diantaranya adalah ITB.

• Kelas C, NET_ID 24 bit, HOST_ID 8 bit. Kelas C di peruntukan bagi jaringan yang kecil dan dapat memberikan alamat bagi 254 (2^8 -2) host per jaringan. Tiga bit pertama IP address kelas C adalah 110 mempunyai nomor pertama 192 sampai 223.Ada 2,097,152 (221) kemungkinan kelas C NET_ID dan umumnya alamat yang dialokasikan pada hari ini adalah Kelas (atau sub-Kelas C).

Sisa dua kelas address dialokasikan untuk fungsi khusus, dan tidak dialokasikan untuk host-host secara individu. Kelas D mempunyai nilai antara 224 sampai 239 (dengan 4 bit pertama bernilai 1110), dan digunakan untuk IP multicast, yaitu pengiriman sebuah datagram ke banyak mesin sekaligus, IANA mendokumentasikan daftar Internet Multicast Addresses (http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml) . Kelas E mempunyai nilai antara 240 sampai 255 (dengan 4 bit pertama 1111), dan di reserved untuk keperluan experimental.

Untuk keperluan , dalam sebuah LAN atau IntraNet atau corporate network, ada beberapa NET_ID yang di reserved berdasarkan RFC 1918 (http://www.isi.edu/in- notes/rfc1918.txt) untuk jaringan private / jaringan tertutup dan tidak di routing ke Internet. IP address private biasanya digunakan dalam LAN atau IntraNet. Alamat / NET_ID tersebut adalah:

• Satu (1) kelas A 10.0.0.0 (dulu dialokasikan untuk ARPANET) • Enam belas (16) kelas B 172.16.0.0 s/d 172.31.0.0. • 256 Kelas C 192.168.0.0 – 192.168.255.0.

Konsep pengalamatan yang lebih kompleks biasanya menggunakan subnetmask. Subnetmask digunakan untuk menandai porsi yang NET_ID dan HOST_ID terutama untuk keperluan routing. Subnet mask dapat ditulis dengan dotted decimal dan jumlah bit yang “1” menandakan NET_ID bit. Untuk berbagai kelas IP, subnet mask dan jumlah bit yang “1” untuk NET_ID adalah:

Byte Pertama Class Subnet Mask Jumlah Bit “1” 1-126 A 255.0.0.0 8 128-191 B 255.255.0.0 16 192-223 C 255.255.255.0 24

Tergantung konteks dan literature, subnetmask dapat ditulis dalam bentuk dotted decimal atau hanya nomor yang merepresentasikan jumlah bit “1” dari NET_ID. Contoh 202.154.107.25 255.255.255.0 dan 202.154.107.25/24 ke duanya mengacu pada kelas C NET_D 202.154.107. Beberapa orang, bahkan, sering mengacu 24 bit NET_ID sebagai “slash-24” (/24). Perlu di catat bahwa orang banyak menyebut sebuah subnet dengan netmask 255.255.255.0 sebagai jaringan kelas “C”. Padahal, kelas C yang benar hanya jaringan dengan byte pertama antara 192- 223. Hal ini menjadi penting pada saat kita mulai melakukan subnetting.

Bagian subnet dari IP address sebetulnya optional, dan jarang digunakan di jaringan kelas “C”. Umumnya, kita dapat membuat subnet dari jaringan apapun yang kita kontrol dengan cara yang valid yang kita mau. Yang sulit adalah untuk mengerti “mana yang valid”. Mari kita mulai dengan aturan dasarnya.

Pengalokasian IP address Pengalokasian IP address pada dasarnya ialah proses memilih network ID dan host ID yang tepat untuk suatu jaringan. Tepat atau tidaknya konfigurasi ini tergantung dari tujuan yang hendak dicapai, yaitu mengalokasikan IP address seefisien mungkin.

Aturan dasar pemilihan network ID dan host ID Ada beberapa aturan dasar dalam menentukan network ID (NET_ID) dan host ID (HOST_ID) yang hendak digunakan. Aturan tersebut adalah:

• NET_ID tidak boleh sama dengan 127. NET_ID 127 tidak dapat digunakan karena ia secara default digunakan untuk keperluan loopback. Loopback ialah IP address yang digunakan komputer untuk menunjuk dirinya sendiri.

• NET_ID dan HOST_ID tidak boleh sama dengan 255 (seluruh bit di set 1). Seluruh bit dari network ID dan host ID tidak boleh semuanya di set 1. Jika hal ini dilakukan, NET_ID atau HOST_ID tersebut akan diartikan sebagai alamat broadcast. ID broadcast merupakan alamat yang mewakili seluruh anggota jaringan. Pengiriman paket ke alamat broadcast akan menyebabkan paket ini didengarkan oleh seluruh anggota network tersebut.

• NET_ID dan HOST_ID tidak boleh 0 (nol). NET_ID dan HOST_ID tidak boleh semua bit nya 0 (nol). IP address dengan host ID 0 diartikan sebagai alamat network. Alamat network ialah alamat yang digunakan untuk menunjuk suatu jaringan, dan tidak menunjukkan suatu host

• HOST_ID harus unik dalam satu network. Dalam satu network, tidak boleh ada dua host yang memiliki HOST_ID yang sama.

• NET_ID harus sama di semua mesin dalam satu network. Jika tidak, maka paket yang ditujukan untuk NET_ID (subnet) yang lain tidak akan keluar dari subnet, karena mesin akan menyangka bahwa paket tersebut ditujukan untuk segmen jaringan lokal. Perilaku ini perlu untuk di pahami; router tidak akan secara automatis meneruskan / merelay paket, host harus memberikan paket ke router.

• Tidak boleh ada dua NET_ID yang mempunyai host address yang sama. Hal ini bisa sangat pelik jika subnetting dilakukan dengan cara yang tidak biasa. Contoh konfigurasi Valid dan Tidak Valid Konfigurasi Valid

Konfigurasi Yang Tidak Valid

Konfigurasi pada gambar di atas tidak valid, karena subnet di kedua sisi router persis sama. Router pasti akan bingung cara menghubungkan ke dua jaringan tersebut.

Konfigurasi ini tidak valid karena subnet yang sama ada di ke dua sisi router. Walaupun secara sepintas mempunyai network address yang beda, tapi sebetulnya subnet yangdigunakan sama. Perhatikan baik-baik subnetmask yang digunakan! Konfigurasi ini tidak valid, karena ada host yang sama dapat “valid” di ke dua subnet, contoh, 192.168.2.231. Walaupun subnet di sebelah kanan valid, tapi subnet di sebelah kiri merupakan bagian kecil dari subnet di sebelah kanan.

Kecuali! Overlap address yang didemikian biasanya tidak di ijinkan antara dua subnet, kecuali kalau router dapat di konfigurasi untuk “berpura-pura” mengetahui bahwa semua alamat 192.168.2.0 adalah di sebelah kanan dari router. Agar host di sebelah kiri dapat berkomunikasi, maka perlu dilakukan “proxy arp” di sisi router. Yang pada dasarnya, router menjadi perantara ARP bagi host di sebelah kiri dari semua host di sebelah kanan. Konfigurasi ini di kenal sebagai “stub subnet”.

Jika menggunakan subnet mask 255.255.0.0, maka dua byte pertama menunjukan network tempat kita berada, sedang dua byte yang ke dua menunjukan host di jaringan. Tapi sangat jarang kita melihat sebuah segmen jaringan dengan 65.534 host di dalamnya. Kita hanya akan melihat masking dengan sekian banyak host di backbone Internet, tapi jarang di sisi user / corporate network.

Jika menggunakan subnet mask 255.255.255.0, tiga byte pertama menunjukan network. Byte terakhir berisi address host dari .1 sampai .254.

Jika menggunakan subnet mask 255.255.255.128, kita dapat memenggal jaringan menjadi dua bagian. Bagian pertama mempunyai address dari .1 sampai .126. Jaringan ke dua mempunyai address dari .129 sampai .254. Perlu di catat bahwa di jaringan kelas C yang benar, kita tidak dapat menggunakan subnet yang atas, karena bit di bagian subnet (satu bit di kelas C) bernilai satu (aturan dasar yang ke empat).

Dengan menggunakan subnet mask 255.255.255.192, kita dapat memenggal jaringan menjadi empat bagian, dengan masing-masing 64 host (62 host yang dapat digunakan). Subnetwork satu meliputi address .1 sampai .62, subnetwork dua meliputi address .65 sampai .126, subnetwork tiga termasuk .129 sampai .190, dan subnetwork empat meliputi host .193 sampai .254. Dalam sebuah jaringan kelas C, subnetwhork empat tidak valid.

Pada dasarnya kita tidak dapat sembarangan memenggal sebuah jaringan dan meletakan satu segmen ke segmen lain; yang paling maksimum dapat kita lakukan adalah memotongnya menjadi, setengah, seperempat, seperdelapan, atau seper enambelas. Perhatikan penggunaan bilangan pangkat dua pada bilangan pembagi. Hal ini terjadi karena pada dasarnya kita menggeser posisi bit host dari bagian host address. Konfigurasi Network Interface Setelah IP address, netmask dan didefiniskan, ketiganya harus di konfigurasikan di komputer yang bersangkutan. Pada sistem operasi Linux, biasanya digunakan perintah ifconfig untuk mengkonfigurasi interface.

Perintah ifconfig digunakan untuk mengecek atau mengkonfigurasi sebuah network interface. Yang dapat dikonfigurasi oleh perintah ini antara lain:

• IP address • Subnet Mask • Broadcast address

Berbagai parameter interface yang dapat di definisikan menggunakan perintah ifconfig dapat diketahui melalui perintah ifconfig –h. Format dari perintah ifconfig yang sering kita gunakan, adalah: # ifconfig [nama_interface] [ip-address] netmask [netmask] broadcast [broadcast address]

Pada perintah diatas, nama_interface ialah nama yang digunakan oleh Linux untuk merujuk ke suatu network interface tertentu. Biasanya untuk LAN card, digunakan notasi eth0, eth1, dst. Untuk WiFi / WLAN, biasanya digunakan notasi wlan0, wlan1 dsb. Untuk dial-up, digunakan notasi ppp0, ppp1, dst.

Biasanya interface LAN yang ada di komputer akan secara automatis terdeteksi. Untuk mencek nama interface yang terdeteksi dapat dilakukan menggunakan perintah ifconfig tanpa apa-apa:

root@ubuntu64:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:03:0d:e3:db:76 inet addr:192.168.0.169 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::203:dff:fee3:db76/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:83788466 errors:0 dropped:0 overruns:0 frame:0 TX packets:162651097 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:12208302538 (12.2 GB) TX bytes:232014513927 (232.0 GB)

lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:16303003 errors:0 dropped:0 overruns:0 frame:0 TX packets:16303003 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:152558354246 (152.5 GB) TX bytes:152558354246 (152.5 GB)

Mendefinisikan interface Sebagai contoh, perintah ifconfig berikut ini digunakan untuk mengkonfigurasi interface "eth0" pada suatu host dengan IP address 192.168.0.1 dan netmask 255.255.255.0

# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255

Perlu di catat bahwa Ubuntu versi 16.04 ke atas menggunakan nama jaringan yang bukan eth0.

Seringkali sebetulnya netmask & broadcast address tidak perlu kita isi, kita netmask dan broadcast address yang digunakan adalah standard. Jika semua standard, tidak ada yang khusus / aneh, maka kita cukup menulis:

# ifconfig eth0 192.168.0.1

Secara automatis akan dipilih network 255.255.255.0 dan broadcast address 192.168.0.255. Setelah dikonfigurasi, kita dapat melihat interface kita ini menggunakan perintah

# ifconfig eth0

Contoh

[root@yc0mlc ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:02:B3:35:42:71 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::202:b3ff:fe35:4271/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:58728 errors:0 dropped:0 overruns:0 frame:0 TX packets:49034 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10509614 (10.0 MiB) TX bytes:10137152 (9.6 MiB)

Berdasarkan hasil perintah ini, terlihat bahwa interface eth0 sedang operasional (UP), terhubung ke jaringan yang mendukung mode BROADCAST (dalam hal ini ethernet), mempunyai alamat IPv6, mendukung mode pengalamatan MULTICAST. Maksimum panjang paket / Maximum Transmission Unit (MTU) adalah 1500 byte.

Bagi mereka yang menggunakan Ubuntu, proses konfigurasi Interface dapat juga dengan mengedit file /etc/network/interfaces, misalnya di isi dengan perintah

auto eth0 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.222 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.0.222

Dengan mengedit file /etc/network/interfaces di Ubuntu, kita dapat menambahkan informasi tentang,

• IP address gateway • IP address DNS Server

Untuk mengaktifkan jaringan dapat dilakukan dengan perintah

/etc/init.d/networking restart atau dengan me-reboot komputer yang kita gunakan. Menyalakan dan mematikan interface ifconfig miliki dua argument, yaitu "up" dan "down" yang berguna untuk menandai sebuah interface. Argument "up" digunakan untuk menandai interface tersebut sedang operasional, sehingga ia siap untuk digunakan. Argument "down"sebaliknya, menandai network interface sedang dalam keadaan tidak operasional sehingga ia tak dapat digunakan.

Perintah "down" ini dipakai jika kita ingin melakukan konfigurasi ulang terhadap sebuah interface. Beberapa parameter konfigurasi, seperti IP Address misalnya, tak dapat diubah kecuali jika interfacenya sedang dalam keadaan "down". sehingga untuk melakukan perubahan IP Address, mula-mula interface tersebut di "down" dahulu, dilakukan rekonfigurasi, baru kemudian ia di "up" kembali. Contoh

# ifconfig eth0 down # ifconfig eth0 192.168.0.100 up

Setelah perintah ini, interface eth0 beroperasi dengan IP Address yang baru.

Dunia Menurut RFC 1812 – Cara Baru Sebagian dari apa yang anda pelajari di sub bab di atas menjadi obsolete sejak tahun 1995. Dengan RFC 1812, semua menjadi berubah, terutama untuk konsep peng-kelas-an IP address. Walaupun demikian, IP versi 4 saat ini sudah habis, kita sebetulnya akan lebih aman jika menggunakan IP versi 6.

Penggunaan alamat dengan class-based atau classfull dalam IP adalah salah satu sebab mengapa kita dengan cepat kehabisan IP address dan hal ini menjadi perhatian sejak awal 1990. Bayangkan sebuah organisasi yang membutuhkan 1000 IP address. Sebuah kelas C jelas tidak mencukupi, oleh karena itu sebuah kelas B akan di berikan. Tapi kelas B mempunyai alokasi 64.000 address, oleh karena itu 63.000 address terbuang percuma.

Cara lain adalah mengalokasikan organisasi ini empat (4) buah kelas C, seperti 192.168.128.0, 192.168.129.0, 192.168.130.0, dan 192.168.131.0. Dengan menggunakan 22-bit subnetmask 255.255.252.0 (atau “/22”) untuk me-routing “blok” IP tersebut, bagian network / NET_ID dari organisasi ini adalah 192.168.128.0. Dalam contoh ini, informasi routing untuk ke empat kelas C address dapat dilakukan hanya dengan satu entry di table routing.

Perubahan yang paling terasa dengan RFC 1812 adalah konsep Classless Inter-Domain Routing (CIDR). Penggunaan subnetmask yang variable besarnya di kenal sebagai Classless Interdomain Routing (CIDR) di terangkan di RFC 1518 (http://www.ietf.org/rfc/rfc1518.txt) dan RFC 1519 (http://www.ietf.org/rfc/rfc1519.txt).

Dengan CIDR, konsep pemisahan antara “network” dan “subnet” menjadi ketinggalan jaman, dan di ubah dengan skema peng-address-an “classess” sehingga proses “subnet” dapat dilakukan dengan lebih bebas tanpa perlu memperhitungkan “class”. Dengan menghilangkan bagian subnet, dan liberalisasi network prefix / NET_ID, tidak perlu lagi kita melihat apakah bit di subnet nol semua atau tidak. Dengan kata lain, kita tidak lagi kehilangan subnet jika kita ingin memotong sebuah jaringan kelas “C”. Kita juga dapat menggabungkan beberapa jaringan kelas “C” menjadi sebuah jaringan dengan prefix lebih kecil dari 24 bit.

Sebagai contoh, kita dapat menggabungkan yang dulunya jaringan kelas C 192.168.2.0 dan 192.168.3.0 menjadi sebuah subnet dengan total address / host 510, dengan menggunakan netmask 255.255.254.0. Apa yang kita lakukan sebetulnya adalah mengubah bit terakhir dari byte ke tiga menjadi bagian dari “host address”, dan “network prefix / NET_ID” menjadi 23 bit (2 byte dan 7 bit).

Dua jaringan yang di kaitkan harus “nyambung addressnya”, dan byte ke tiga di nomor network harus genap. Konsekuensinya, kita tidak dapat menggabungkan network 192.168.2.0 dengan 192.168.5.0. Kita juga tidak dapat menggabungkan jaringan 192.168.11.0 dan 192.168.12.0. Kita dapat menggunakan aturan yang sama untuk menggabungkan empat kelas C yang “nyambung addressnya”, dengan byte ke tiga dari nomor network yang terendah harus kelipatan empat.

Konsep CIDR dapat di kembangkan lebih lanjut. CIDR merupakan kontribusi yang sangat penting kepada Internet karena dia dapat mereduksi tabel routing Internet dengan sangat drastis. Pada hari ini, IP address tidak di assigned berdasarkan first-come, first-serve, tapi sudah di pre-alokasikan oleh berbagai authoritas penomoran di seluruh dunia. Biasanya authoritas penomoran akan mengalokasikan blok dari IP address ke ISP yang besar (first tier); blok ini di sebut sebagai CIDR blok. Pelanggan ISP, termasuk ISP yang terkait ke first tier ISP akan memperoleh alokasi IP dengan NET_ID yang merupakan sub-bagian dari CIDR blok ISP tersebut.

Effek lain dari RFC 1812 dan CIDR routing terutama di jaringan yang dekat ke backbone, dan kebanyakan usaha dilakukan untuk mengurangi besar, atau berkembangnya, tabel routing di backbone router agar muat di memory mereka. Misalnya ISP onno-net mempunyai alokasi IP address dengan CIDR blok dengan 256 kelas C dengan alokasi 192.168.0.0 s/d 192.168.255.0. Lebar alokasi ini dapat di representasikan dalam sebuah entry di tabel routing 192.168.0.0/16. Dengan cara ini, sebuah paket akan sampai ke ISP onno-net dan akan di routing ke tujuan yang benar.

Mari kita lanjutkan pembahasan & menjadi lebih menarik. Dengan mengecilkan subnetmask, maka sebuah NET_ID sebetulnya dapat mengidentifikasi banyak alamat (dengan tabel routing yang kecil), kita dapat memperlebar subnetmask untuk mengalokasikan alamat IP yang lebih kecil dari kelas C.

Dengan semakin menipisnya kelas C, pengguna dalam tekanan untuk menerima sub-Class C address. Sebuah organisasi yang hanya mempunyai beberapa server, mungkin hanya akan memperoleh alokasi 64 IP address daripada penuh 256 IP address. Standard subnetmask untuk kelas C adalah 24 bit, yang menghasilkan 24 bit NET_ID dan 8 bit HOST_ID. Jika kita menggunakan /26 mask (255.255.255.192) , kita dapat mengalokasikan sebuah kelas C ke empat (4) pengguna yang berbeda, dengan masing-masing memperoleh ¼ dari total kelas C dengan 6 bit HOST_ID. Contoh, IP address 202.172.106.0 dapat dialokasikan sebagai berikut:

Bagian network / NET_ID HOST_ID HOST_ID Valid 202.172.106.0 0-63 1-62 202.172.106.64 64-127 65-126 202.172.106.128 128-191 129-190 202.172.106.192 192-255 193-254

Perhatikan bahwa dalam sebuah kelas C yang biasa, kita biasanya akan kehilangan dua (2) IP address, yaitu 0 dan 255, karena semua alamat NOL dan semua alamat SATU, tidak dialokasikan sebagai HOST_ID. Dalam penggunaan di atas, kita akan kehilangan delapan (8) IP address, karena 0, 64, 128 dan 192 semua NOL HOST_ID, dan 63, 127, 191 dan 255 mempunyai semua SATU HOST_ID. Setiap pelanggan, akan memperoleh 62 IP address yang dapat dialokasikan ke host.

Tekanan pada alokasi kelas C terus bertambah, pada hari ini organisasi harus bisa menjustifikasi mengapa mereka memerlukan banyak address padahal mungkin hanya butuh 3 address saja untuk server mereka. Kalaupun hanya berupa workstation biasa saja, maka IP address yang dibutuhkan dapat di ambil dari segelintir IP address yang digunakan secara bergantian.

Subnetting, Bit By Bit Dalam pengalaman saya memberikan ceramah, intuisi bit ini sangat lemah di banyak anak-anak muda di Indonesia. Saya memasukan keterangan ini untuk menambah intuisi digital ke anak-anak muda Indonesia agar lebih menghayati dunia komputer.

Aritmatika Biner Seperti kita ketahui bahwa komputer merepresentasikan semua angka sebagai “bit”, atau “nol dan satu”. Komputer bekerja dengan group delapan bit (0 atau 1) yang biasa di sebut “byte”. Kebanyakan desktop PC akan memproses bilangan empat (4) byte, atau 32 bit, dalam satu saat. Oleh karena itu prosesor 80386 sampai Pentium IV di kenal sebagai prosesor 32 bit.

Mari kita ingat kembali waktu guru kita di Sekolah Dasar menjelaskan tentang sistem penomoran desimal. Di sebut desimal (asal kata Latin – decima – yang berarti sepuluh bagian), karena menggunakan angka dari nol hingga sembilan. Jika kita membutuhkan angka yang besar maka kita harus menambahkan tambahan digit. Kemudian di kenalkan konsep satuan, puluhan, ratusan, ribuan dsb. Sebagai contoh, 45678 mempunyai

4 Puluhan ribu 5 Ribuan 6 Ratusan 7 Puluhan 8 Satuan

Karena komputer hanya bekerja dengan bilangan biner, dan hanya mempunyai “0” dan “1” untuk bekerja, mereka harus menambahkan digit baru jika mereka melebihi nomor satu. Dalam bilangan desimal, kita mengenal pangkat dari sepuluh, yaitu:

100=1, 101=10, 102=100, 103=1000, dst.

Dalam bilangan biner, kita mengenal pangkat dari dua, yaitu:

20=1 (1 biner), 21=2 (10 biner), 22=4 (100 biner), 23=8 (1000 biner), 24=16 (10000 biner), 25=32 (100000 biner), 26=64 (1000000 biner), 27=128 (10000000 biner), 28=256 (100000000 biner), dst.

Oleh karenanya bilangan 45678 desimal, dalam bilangan biner akan di representasikan sebagai berikut.

32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1 1 0 1 1 0 0 1 0 0 1 1 0 1 1 1 0

Atau dalam bentuk bilangan biner adalah 1011001001101110 yang merupakan jumlah dari 32768 plus 8192 plus 4096 plus 512 plus 64 plus 32 plus 8 plus 4 plus 2 sama dengan 45678.

Menghitung sampai dua puluh dalam biner adalah sebagai berikut

Decimal Binary Decimal Binary 1 1 11 1011 2 10 12 1100 3 11 13 1101 4 100 14 1110 5 101 15 1111 6 110 16 10000 7 111 17 10001 8 1000 18 10010 9 1001 19 10011 10 1010 20 10100 IP address versi 4 adalah empat (4) byte, masing-masing delapan (8) bit, di representasikan dengan angka desimal dengan titik diantaranya. Contoh: 10.5.72.230 di representasikan dalam angka biner 32-bit sebagai

00001010.00000101.01001000.11100110.

Bayangkan, 232 adalah 4294967296 IP addrress versi 4, atau lebih sedikit dari empat milyar alamat yang tersedia untuk digunakan di dunia. Sepertinya lebih dari cukup?

Gambar 32: Jumlah IP address versi 4 yang ada di IANA & RIR di Internet

Untuk lebih jelasnya pada gambar di atas di perlihatkan jumlah IP address versi 4 yang ada di IANA & RIR. Saat ini di tahun 2017, sebetulnya praktis sudah tidak ada IPv4 yang tersisa. Yang ada hanyalah reklamasi IP address versi 4 yang tidak digunakan agar bisa terpakai. Konsekuensinya sebetulnya cukup mengerikan, yaitu,

• Kita akan kesulitan untuk menambahkan server baru ke Internet, karena setiap server harus di beri IP statik. • Kita akan kesulitan untuk menambahkan router baru ke Internet, akibatnya akan sulit untuk mengembangkan Internet menjadi lebih besar lagi.

Jika kita (Indonesia), tidak ingin menderita di kemudian hari, maka sebetulnya kita harus mulai mengadopsi IP address versi 6 dalam jaringan Internet yang ada di Indonesia. Tapi mengapa kita akan kekurangan IP address? Ternyata masalah utama-nya adalah untuk mengetahui dimana lokasi empat milyar host cukup mustahil dengan menggunakan peralatan yang ada pada hari ini.

Teknik routing yang digunakan terlalu sederhana, dengan membagi IP address menjadi “class”. Dengan IP address yang byte pertama antara 1-126 termasuk kelas A dengan 16,777,214 (224-2) host. Kelas A mempunyai 8 bit bagian network (NET_ID), dan 24 bit bagian host (HOST_ID). IP address dengna byte pertama 128-191 termasuk kelas B dengan 65,534 (216-2) host, dan ada 16,384 network kelas B (dari (192-128)*256). Dengna 16 bit bagian network (NET_ID), dan 16 bit bagian host (HOST_ID). Network kelas C, mempunyai byte pertama antara 192-223, dengan 24 bit bagian network (NET_ID), dan 8 bit bagian host (HOST_ID). Semua dapat secara sederhana di tuliskan sebagai berikut:

Network Kelas Network Mask Network Mask (biner) bit A 8 255.0.0.0 11111111.00000000.00000000.00000000 B 16 255.255.0.0 11111111.11111111.00000000.00000000 C 24 255.255.255.0 11111111.11111111.11111111.00000000

Tentunya tidak ada satu orang network administrator-pun di dunia yang bersedia meng-admin-i 16,777,214 dalam sebuah segmen jaringan. Network admin biasanya akan memotong jaringan mereka dengan melakukan subnetting. Ujungnya adalah di alokasi multiple kelas C untuk memenuhi kebutuhan sebuah jaringan.

Logika Boolean dan Operasi Biner “AND” Boolean di ambil dari nama seorang matematikawan abad ke sembilan belas George Boole http://en.wikipedia.org/wiki/George_Boole. Logika boolean membentuk sebuah teknik aljabar yang hanya mempunyai nilai BETUL (1) atau SALAH (0). Semua operasi matematika yang dilakukan oleh komputer menggunakan aljabar boole ini. Ada beberapa operasi dasar, yaitu:

Operasi Hasil Contoh 1 AND 1 = 1 1 AND 0 = 0 AND Benar jika A AND B adalah benar 0 AND 1 = 0 0 AND 0 = 0 1 OR 1 = 1 1 OR 0 = 1 OR Benar jika A OR B adalah benar 0 OR 1 = 1 0 OR 0 = 0 1 XOR 1 = 0 1 XOR 0 = 1 XOR (eXclusive Or) Benar jika salah satu A atau B adalah benar 0 XOR 1 = 1 0 XOR 0 = 0 NOT 1 = 0 NOT Kebalikan dari A NOT 0 = 1

Operasi “AND” sangat sering digunakan di operasi jaringan terutama jika kita ingin melihat hanya bit tertentu dari byte yang ada – prosedur ini biasa di sebut “masking”. Teknik masking sebetulnya sering digunakan oleh guru yang memberikan ujian pilihan berganda yang jawabannya dapat langsung di periksa dengan mudah dengan meletakan kertas “mask” yang sudah di bolong-bolongi. Teknik masking ini digunakan di komputer untuk menentukan bagian network (NET_ID), dan bagian host (HOST_ID) dari sebuah IP address.

Subnet “Mask” Subnet mask digunakan untuk mengetahui dari sebuah IP address mana yang merepresentasikan jaringan tempat networ kita berada (NET_ID), dan mana yang merupakan komputer ID yang unik (HOST_ID).

Alasan mengapa digunakan kata “mask”, karena sebetulnya proses netmask adalah “menutup” (atau “masking”) bagian yang kita tidak perlu.

Analogi sederhananya dapat kita lihat pada nomor telepon, misalnya, 021 420-4565. 021 merepresentasikan kode area Jakarta, sedang 420-4565 merepresentasikan nomor telepon yang bersangkutan.

Subnet mask memungkinkan kita untuk menspesifikasikan berapa panjang / berapa angka kode area (bagian network / NET_ID) yang akan kita gunakan. Sisanya adalah nomor telepon dari pelanggan (HOST_ID).

Jadi, pada dasarnya proses subnetmask akan membantu proses keputusan routing yang pertama kali yang akan dilakukan oleh PC kita, apakah perlu paket tersebut dikirim ke router atau tidak. Hanya keputusan tersebut yang dibutuhkan dalam subnetmask. Ada empat langkah yang harus dilakukan, yaitu:

1. Konversikan IP address ke bilangan biner. IP address yang berupa empat bilangan dotted- desimal di konversikan ke bilangan biner 32 bit. Memang menyebalkan, baik bagi manusia maupun komputer. Tapi komputer biasanya tidak akan komplain. 2. Lakukan operasi AND menggunakan source subnetmask terhadap source IP address. Kita dapat menentukan bagian network (NET_ID) dari host IP address, karena bagian host (HOST_ID) menjadi nol semua. 3. Lakukan operasi AND menggunakan source subnetmask terhadap destination IP address. Kita memang tidak mengetahui subnetmask dari destination IP address, oleh karenanya kita menggunakan subnetmask dari source untuk melakukan masking. Kita akan memperoleh “bagian network” (NET_ID) dari destination IP address berdasarkan source subnetmask. 4. Bandingkan bagian network (NET_ID) dari source IP address dan destination IP address. Jika sama, maka ke dua mesin yang akan berhubungan berada di jaringan / network yang sama dan paket akan dikirim langsung ke host tujuan melalui jaringan LAN. Jika berbeda, dan kemungkinan besar host tidak tahu dimana lokasi mesin yang dituju, maka paket akan di kirim ke router / default gateway, dengan harapan router / gateway mengetahui kemana paket harus dikirim.

Mari kita lihat contoh berikut, yang berusaha menggabungkan empat network kelas C menjadi satu kesatuan. Ingat-ingat aritmatika biner:

Network Network, dalam Biner 192.168.8.0 11000000.10101000.00001000.00000000 192.168.9.0 11000000.10101000.00001001.00000000 192.168.10.0 11000000.10101000.00001010.00000000 192.168.11.0 11000000.10101000.00001011.00000000 Mask, 255.255.252.0 11111111.11111111.11111100.00000000 Perhatikan baik-baik bahwa semua bit diatas subnetmask yang telah di highlight abu-abu semua mempunyai nilai adalah sama, yaitu,

11000000.10101000.000010

Oleh karena itu, ke empat network kelas C ini dapat menjadi satu kesatuan dengan netmask 255.255.252.0. Teknik ini di kenal dengan nama “CIDR Routing”.

Selanjutnya mari kita lihat contoh penggabungan empat network kelas C yang salah.

Network Network, dalam Biner 192.168.10.0 11000000.10101000.00001010.00000000 192.168.11.0 11000000.10101000.00001011.00000000 192.168.12.0 11000000.10101000.00001100.00000000 192.168.13.0 11000000.10101000.00001101.00000000 Mask, 255.255.252.0 11111111.11111111.11111100.00000000

Perhatikan pada bit ke 22 untuk 192.168.10.0 dan 192.168.11.0 mempunyai nilai 0, sedang untuk 192.168.12.0 dan 192.168.13.0 mempunyai nilai 1. Ada bit di bagian network (NET_ID) yang tidak sama di IP address tersebut. Oleh karena itu, 192.168.10.0 s/d 192.168.13.0 tidak dapat di gabungkan menjadi satu kesatuan.

Notasi “Slash” Subnet mask kadang di berikan menggunakan notasi slash “/” dan jumlah bit “satu” yang ada di netmask. Contoh, sebuah network 192.168.1.0 dengan subnetmask 255.255.255.0 dapat di tulis sebagai 192.168.1.0/24 karena 255.255.255.0 mempunyai 24 buah bit satu yang di ikuti oleh delapan (8) bit nol.

Alternatif subnetmask sebetulnya tidak banyak karena bentuk / konfigurasi subnetmask sangat standard dengan SATU di awal dan NOL di akhir. Untuk memudahkan para praktisi di lapangan, terlampir adalag tabel berisi daftar subnetmask yang sering digunakan:

11111111.11111111.11111111.11111100 /30 255.255.255.252 11111111.11111111.11111111.11111000 /29 255.255.255.248 11111111.11111111.11111111.11110000 /28 255.255.255.240 11111111.11111111.11111111.11100000 /27 255.255.255.224 11111111.11111111.11111111.11000000 /26 255.255.255.192 11111111.11111111.11111111.10000000 /25 255.255.255.128 11111111.11111111.11111111.00000000 /24 255.255.255.0 11111111.11111111.11111110.00000000 /23 255.255.254.0 11111111.11111111.11111100.00000000 /22 255.255.252.0

Tabel berikut memperlihatkan, notasi slash, netmask, jumlah host yang lebih lengkap.

Slash Netmask Jumlah host /8 255.0.0.0 16,777,215 Dulu di sebut kelas A /16 255.255.0.0 65,535 Dulu di sebut kelas B /17 255.255.128.0 32,767 /18 255.255.192.0 16,383 /19 255.255.224.0 8,191 /20 255.255.240.0 4,095 /21 255.255.248.0 2,047 /22 255.255.252.0 1,023 /23 255.255.254.0 511 /24 255.255.255.0 255 Dulu di sebut kelas C /25 255.255.255.128 127 /26 255.255.255.192 63 /27 255.255.255.224 31 /28 255.255.255.240 15 /29 255.255.255.248 7 /30 255.255.255.252 3

Perhatikan bahwa tidak mungkin ada subnet diluar angka keramat 255, 254, 252, 248, 240, 224, 192, 128, dan 0. Jadi tidak mungkin ada netmask 255.255.64.0

Trik Menghitung Subnet Semoga anda semua sekarang memahami filosofi aritmatika biner di balik perhitungan subnetmask. Pada bagian ini, akan di terangkan beberapa trik perhitungan subnet.

Untuk menyederhanakan masalah, ada baiknya kita fokus pada subnet mask yang dimulai dengan “255.255.255”, yang sebetulnya cukup untuk sebuah jaringan yang kecil.

Hanya ada tujuh (7) nilai yang mungkin di oktet terakhir dari subnet mask, yaitu, 0, 192, 128, 224, 240, 248, dan 252.

Jumlah IP address dapat diketahui dengan mudah dengan mengurangkan nilai subnet mask oktet terakhir dari 256. Contoh subnetmask 255.255.255.224 mempunyai 32 host (dari 256-224=32).

Kita juga dapat menentukan ada berapa subnet yang akan di peroleh dari subnetmask tertentu dengan cara membagai 256 dengan jumlah host yang ada di subnet. Contoh subnetmask 255.255.255.224 yang mempunyai 32 host, maka jumlah subnet yang akan di peroleh dari sebuah network kelas C adalah 8 buah (dari 256/32=8).Tentunya, ini semua hanya berlaku jika angka-nya adalah kelipatan dua, seperti, 1, 2, 4, 8, 16, 32, 64, atau 128.

Jika bagian network / network prefix / NET_ID lebih besar dari kelas C. Kita dapat mengetahui berapa banyak network kelas C yang ada, dengan cara mengurangkan byte ke tiga dari subnetmask dengan 256.Contoh subnetmask 255.255.240.0 merupakan kumpulan dari 16 network kelas C (dari 256-240=16).

Trik Mengetahui Range Address di Jaringan Jika seseorang memberikan alokasi IP address 97.158.253.28 dengan subnet mask 255.255.255.248, bagaimana kita menentukan network address, broadcast address, atau batas dari address jaringan kita? Berikut adalah langkah yang dapat dilakukan,

Teknik perhitungan secara manual:

1. Kurangkan oktet terakhir dari subnetmask dari 256 untuk memberikan jumlah IP address yang ada di subnet. (256 - 248) = 8 2. Bagi oktet terakhir dari IP address dengan hasil dari langkah 1 dan buang sisanya (28/8 = 3). Secara teoritis, ini akan memberikan kita jumlah subnet di bawah IP address kita yang sama besarnya dengan subnet yang kita miliki. 3. Kalikan hasil langkah 2 ini dengan hasil langkah 1, untuk memperoleh network address (8 x 3 = 24). Bayangkan sebagai “Ini adalah subnet ke tiga dengan delapan (8) address di dalamnya”. Network address juga langsung dapat diketahui sebagai 97.158.253.24. 4. Broadcast address dapat diperoleh dari hasil langkah 3 di tambah hasil langkah 1 di kurangi 1. (24 + 8 -1 = 31). Bayangkah “Broadcast address adalah network address di tambah jumlah IP address di subnet di kurangi satu (1)”. Broadcast address menjadi 97.158.253.31.

Mari kita lakukan ini untuk 192.168.3.56 dengan netmask 255.255.255.224

1. 256 - 224 = 32 2. 56 / 32 = 1 3. 32 x 1 = 32. Maka, network base address adalah 192.168.3.32 4. 32 + 32 - 1 = 63. Maka, broadcast address adalah 192.168.3.63

Mari kita lakukan ini untuk 10.0.0.75 dengan netmask 255.255.255.240

1. 256 - 240 = 16 2. 75 / 16 = 4 3. 16 x 4 = 64. Maka, network base address adalah 10.0.0.64 4. 64 + 16 -1 = 79. Maka, broadcast address adalah 10.0.0.79

Sebagai catatan tambahan: • Oktet terakhir dari network base address harus dapat dibagi oleh “256 dikurangi oktet terakhir dari subnet” dan tidak boleh ada sisa. • Jika kita harus melakukan subnetting untuk sebuah kelas IP address yang besar, ada baiknya menggunakan spread sheet agat tidak terjadi overlapping subnet. • Perhitungan di atas hanya untuk subnetmask yang di mulai dengan “255.255.255”.

Bagi anda yang masih tetap pusing dengan penjelasan di atas, dapat menggunakan Google dengan menggunakan keyword “subnet mask calculator cidr”.

Penghematan IP address NAT dan PAT Sekumpulan IP address dapat di share untuk banyak mesin menggunakan mekanisme yang di sebut Network Address Translation (NAT). NAT, diterangkan di RFC 1631 (http://www.ietf.org/rfc/rfc1631.txt). Hari ini, umumnya di implementasi NAT dilakukan di proxy server, host maupun router. Untuk jaringan yang besar yang terhubung ke Internet lebih di sarankan untuk menggunakan IP versi 6 daripada menggunakan NAT, karena akan menghabiskan sumber daya RAM yang ada di router.

Keuntungan sisi sambungan global NAT & IP private, • Dapat dikenali dengan IP address global yang unik di dalam dan di luar organisasi / corporate. • Host di dalam sebuah organisasi dapat mempunyai akses langsung ke host internal dan host Internet.

Keuntungan sisi sambungan private, • Host di dalam organisasi mempunyai akses direct ke host dalam host internal saja, tidak ke host di Internet. Contoh, mesin ATM, cash register dll. • Proxy gateway dibutuhkan untuk mengakses host di Internet. Corporate / IntraNet bertanggung jawab agar routing yang ada di filter agar IP private tidak bocor ke Internet. • Keuntungannya, membutuhkan lebih sedikit IP global dan aman bagi host di dalam jaringan private / IntraNet. • Kekurangannya, perlu penomoran semua host jika di kemudian hari ingin agar semua host tersambung ke Internet. Masalah ini dapat dengan mudah di selesaikan dengan teknik Dynamic Host Configuration Protocol (DHCP).

Cara ini berjalan dengan baik karena NAT akan berfungsi sebagai server DHCP untuk jaringan IntraNet dan mengalokasikan IP address private sesuai RFC 1918 (http://www.isi.edu/in- notes/rfc1918.txt). Alokasi IP private mempunyai NET_ID sebagai berikut,

• Satu (1) kelas A 10.0.0.0 (dulu dialokasikan untuk ARPANET) • Enam belas (16) kelas B 172.16.0.0 s/d 172.31.0.0. • 256 Kelas C 192.168.0.0 – 192.168.255.0.

Gambar 33: Skenario NAT

Bayangkan sebuah skenario, dimana pengguna yang jumlah-nya banyak mengakses Web di Internet. NAT Server akan mentranslasikan IP address private dari host (192.168.0.30) ke publik IP 202.159.128.123 yang di peroleh dari ISP. Perhatikan dalam paket yang dikirim Source IP address berubah dari 192.168.0.30 di IntraNet, menjadi 202.159.128.123 di jaringan Internet. Dalam konsep NAT yang sebenarnya, jumlah mesin yang dapat mengakses ke Internet adalah sejumlah IP address publik yang di NAT-kan.

Konsep NAT dapat dikembangkan lebih jauh dengan melakukan Port Address Translation (PAT) atau Network Adrdess Port Translation (NAPT), konsep ini memungkinkan satu (1) / sebuah IP address publik digunakan bersama-sama oleh banyak mesin klien jaringan LAN yang berada di balik server NAPT. Sayangnya, kebanyakan operator sudah salah kaprah, karena konsep NAT & NAPT disamakan saja. Jadi sering yang dimaksud administrator sebagai NAT adalah NAPT.

Nomor port digunakan oleh protokol lapisan yang lebih tinggi (seperti TCP dan UDP) untuk mengidentifikasi aplikasi di lapisan aplikasi. Sebuah sambungan TCP biasanya dapat di identifikasi secara unik dari empat nilai, yaitu, IP address source, port source, IP address tujuan, port tujuan. Port server biasanya standard, dan umumnya mempunyai nilai kurang dari 1024. Sedang klien mempunyai nilai bebas yang lebih besar dari 1023. Gambar 34: Operasi NAT dengan beberapa Client

Klien yang mengakses Internet dapat saja beberapa buah. Server yang diakses di Internet-pun dapat berapa buah sekaligus, misalnya:

• Klien dengan private IP address 192.168.0.30 port 130003 ingin berhubungan dengan Web server di 202.153.10.2 port 80. • Klien dengan private IP 192.168.0.45 port 22546 ingin berhubungan dengan Web server di 203.153.10.2 port 80. • Klien dengan private IP 192.168.0.77 port 7865 ingin upload file menggunakan FTP ke 202.44.67.45 port 21.

Dengan menggunakan mekanisme PAT, maka router yang menjalankan PAT software akan mengganti source IP address dengan IP address publik yang ada di router tsb, misalnya, 202.159.128.123. Untuk membedakan ke tiga paket yang ditujukan ke klien yang berbeda, dilakukan dengan cara membedakan nomor port asalnya saja. Secara sederhana proses mapping / pemetaan IP address:Port secara sederhana di rekam dalam tabel di software NAPT yang di operasikan di router.

NAT/PAT Tabel Destination IP:Port Public IP:Port Private Source IP:Port 202.153.10.2:80 202.159.128.123:4022 192.168.0.30:13003 202.153.10.2:80 202.159.128.123:4560 192.168.0.45:22546 202.44.67.45:21 202.159.128.123:5876 192.168.0.77:7865

Baik NAT maupun PAT dapat beroperasi dengan baik, teknik ini membutuhkan agar setiap paket harus di buffered (ditahan), di diassembling dan diberikan IP address baru, dihitung ulang cek sum- nya, untuk kemudian di reassembling dan di kirim kembali. Khususnya untuk PAT, nomor port yang baru dipasang untuk menggantikan nomor port paket yang orisinil ceksum yang baru dihitung untuk lapisan protokol di atas. Oleh karenanya NAT, terutama PAT, akan menyebabkan turunnya performance jaringan jika dilakukan di mesin yang kecil. Salah satu keuntungan NAT adalah membuat IP renumbering menjadi tidak masalah. Jika pelanggan mempunyai IP NET_ID yang memperoleh CIDR blok dari ISP-nya, jika mereka berpindah ISP dan mengubah CIDR bloknya. Maka dengan menggunakan NAT, hanya server yang perlu di renumber sedang komputer lainnya tidak perlu di renumber.

Teknik implementasi NAPT di Linux sangat mudah dan dapat dilakukan melalui satu perintah saja. Jika IP publik di peroleh secara dinamik dari ISP, maka perintah mengaktifkan NAPT adalah dengan cara menggunakan MASQUERADE (atau masker dalam bahasa Indonesia) sebagai berikut,

# /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Jika IP publik yang kita gunakan adalah statik, misalnya 202.159.128.123, maka perintah mengkatifkan NAPT adalah sebagai berikut

# /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to 202.159.128.123

Alokasi IP Addess Secara Dinamis Salah satu cara untuk mengatasi masalah renumbering adalah dengan cara mengalokasikan IP address secara dinamis ke mesin klien yang ada di jaringan. Hal ini dapat dilakukan menggunakan Dynamic Host Configuration Protocol (DHCP). DHCP merupakan solusi yang sangat baik untuk lingkungan yang penggunanya sangat mobile, dengan cara ini orang tidak perlu mengkonfigurasi ulang mesin / PC mereka karena proses alokasi IP address dilakukan secara automatis. Intro ke konsep DHCP dapat dibaca di RFC 2131 (http://www.ietf.org/rfc/rfc2131.txt).

DHCP, di definisikan di RFC 2131 (http://www.ietf.org/rfc/rfc2131.txt), adalah sebuah protocol yang masuk ke track standard Internet yang memungkinkan sebuah server di jaringan TCP/IP untuk memberikan informasi konfigurasi kepada client, termasuk default gateway (router), DNS, WINS, cookie, dan atau alamat time server, domain name, dan subnet mask. DHCP juga mendefinisikan mekanisme untuk mengalokasikan IP address untuk mesin di jaringan. Salah satu keuntungan dari DHCP adalah secara hardware & software platform independent. Software server DHCP tersedia di sebagian besar sistem operasi, dan sebagian besar TCP/IP software di client mendukung DHCP.

Yang menarik, semua DHCP client dapat berkomunikasi dengan DHCP server versi manapun. DHCP mendukung tiga (3) mekanisme yang berbeda dalam mengalokasikan IP address, yaitu:

• Automatic allocation: Server memberikan IP address permanen kepada client. • Dynamic allocation: Server memberikan IP address kepada client untuk perioda terbatas (biasanya di sebut lease / waktu sewa) atau sampai client melepaskan IP address tersebut secara explisit. • Manual allocation: Server memberikan IP address ke client yang telah di set secara spesifik oleh network administrator.

Berdasarkan kebijakan dari network administrator, server DHCP di jaringan dapat menggunakan satu atau lebih dari mekanisme di atas. Dynamic allocation, adalah satu-satunya mekanisme yang mendukung penggunaan secara automatis IP address yang tidak digunakan lagi. Hal ini yang menyebabkan DHCP merupakan tool / alat yang sangat berguna bagi client yang hanya terhubung sementara ke jaringan.

Contoh pengguna DHCP adalah Internet Service Provider (ISP) yang mempunyai banyak pengguna dial-up. ISP akan mengalokasikan IP address sementara kepada pengguna dial-up selama mereka tersambung saja. Contoh lain penggunaan DHCP adalah di penyelenggara hotspot-hotspot wireless di hotel / di restoran yang mengalokasikan IP address sementara selama pengguna tersambung ke Access Point wireless.

Mekanisme pemberikan IP address sementara ini sangat dibutuhkan, karena kenyataan hidup dari puluhan ribu pelanggan ISP / hotspot, penyelenggara hanya memiliki ratusan IP address yang dapat dialokasikan kepada pengguna. Oleh karena itu, IP address dialokasikan secara dinamis, dan di berikan ke pengguna lain jika sudah tidak digunakan lagi. Di samping itu, DHCP juga menjaga agar sebuah mesin memperoleh lebih dari satu IP address pada saat yang sama.

Di kantor-kantor, kadang kala kita harus mengalokasikan beberapa IP address yang fix untuk server. Jadi tidak semua alokasi IP address yang kita miliki dapat dialokasikan secara dinamis, beberapa IP address statis di alokasikan untuk router / server. Mengubah parameter jaringan bagi client pun tidak sukar, hal ini dapat dengan mudah dilakukan dengan mengubah parameter DHCP server. Jadi kapan DHCP digunakan? Terutama jika anda mempunyai:

• Banyak pengguna dial-up. • Banyak pengguna HotSpot / LAN. • Pengguna yang mobile / bergerak dari satu jaringan ke jaringan yang lain. Misalnya menggunakan laptop / netbook / tablet / android. • Jaringan yang besar, sehingga memanaged IP address untuk setiap desktop akan sulit & tidak praktis. • Pengguna lebih banyak daripada alokasi IP address yang ada. • Jaringan yang sering di ubah konfigurasinya.

DHCP bukan solusi yang baik bagi:

• Router, server, printer atau sistem lainnya yang membutuhkan IP address statis. • Jaringan yang memiliki banyak IP address. • Jaringan dimana IP address-nya tidak sering berubah.

Cara Beroperasi DHCP DHCP menggunakan protokol yang relatif sederhana. Sebuah mesin yang mendukung DHCP, akan berfungsi sebagai DHCP client jika IP address di set menjadi 0.0.0.0. Sistem operasi seperti Unix, Linux, OS/2, dan Windows semua mendukung DHCP client di kernel TCP/IP-nya. Secara umum, jika kita menset konfigurasi jaringan menggunakan automatis, maka DHCP akan digunakan untuk memperoleh IP address. Konfigurasi jaringan automatis adalah konfigurasi default di sistem operasi Linux & Windows. Gambar 35: Fase kerja DHCP

Pada dasarnya ada empat fase operasi dasar DHCP. Seperti aplikasi TCP/IP lainnya, DHCP menggunakan model client-server dan client yang mengawali aktifitas. Walaupun tidak di perlihatkan di gambar, semua message DHCP dikirim menggunakan datagram (UDP); message dari client ke server akan dikirim menggunakan UDP port 67 di server, sedang message dari server ke client akan dikirim ke UDP port 68 di client.

Fase inisialisasi terjadi pada saat client mengirimkan permintaan IP address:

• Client mengirimkan message DHCPDISCOVER di jaringan IP subnet lokal untuk mencari DHCP server. Tentunya client tidak mengetahui IP address server DHCP, oleh karena itu, client menggunakan IP broadcast untuk mengirimkan message. • Semua DHCP server yang ada di jaringan akan mengirimkan message DHCPOFFER. • Jika ada lebih dari satu server, client perlu memilih server mana yang akan digunakan. Biasanya server pertama yang akan dipilih. Terlepas dari banyaknya server yang meresponds, client akan membroadcast DHCPREQUEST memberitahukan server mana yang akan digunakan, dan secara implisit memberitahukan server yang lain bahwa mereka tidak akan digunakan. • Server yang terpilih akan meresponds dengan DHCPACK dengan IP address yang diberikan, termasuk berbagai parameter jaringan lainnya, seperti waktu / lama-nya waktu lease. DHCP client akan menjalan dua buah timer, T1 (timer renewal address) dan T2 (timer server binding). Nilai default T1 adalah 50% dari perioda lease, sedang T2 adalah 87.5% dari perioda lease. Nilai kedua timer tersebut akan berubah jika mesin memperoleh IP address, tapi nilai T1 selalu lebih kecil dari T2.

Jika timer T1 waktu-nya habis, maka client akan masuk ke fase Renewal dan mencoba untuk me- renew IP address-nya:

• Client akan mengirimkan DHCPREQUEST ke server yang memberikan IP address sebelumnya. • Server akan menjawab DHCPACK dan memberikan waktu lease yang baru. • Selama server renew IP address lease dalam perioda T1, maka T2 tidak akan pernah habis (expire).

Jika T2 waktunya habis, maka client akan masuk ke fase Rebind dan akan berusaha mencari server lain yang akan memberikan IP address:

• Client akan membroadcast DHCPREQUEST untuk mencari DHCP server yang akan memberikan lease IP address yang baru. • Server DHCP manapun yang dapat memberikan lease dari IP address akan memberikan DHCPACK dan memberikan perioda lease yang baru.

Pada suatu waktu, client siap untuk melepaskan IP address-nya dan melepaskan sambungan dari jaringan. Jika client mendukung hal ini, maka client akan mengirimkan DHCPRELEASE ke server, dan melepaskan IP addressnya ke server untuk digunakan oleh yang lain.

Demikianlah gambaran secara umum operasional dari DHCP. Perlu dicatat bahwa DHCP adalah protocol yang tidak aman. Pengguna di jaringan sebetulnya dapat dengan mudah membangun sendiri DHCP server-nya dan akan mengganggu operasional jaringan.

Membangun DHCP Server di Linux Membangun DHCP server di Linux relatif sederhana karena sebagian besar tool yang dibutuhkan telah tersedia. Instalasi DHCP Server di Ubuntu, terutama Ubuntu yang baru 16.04 ke atas, adalah sebagai berikut

sudo apt-get install isc-dhcp-server

Beberapa parameter penting yang perlu di konfigurasi di sebuah DHCP server adalah

• Start Address dan End Address: Dibutuhkan untuk mengatur IP address yang akan dialokasikan ke client dari server. • Subnet Mask: Dibutuhkan untuk menentukan subnet mask yang akan digunakan oleh semua client. • Routers: Menentukan gateway / router dari jaringan untuk menghubungkan diri ke jaringan LAN lain / Internet. • Domain Name Server: Menentukan Domain Name Server bagi komputer di jaringan LAN. • Lease Time: Menentukan lama waktyu leased dari masing-masing client dalam detik.

Kita perlu memberitahukan interface yang digunakan dengan mengedit file default isc-dhcp- server /etc/default/isc-dhcp-server , misalnya interface yang digunakan adalah enp0s3, maka, #Defaults for dhcp initscript #sourced by /etc/init.d/dhcp #installed at /etc/default/isc-dhcp-server by the maintainer scripts # #This is a POSIX shell fragment # #On what interfaces should the DHCP server (dhcpd) serve DHCP requests? #Separate multiple interfaces with spaces, e.g. “enp0s3 enp0s8″. INTERFACES="enp0s3"

Di Ubuntu 16.04, file konfigurasi DHCP Server terdapat di

/etc/dhcp/dhcpd.conf

Contoh isi dari sebuah DHCP server di jaringan LAN dengan subnet 192.168.0.0, netmask 255.255.255.0 yang mempunyai router 192.168.0.10, dan mengalokasikan IP address client antara 192.168.0.81 s/d 192.168.0.90, adalah sebagai berikut:

ddns-update-style none; option domain-name-servers 202.46.3.178,202.155.38.227; option domain-name "contoh.co.id"; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 { range 10.0.0.150 10.0.0.253; option routers 192.168.0.10; option subnet-mask 255.255.255.0; option broadcast-address 10.0.0.254; option domain-name-servers 202.46.3.178,202.155.38.227; range dynamic-bootp 192.168.0.81 192.168.0.90; option ntp-servers 192.168.0.10; option netbios-name-servers 192.168.0.10; option netbios-node-type 8; }

Pada saat kita memilih alokasi IP address yang akan diberikan pada client, IP address statis dari router / gatewat, DHCP server, Web server, FTP server, e-mail server, DNS server dan berbagai server lainnya yang secara statis di gunakan, tidak dapat lagi digunakan untuk alokasi IP addess DHCP.

Mungkin yang agak sukar adalah menentukan lama lease yang paling optimal. Semakin pendek lease, maka semakin banyak traffic di jaringan untuk renewal dari IP address client. Semakin panjang lease, maka akan menjadi masalah jika client tidak melepaskan IP address padahal client tersebut sudah mati / shutdown. Pengalaman saya, nilai default yang diberikan oleh Linux seperti tertera pada contoh cukup baik untuk digunakan dan tidak membawa banyak masalah.

Setelah DHCP server di konfigurasi kita perlu me-restart server DHCP menggunakan perintah

sudo service isc-dhcp-server restart

Untuk mengetahui apakah DHCP server berjalan dengan baik dapat menggunakan perintah

sudo netstat -uap Daftar lengkap dari DHCP option yang di dokumentasikan Internet Engineering Task Force (IETF) dapat di ambil di http://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp- parameters.xml.

Referensi • http://lms.onnocenter.or.id/wiki/index.php/Ip_address • http://en.wikipedia.org/wiki/IP_address • http://tools.ietf.org/html/rfc760 • http://tools.ietf.org/html/rfc791 • http://tools.ietf.org/html/rfc1883 • http://tools.ietf.org/html/rfc2460 • http://computer.howstuffworks.com/internet/basics/question549.htm • http://en.wikipedia.org/wiki/DHCP • http://lms.onnocenter.or.id/wiki/index.php/Instalasi_DHCP_Server BAB 8: Internet Layer (IPv6)

Internet Protocol version 6 (IPv6) adalah revisi terakhir dari Internet Protocol (IP), protokol komunikasi yang memberikan identifikasi dan lokasi system untuk komputer di jaringan dan menyalurkan traffic melalui Internet. IPv6 di kembangkan oleh Internet Engineering Task Force (IETF) untuk mengatasi IPv4 address yang akan habis.

IPv6 di buat untuk mengganti IPv4, yang masih digunakan oleh sebagian besar traffic di Internet sampai 2015. Untuk pertama kalinya, pada bulan September 2013, persentase pengguna yang mencapai Google melalui IPv6 melebihi 2%.

Semua peralatan di Internet harus memperoleh alokasi IP address agar dapat berkomunikasi dengan alat lainnya. Dengan banyaknya alat baru yang tersambung ke Internet, kebutuhan ini naik dengan drastis di atas keberadaan IPv4 address yang ada. IPv6 menggunakan 128 bit, memungkinkan 2^128, atau 3.4 x 10^38 address, atau lebih dari 7.9 x 10^28 kali IPv4, yang hanya menggunakan address 32 bit. IPv4 hanya memungkinkan 4.3 milyard address. Karena ke dua protokol ini tidak di rancang untuk saling interoperasi, ini mengakibatkan kesulitan proses transisi Ipv6.

Materi tentang IPv6 yang akan di bahas dalam buku ini akan sangat terbatas, karena terbatasan jumlah halaman. Sangat di sarankan bagi anda yang ingin mendalami lebih lanjut tentang IPv6 agar membaca buku “IPv6: Fondasi Internet Masa Depan” yang di terbitkan oleh Andi Offset di Jogjakarta, bisa di beli di http://andipublisher.com/produk-0516006085-ipv6-fondasi-internet-masa- depan.html Apakah IPv6? IPv6 adalah protokol lapisan 3 yang baru yang dirancang untuk menggantikan IPv4 (yang juga dikenal sebagai IP). IPv4 dirancang pada masa lalu (RFC 760 / Internet Protocol dari January 1980) dan sejak di perkenalkannya, sudah banyak sekali permohonan untuk address yang lebih banyak maupun perbaikan kemampuan. Terakhir RFC 2460 / Internet Protocol Version 6 Specification.

Perubahan utama di IPv6 adalah disain ulang dari header, termasuk peningkatan jumlah address dari 32 bit menjadi 128 bit. Karena lapisan ke 3 bertanggung jawab untuk transport paket end-to-end menggunakan routing paket berbasis pada address, dia harus memasukan IPv6 address yang baru (source dan destination), seperti Ipv4.

Untuk informasi lebih lanjut tentang sejarah IPv6 ada baiknya melihat RFC lama terkait IPv6, seperti SWITCH IPv6 Pilot / References. Penampakan IPv6 Seperti di jelaskan sebelumnya, IPv6 address panjangnya 128 bit. Jumlah bit tersebut jika di konversikan dalam desimal sangat panjang sampai 39 digit:

2^128-1: 340282366920938463463374607431768211455

Nomor sepanjang itu bukan address yang dapat di ingat dengan mudah. Di samping itu, IPv6 address berorientasi bit, juga seperti IPv4 hanya saja banyak yang tidak menyadarinya. Oleh karenanya, notasi yang lebih mudah adalah hexadesimal. Dalam hexadesimal, 4 bit (yang juga dikenal sebagai "nibble") di representasikan dalam digit atau karakter 0-9 dan a-f (10-15). Format ini menyebabkan panjang dari IPv6 address menjadi 32 karakter. 2^128-1: 0xffffffffffffffffffffffffffffffff

Representasi di atas masih belum enak, oleh karenanya para perancang IPv6 memilih format hexadesimal dengan titik dua (:) sebagai pemisah antar blok dari 16 bit. Selain itu, "0x" (yang menandakan dia adalah hexadesimal yang biasanya digunakan dalam programming) di buang, hasilnya adalah:

2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Contoh address yang digunakan(tergantung tipe-nya), adalah:

2001:0db8:0100:f101:0210:a4ff:fee3:9566

Untuk lebih menyederhanakan, awalan "NOL" dari setiap 16 blok dapat dibuang:

2001:0db8:0100:f101:0210:a4ff:fee3:9566 -> 2001:db8:100:f101:210:a4ff:fee3:9566

Satu urutan blok 16 bit yang berisi hanya NOL dapay di ganti dengan "::". Tapi tidak bisa lebih dari satu kali, karena representasinya jadi tidak unik.

2001:0db8:100:f101:0:0:0:1 -> 2001:db8:100:f101::1

Reduksi paling besar terjadi pada alokasi IPv6 localhost, sebagai berikut:

0000:0000:0000:0000:0000:0000:0000:0001 -> ::1

Di samping itu, juga ada yang di sebut representasi compact (base85 coded) yang di definisikan di RFC 1924 / A Compact Representation of IPv6 Addresses (1 April 1996), memang jarang sekali yang menggunakan, mungkin ini joke "April Fool", tapi berikut ini adalah contohnya:

# sudo apt-get install ipv6calc Coba:

# ipv6calc --addr_to_base85 2001:0db8:0100:f101:0210:a4ff:fee3:9566 Hasilnya:

9R}vSQZ1W=9A_Q74Lz&R Menggunakan ipv6calc kita bisa juga mengevaluasi sebuah address , sebagai berikut,

$ ipv6calc -q -i -m 2001:470:36:ab6:203:dff:fee3:db76 Hasilnya

IPV6=2001:0470:0036:0ab6:0203:0dff:fee3:db76 IPV6_ANON=2001:0470:0036:0a09:a929:4291:4020:30d3 IPV6_TYPE=unicast,global-unicast,productive,iid,iid-global,iid-eui48 SLA=0ab6 IPV6_REGISTRY=ARIN IPV6_COUNTRYCODE=US IID=0203:0dff:fee3:db76 EUI48=00:03:0d:e3:db:76 EUI48_SCOPE=global EUI48_TYPE=unicast OUI="Uniwill Computer Corp." GEOIP_COUNTRY_SHORT=US GEOIP_COUNTRY_LONG=United States GEOIP_DATABASE_INFO=GEO-106FREE 20140407 Build IPV6CALC_NAME=ipv6calc IPV6CALC_VERSION=0.95.0 IPV6CALC_COPYRIGHT="(P) & (C) 2001-2013 by Peter Bieringer " IPV6CALC_OUTPUT_VERSION=7 IPV6CALC_SETTINGS_ANON="set=anonymize-standard,mask-ipv6=56,mask-=24,mask-eui64=40,mask- mac=24,method=anonymize" IPV6CALC_FEATURES="GeoIP GeoIPv6 ANON_ZEROISE ANON_ANONYMIZE DB_AS DB_IPV4 DB_IPV6 DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE" Perbandingan dengan IPv4 • Ruang Address yang lebih besar: Keuntungan utama dari IPv6 dibandingkan dengan IPv4 adalah ruangan address yang jauh lebih besar. Panjang IPv6 address adalah 128 bit, di bandingkan dengan 32 bit di IPv4. Ruang address yang ada adalah 2^128 atau sekitar 3.4×10^38 address. Sebagai gambaran, setiap orang dari tujuh milyar orang yang hidup di tahun 2011 dapat memperoleh 4.8×10^28. Di samping itu, pengalokasian IPv4 address sangat tidak baik, jadi hanya 14% dari address yang ada yang bisa digunakan. Walaupun address yang ada sangat banyak, para perancang IPv6 address tidak bermaksud membuat saturasi dunia dengan address yang dapat digunakan. Akan tetapi, address yang panjang akan memudahkan kita mengalokasikan address, mengeffisienkan agregat routing, maupun memungkinkan fitur khusus bagi address di kemudian hari. Dalam IPv4, kita harus menggunakan metoda Classless Inter-Domain Routing (CIDR) yang rumit untuk memaksimalkan penggunaan ruangan address kecil. Sementara subnet standard di IPv6 adalah 2^64, yang merupakan dua kali lipat dari seluruh ruangan IPv4 address. Memang, tingkat penggunaan IPv6 sangat kecil, akan tetapi manajemen jaringan maupun effisiensi routing menjadi sangat tertolong dengan ruangan subnet yang besar dan agregasi route hirarkis. • Multicasting: Dalam Multicasting kita mengirimkan sebuah paket untuk banyak tujuan dengan satu kali kirim saja. Hal ini merupakan salah satu dari spesifikasi dasar IPv6. Dalam IPv4, multicast adalah optional walaupun merupakan fitur yang banyak di gunakan. Pengalamatan IPv6 multicast tidak hanya mempunyai fitur yang sama dengan IPv4 multicast, akan tetapi juga menambahkan beberapa perubahan dan perbaikan dengan cara menghilangkan protokol yang tidak dibutuhkan. IPv6 tidak mengimplementasikan broadcast IP tradisional, yaitu, mengirimkan sebuah paket ke semua host yang tersambung ke link menggunakan address broadcast khusus, oleh karenanya pada IPv6 tidak di definisikan address broadcast. • Multicasting, dalam IPv6, hasil yang sama dapat di peroleh dengan cara mengirimkan paket ke link-local all nodes multicast group pada address ff02::1, yang sama dengan IPv4 224.0.0.1. IPv6 memungkinkan untuk melakukan implementasi multicast yang baru, termasuk masukan alamat pertemuan yang termasuk dalam IPv6 multicast group address, yang akan sangat memudahkan penggelaran solusi inter-domain. Pada IPv4 sangat sulit sekali untuk sebuah organisasi untuk memperoleh sebuah alokasi multicast group yang dapat di routing secara global, dan implementasi solusi inter-domain menjadi sangat menyulitkan. Alokasi address IPv6 Unicast oleh Internet registry lokal akan memiliki paling tidak 64-bit prefix routing, yang merupakan subnet terkecil yang ada di IPv6 (yang juga 64 bit). Dengan alokasi demikian, sangat mungkin untuk meng-embed unicast address prefix ke IPv6 multicast address format, dan masih tetap bisa mengalokasi blok 32-bit, yang bisa menunjuk ke 4.2 milyard multicast group identifier. Oleh karenanya, setiap penguna IPv6 tersedia sebuah satu set globally routable source-specific multicast groups untuk aplikasi multicast. • Stateless address autoconfiguration (SLAAC) : IPv6 host dapat mengkonfigurasi diri sendiri secara automatis saat tersambung ke jaringan IPv6 menggunakan Neighbor Discovery Protocol melalui Internet Control Message Protocol versi 6 (ICMPv6) router discovery message. Saat pertama kali tersambung ke jaringan, mesin akan mengirimkan request link- local router solicitation multicast untuk konfigurasi parameter-nya; router akan merespond terhadap request tersebut dengan router advertisement packet yang berisi parameter konfigurasi Internet Layer. Jika address IPv6 stateless autoconfiguration tidak cocok untuk sebuah aplikasi, network dapat menggunakan konfigurasi stateful dengan Dynamic Host Configuration Protocol versi 6 (DHCPv6) atau mesin dapat mengkonfigurasi secara manual secara statik. Router dapat memberikan konfigurasi address yang khusus, karena mereka merupakan sumber dari informasi autokonfigurasi, seperti advertise router atau prefix. Konfigurasi stateless dari router dapat dilakukan dengan protokol router dengan penomoran khusus. • Network-layer security : Internet Protocol Security (IPsec) awalnya dikembangkan untuk IPv6, akan tetapi lebih banyak di implementasi awalnya menggunakan IPv4, yang merupakan hasil re-engineering dari versi IPv6. IPsec pada awalnya adalah wajib dalam spesifikasi IPv6, akan tetapi kemudian dibuat optional. • Proses di router lebih sederhana: Dalam IPv6, header paket dan proses dari forwarding paket di sederhanakan. Meskipun header paket IPv6 sekitar dua kali header paket IPv4, proses paket oleh router lebih effisien, oleh karenanya prinsip end-to-end dari rancangan Internet dapat lebih di kembangkan. Lebih tepatnya, karena, ◦ header paket IPv6 jauh lebih sederhana dari pada IPv4, banyak kolom yang jarang digunakan di pindahkan ke extension optional dari header. ◦ Router IPv6 tidak melakukan fragmentation. Host IPv6 harus men-cek MTU, dan melakukan end-to-end fragmentation, atau mengirim paket tidak lebih dari default MTU di IPv6 yaitu 1280 octet. ◦ IPv6 header tidak di proteksi menggunakan checksum. Proteksi integritas melalui deteksi error di asumsikan dilakukan oleh link layer dan layer yang lebih tinggi (TCP, UDP, dll). UDP/IPv4 bisa saja mempunyai checksum 0 yang mengindikasikan tidak ada checksum; IPv6 membutuhkan UDP untuk mempunyai checksum sendiri. Oleh karenanya, router IPv6 tidak perlu menghitung checksum ketika kolom pada header (seperti Time To Live / TTL) berubah. Perbaikan ini membuat pembuat router tidak perlu terlalu pusing untuk membuat hardware khusus untuk menghitung checksum, akan tetapi cukup menggunakan software saja. ◦ Kolom TTL IPv4 di ganti namanya menjadi Hop Limit, ini merefleksikan bahwa router tidak perlu menghitung waktu yang dibuang oleh paket di antrian. • Mobility : Tidak seperti IPv4 mobile, IPv6 mobile berusaha untuk tidak menggunakan routing triangular oleh karenanya hampir sama effisiensinya dengan IPv6 biasa. IPv6 router juga memungkinkan agar seluruh subnet untuk di pindahkan ke connection point router baru tanpa melakukan penomoran ulang. • Opsi Extensi : Packet header IPv6 panjangnya tetap (40 oktet). Opsi dikembangkan untuk bisa menambahkan tambahan header sesudah header IPv6, yang di batasi oleh panjang dari paket secara keseluruhan. Mekanisme extensi header memungkinkan protokol untuk di kembangkan mendukung layanan yang akan datang, seperti, quality of service, security, mobility, dan banyak lagi tanpa mendisain ulang protokol IPv6 dasarnya. • Jumbograms : IPv4 membatasi payload paket 65535 (2^16−1) oktet. Sebuah IPv6 node mempunyai opsi untuk menangani paket di atas limit tersebut, yang di kenal dengan nama jumbogram, sebesar 4294967295 (2^32−1) oktet. Penggunaan jumbogram akan memperbaiki performance pada sambungan dengan MTU yang besar. Penggunaan jumbogram akan di indikasikan opsi extensi Jumbo Payload Option header. • Privacy : Seperti IPv4, IPv6 mendukung IP address yang unik secara global oleh karenanya aktitas jaringan dimasing-masing device mempunyai potensi untuk di tracking. Perancang IPv6 lebih memfokuskan agar prinsip end-to-end dalam jaringan dapat di operasikan dengan baik. Dalam hal ini, setiap device di jaringan harus memiliki address yang secara global dapat di hubungi dari berbagai tempat di Internet. ◦ Network Prefix : Network prefix tracking tidak terlalu masalah bagi penggunakan yang memperoleh IP alokasi secara dynamic melalui DHCP. Ekstensi privasi memang tidak terlalu bermanfaat untuk memproteksi pengguna disini dari tracking jika hanya satu atau dua device yang menggunakan network statik prefix/ Dalam skenario ini, network prefix akan menjadi identifier yang unik untuk tracking. ◦ Interface Identifier : Dalam IPv4 usaha untuk menghemat alokasi IP address dilakukan dengan menggunakan Network Address Translation (NAT) yang mengubah alokasi network address, host & topologi. Pada IPv6 jika menggunakan address auto- configuration, Interface Identifier (MAC address) dari port yang digunakan untuk membuat IP address publik yang unik, akan memperlihatkan tipe ahrdware yang digunakan dan membuat penanganan yang unik untuk melihat aktifitas online seorang user. Mesin IPv6 tidak harus menggunakan address auto-configuration. Walaupun menggunakan IPv6 address yang tidak berbasis pada MAC address, maka address yang digunakan akan tetap unik secara global. Hal ini sangat berbeda jauh dengan jaringan LAN private yang menggunakan NAT- masquerade. Jika extensi privasi di aktifkan, sistem operasi akan membangkitkan identifier host secara random yang kemudian dapat di kombinasikan dengan alokasi prefix jaringan. Address ini dapat digunakan untuk berkomunikasi dengan remote host dan lebih sulit untuk di tracking ke sebuah device. Ekstensi privasi secara default di Windows, OS X, iOS maupun beberapa sistem operasi Linux. Ekstensi privasi tidak memproteksi user dari beberapa aktifitas tracking, seperti tracking cookies. Format Paket IP versi 6 Sebuah paket IPv6 mempunyai dua bagian, yaitu: header dan payload.

Header merupakan bagian yang tetap dengan fungsi minimal yang dibutuhkan oleh semua paket dan mungkin saja di ikuti oleh extension yang sifatnya optional untuk menjalankan fitur khusus.

Illustration 1: Format header IPv6

Header ini menempati 40 oktet (320 bit) pertama dari paket IPv6. Ini berisi address sumber dan tujuan, klasifikasi traffic, hop counter, tipe dari optional extension atau payload yang mengikuti header. Kolom next header akan memberitahu penerima bagaimana cara menginterpretasikan data sesudah header. Jika paket berisi option, kolom tersebut akan berisi tipe option dari option selanjutnya. Kolom “Next Header” akan memberitahukan protokol yang dibawa sebagai payload pada paket tersebut.

Header extension akan membawa opsi yang digunakan untuk pengolahan khusus dari paket di jaringan, misalnya, untuk routing, fragmentasi, atau keamanan menggunakan framework IPsec. Tanpa opsi khusus, payload harus lebih kecil dari 64Kbyte. Dengan opsi Jumbo payload (di header extension Hop-By-Hop), payload harus lebih kecil dari 4Gbyte.

Tidak seperti IPv4, router IPv6 tidak pernah memotong (fragmen) sebuah paket. Host di harusnya untuk, menggunakan Path MTU Discovery untuk mengatur paket mereka agar cukup kecil untuk menembus ke tujuan tanpa perlu di potong.

Lebih detail tentang header IPv6 adalah sebagai berikut:

• Source address (128 bits) berisi IPv6 address dari node asal paket. Ini berisi IPv6 address dari node yang mengirimkan paket. • Destination address (128 bits) berisi IPv6 address untuk node yang akan menerima paket IPv6 tersebut. • Version/IP version (4-bits) dalam 4 bit version ini berisi nomor 6. Ini mengindikasikan versi protokol IP yang digunakan adalah IPv6. Dalam 4bit version ini, untuk IPv4 akan berisi nomor 4. Akan tetapi, kolom ini hanya digunakan terbatas karena sebetulnya paket IPv4 atau IPv6 tidak dibedakan berdasarkan kolom version ini akan tetapi pada tipe protokol yang ada pada lapisan protokol 2. • Packet priority/Traffic class (8 bit) 8-bit Priority field dalam IPv6 header dapat berisi nilai yang berbeda untuk membuka kemungkinan sebuah source node untuk membedakan prioritas pengiriman paket yang dikirimkannya. Field ini selanjutnya akan digunakan oleh node pengirim dan router yang dilewatinya untuk mengidentifikasi data paket yang masuk dalam class traffic yang sama dan membedakan dengan paket yang mempunyai prioritas yang berbeda. • Flow Label/QoS management (20 bit) 20-bit flow label field di IPv6 header dapat digunakan oleh source untuk me-label paket yang masuk dalam flow yang sama. Sebauh flow dapat di identifikasi secara unik dengan kombinasi source address dan non-zero Flow label. Beberapa flow dapat aktif sekaligus dari sebuah source ke sebuah destination termasuk beberapa traffic yang tidak termasuk flow manapun (Flow label = 0). • IPv6 router harus dapat menangani paket dari flow yang sama dengan cara yang tidak sama. Informasi tentang cara menangani paket data IPv6 yang masuk ke flow tertentu dapat di spesifikasikan dalam dapat paket tersebut atau dapat dikirimkan dengan control protocol seperti RSVP (Resource reSerVation Protocol). • Ketika router menerima paket yang pertama dari flow yang baru, router akan memproses informasi yang dibawa oleh IPv6 header, Routing header, dan Hop-by-Hop extension header, dan menyimpan hasilnya (misalnya untuk menentukan cara pengiriman ulang sebuah data paket IPv6 tertentu) dalam cache memory dan menggunakan hasilnya untuk me-routing semua paket yang termasuk dalam flow yang sama (yang mempunyai source address dan Flow label yang sama), dengan menggunakan data yang di simpan dalam cache memory. • Payload length in bytes (16 bits) Field 16-bit payload length berisi panjang dari data dalam octet / bit sesudah header paket IPv6. Payload length 16 bit menyebabkan limit teratas dari packet payload adalah 64 kilobyte. Jika dibutuhkan packet payload yang lebih besar, tersedia Jumbo payload extesion di sediakan. Sebuah Jumbo payload (Jumbogram) di indikasikan dengan nilai zero / nol di Payload Length. Jumbogram sering digunakan di komunikasi superkomputer menggunakan IPv6 untuk mengirimkan data payload yang sangat besar. • Next Header (8 bits) Field 8-bit Next Header mengidentifikasi tipe header sesudah IPv6 header yang berlokasi di awal dari data field (payload) dari IPv6 paket. Field ini biasanya berisi protocol transport layer yang digunakan oleh packet payload. Ada dua Next Header yang sering digunakan yaitu TCP (6) dan UDP (17), akan tetapi berbagai header lainnya juga sangat mungkin digunakan. Format yang di adopsi oleh field ini adalah yang di usulkan untuk IPv4 oleh RFC1700. Oleh karena itu, dalam hal protocol IPv6, field Next Header yang digunakan sama dengan field di protocol IPv4. • Time To Live (TTL)/Hop Limit (8 bits) – Field 8-bit Hop Limit akan berkurang satu, setiap melewati satu node (biasanya sebuah router) yang mem-forward paket. Jika Hop Limit berkurang menjadi nol, paket akan dibuang. Fungsi dari field ini adalah untuk mengidentifikasi dan untuk membuang paket yang macet dalam loop yang tertutup karena kesalahan informasi routing. Field 8 bit membatasi jumlah maksimum sambungan antara dua IPv6 node. Dalam hal ini, sebuah paket IPv6 hanya di ijinkan maksimum 255 hop sebelum di buang. IPv6 paket hanya dapat melalui maksimum 254 router sebelum di buang. • Dalam hal Protocol IPv6, field untuk menangani fragmentation bukan bagian dari header dasar. Mereka meletakan pada header extension yang terpisah. Di samping itu, fragmentation secara exclusive di tangani oleh host pengirim. Router tidak terlibat sama sekali dalam proses fragmentasi agar proses pengiriman paket menjadi lebih cepat. Tipe alamat pada IP versi 6 Ada beberapa tipe address IPv6, pada bagian ini akan di terangkan beberapa tipe Address Ipv6 yang penting / sering digunakan. IPv6 Address : Alamat tanpa special prefix • localhost

Alamat ini adalah alamat khusus yang digunakan untuk interface loopback, sama dengan IPv4 yaitu "127.0.0.1". Dengan IPv6, localhost adalah:

0000:0000:0000:0000:0000:0000:0000:0001 atau di kompres: ::1 paket dengan alamat ini sebagai source atau destination tidak boleh keluar dari host pengirim.

• Address yang tidak spesified

Ini adalah address seperti "any" atau "0.0.0.0" di IPv4. Di IPv6 ini adalah 0000:0000:0000:0000:0000:0000:0000:0000 atau: :: Alamat ini biasanya digunakan / dilihat di socket binding (ke IPv6 addrress apa saja) atau di tabel routing. Catatan: Address yang tidak spesified (unspesified address) tidak bisa digunakan sebagai alamat tujuan. IPv6 address dengan IPv4 address yang di embed Ada dua address IPv6 yang berisi IPv4 address , yaitu: • IPv4-mapped IPv6 address

IPv4-only IPv6-compatible addresses kadangkala digunakan / terlihat untuk soket yang dibuat oleh daemon yang IPv6-enable, akan tetapi hanya menempekan / binding ke IPv4 address.

Alamat ini di definisikan dengan prefix khusus dengan panjang 96 (untuk IPv4 address a.b.c.d) :

0:0:0:0:0:ffff:a.b.c.d/96 dalam format di kompres: ::ffff:a.b.c.d/96 Contoh, untuk address IPv4 1.2.3.4 akan tampak sebagai: ::ffff:1.2.3.4 • IPv4-compatible IPv6 address

Digunakan untuk automatic tunnel (RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers), yang sekarang mulai di gantikan oleh 6to4 tunneling. 0:0:0:0:0:0:a.b.c.d/96 adalah format di kompres : ::a.b.c.d/96

IPv6 Address : Bagian Network, juga dikenal sebagai prefix Perancang IPv6 mendefinsikan beberapa tipe address, dan menyisakan banyak bagian untuk di definisikan lebih lanjut sesuai dengan kebutuhan. RFC 4291 / IP Version 6 Addressing Architecture mendefinisikan skema pengalamatan yang digunakan saat ini.

Mari kita lihat lebih lanjut berbagai tipe prefix (dan tipe address yang ada): Tipe Local Link Address Address spesial ini hanya valid untuk me-link ke sebuah interface. Jika kita menggunakan address ini sebagai tujuan maka paket tidak akan dapat melewati router. Address ini digunakan untuk komunikasi link antar interface, seperti,

• Apakah ada yang berada pada link ini? • Apakah ada yang menggunakan address spesial (juga kita mencari router)? Local link address dimulai dengan (dimana "x" adalah hex, biasanya "0").

fe8x: <- saat ini kita menggunakan prefix ini. fe9x: feax: febx:

Address dengan prefix ini akan ditemukan pada semua interface yang IPv6-enable setelah stateless auto-configuration (yang merupakan standard konfigurasi interface yang ada). Tipe Address Lokal Address ini sama dengan RFC 1918 / Address Allocation for Private Internets di IPv4 hari ini, dengan keuntungan tambahan setiap pengguna yang menggunakan address ini akan mempunyai kemampuan untuk memberikan 16 bit untuk maksimum 65536 subnet. Equivalen dengan 10.0.0.0/8 di IPv4 hari ini.

Keuntungan lain - karena sangat mungkin untuk memberikan lebih dari satu address ke interface dengan IPv6, kita juga dapat memberikan address lokal ke address global.

Address lokal mulai dengan: fecx: <- yang banyak digunakan fedx: feex: fefx: (dimana “x” adalah karakter hex, biasanya “0”) Address ini sudah tidak digunakan berdasarkan RFC 3879 / Deprecating Site Local Addresses, akan tetapi untuk percobaan di lab, address seperti ini masih merupakan pilihan yang baik.

Address IPv6 Unicast Lokal Karena address lokal awalnya tidak unik, ini tampaknya menyebabkan problem utama, jika dua independen network kemudian tersambung (overlap subnet). Ini akan menjurus pada tipe address baru dengan tipe RFC 4193 / Unique Local IPv6 Unicast Addresses. Address ini mulai dengan : fcxx: fdxx: <- saat ini yang digunakan.

Bagian dari prefix (40 bits) dibuat mengunakan algoritma pseudo-random dan mungkin saja, ke dua-nya membuat satu alamat yang sama. Contoh untuk sebuah prefix (bisa di generate menggunakan http://forschung.goebel- consult.de/ipv6/createLULA.py)

fd0f:8b72:ac90::/48 Global address type "(Aggregatable) global unicast" Hari ini, ada satu tipe address global yang di definisikan. Dalam disain pertama kali, di sebut "provider based," yang dibuang beberapa tahun lalu di RFC 1884 / IP Version 6 Addressing Architecture [obsolete], kita akan menemukan beberapa penampakan di linux kernel source yang lama.

Alamat global IPv6 kira-kira setara dengan alamat IPv4 publik. Alamat global yang dapat dirutekan dan terjangkau di Internet IPv6. Alamat unicast global dirancang untuk menjadi gabungan atau diringkas untuk infrastruktur routing yang efisien. Berbeda dengan IPv4 saat ini, Internet berbasis IPv6 telah dirancang dari dasar untuk mendukung efisien, hierarkis pengalamatan dan routing.

Address ini mulai dengan (x adalah hex karakter) 2xxx: 3xxx:

Struktur alamat unicast global dijelaskan sebagai berikut: • Porsi tetap diatur ke 001 tiga high-order bit diatur ke 001. • Prefix Routing global menunjukkan prefix routing global untuk situs organisasi tertentu. • ID interface menunjukkan antarmuka pada subnet yang spesifik dalam situs. berukuran 64 bit. ID antarmuka pada IPv6 adalah setara dengan ID node atau ID host di IPv4.

Catatan: prefix “aggregatable” sudah dibuang di draft sekarang. Ada beberapa subtipe yang di definisikan. • 6bone test addresses

Ini adalah global address pertama yang di definisikan dan digunakan. Mereka mulai dengan 3ffe: Contoh: 3ffe:ffff:100:f102::1 Sebuah 6bone test address khusus yang tidak akan unik secara global akan mulai dengan 3ffe:ffff: dan umumnya akan tampak pada contoh-contoh lama. Untuk itu, jika address sebenernya yang diperlihatkan, kemungkinan seseorang melakukan copy & pasti dari file konfigurasi- nya. Oleh karenanya, akan menyebabkan duplikasi di address unik yang global. Hal ini menyebabkan problem yang sangat serius di host origin (tidak akan memperoleh jawaban dari paket yang dikirim). Karena sekarang IPv6 sudah memasuki masa produksi,prefix ini tidak lagi di delegasikan dan dibuang dari tabel routing setelah 6.6.2006 (lihat RFC 3701 / 6bone Phaseout). • 6to4 address Address ini di rancang untuk mekanisme tunnel spesial [RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds and RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers], encode IPv4 address yang diberikan dan kemungkinan subnet dan mulai dengan

2002:

Contoh. untuk merepresentasikan 192.168.1.1/5:

2002:c0a8:0101:5::1 Alokasi oleh provider untuk routing berjenjang Address ini di delegasikan kepada oleh Internet Service Provider (ISP) dan saat ini mulai dari

2001:

Di Indonesia, prefix untuk ISP besar di delegasikan oleh APJII dan saat ini prefix besar dengan panjang 32 di alokasikan. ISP pelanggan akan dapat prefix dengan panjang 48. Address untuk contoh dan dokumentasi Saat ini, ada dua address yang dialokasikan untuk contoh-contoh dan dokumentasi RFC 3849 / IPv6 Address Prefix Reserved for Documentation:

3fff:ffff::/32 2001:0DB8::/32 EXAMPLENET-WF

Address ini harus di filter berbasis pada source address dan sebaiknya tidak di routing ke border router ke Internet, jika mungkin. Multicast address Multicast address digunakan untuk layanan terkait multicast. Beberapa karakter dari Multicast address: • Mewakili sekelompok interface pada traffic yang sama. • The 8 bit pertama diatur FF. Address multicast selalu dimulai dengan (xx adalah nilai scope) ffxy: Pada 4 bit berikutnya adalah masa alamat: 0 adalah permanen 1 adalah sementara. Anycast Address Address Anycast adalah address khusus dan digunakan untuk hal seperti mencari DNS terdekat, DHCP server terdekat, atau group dinamic seperti itu. Address di ambil dari alokasi alamat unicast address (saat ini di agregate secara global atau site local). Mekanisme Anycast (dari sisi client) di handel dengan meknisme protokol routing.

Sebuah alamat anycast mengidentifikasi satu atau lebih interface. Sehigga kata device diganti dengan istilah node untuk menunjuk sebuah antarmuka pada perangkat. Pada dasarnya, anycast adalah gabungan dari alamat unicast dan multicast. Dengan unicast, satu paket dikirim ke satu tujuan; Dengan multicast, satu paket yang dikirim ke semua anggota dari kelompok multicast; Dengan sebuah anycast, paket dikirim ke salah satu anggota dari kelompok perangkat yang dikonfigurasi dengan alamat anycast. Secara default, paket yang dikirim ke alamat anycast akan diteruskan ke antarmuka node, yang didasarkan pada proses routing yang digunakan untuk mendapatkan paket ke tujuan.

Catatan: Address Anycast tidak dapat digunakan sebagai source address. Address Anycast hanya dapat digunakan sebagai destination address. • Subnet-router Address Anycast

Sebuah contoh sederhana untuk address anycast adalah subnet-router anycast address. Asumsi sebuah node dengan global IPv6 address berikut:

2001:db8:100:f101:210:a4ff:fee3:9566/64 <- Address Node Subnet-router anycast address dapat dibuat denngan mengosongkan suffix (least significant 64 bit): 2001:db8:100:f101::/64 <- subnet-router anycast address

IPv6 Address : Bagian Host Untuk auto-configuration dan mobility, di putuskan untuk menggunakan 64 bit bagian bawah sebagai bagian host dari address di kebanyakan tipe address. Oleh karenanya setiap subnet dapat menampung banyak sekali address. Bagian host ini dapat dilihat berlainan: • Automatic computed (juga dikenal sebagai stateless)

Dengan auto-configuration, bagian host dari address dihitung dengan mengkonversikan MAC address dari interface (jika ada), dengan metoda EUI-64, ke IPv6 address yang unik. Jika tidak ada MAC address yang biasanya terjadi pada virtual device, maka yang lain seperti address IPv4 atau MAC address dari interface fisik yang akan digunakan. Contoh, NIC dengan MAC address (48 bit): 00:10:a4:01:23:45

Berdasarkan tutorial IEEE EUI-64 disain untuk EUI-48 identifier ke 64 bit interface identifier sebagai: 0210:a4ff:fe01:2345

Untuk prefix tertentu, maka hasil dari IPv6 address akan tampak sebagai berikut: 2001:0db8:0100:f101:0210:a4ff:fe01:2345

Masalah privacy dengan automatic computed address dan solusinya Karena bagian host dengan "automatic computed" secara global harusnya unik (kecuali jika vendor NIC menggunakan MAC address yang sama untuk beberapa NIC), maka tracking client menjadi mungkin untuk host yang tidak menggunakan proxy. Masalah ini sudah diketahui, dan solusinya sudah di definisikan berupa : privacy extension, yang didefinisikan di RFC 3041 / Privacy Extensions for Stateless Address Autoconfiguration in IPv6 (atau veri yang lebih baru). Menggunakan nilai random dan statik sebuah suffix di buat dari waktu ke waktu. Catatan: ini hanya mungkin untuk client yang melakukan sambungan ke luar dan ini tidak terlalu bermanfaat untuk server. • Set secara Manual

Untuk server, mungkin yang paling mudah untuk mengingat address yang lebih sederhana. Ini juga dapat di akomodasi. Sangat mungkin untuk menset alamat IPv6 tambahan ke sebuah interface, misalnya, 2001:0db8:100:f101::1 Untuk manual suffix seperti “::1” tampak di contoh di atas, dibutuhkan most significant bit ke 7 di set ke 0 (universal/local bit dari automatically generated identifier). Juga bit kombinasi yang lain yang di reserve untuk anycast address. IPv6 Address : Panjang Prefix untuk Routing Pada awal proses disain, sebetulnya direncanakan untuk menggunakan pendekatan routing yang betul-betul berjenjang untuk bisa mengurangi tabel routing semaksimal mungkin. Alasannya, karena jumlah entri routing IPv4 di core router > 104 ribu (Mei 2001), dengan cara tersebut mengurangi kebutuhan memory di router untuk menyimpan tabel routing dan menaikan kecepatan (dengan sedikit entri maka lebih mempercepat proses pencarian).

Pada saat ini, routing berjenjang hanya ada pada jaringan dengan satu ISP saja. Dengan lebih dari satu ISP, hal ini tidak mungkin terjadi, karena ada-nya isu multi-homing. • Panjang Prefix (juga dikenal sebagai netmask)

Sama dengan IPv4, jalur network yang akan di pilih untuk routing. Karena notasi netmask standard untuk 128 bit tidak terlalu cantik, perancang menggunakan skema yang digunakan di IPv4 Classless Inter Domain Routing (CIDR, RFC 1519 / Classless Inter-Domain Routing), yang menspesifikasikan jumlah bit dari IP address yang digunakan untuk routing. Ini juga dikenal sebagai notasi "slash". Contoh: 2001:0db8:100:1:2:3:4:5/48 Notasi ini berarti bahwa Network: 2001:0db8:0100:0000:0000:0000:0000:0000 Netmask: ffff:ffff:ffff:0000:0000:0000:0000:0000

Subnetting di IPv6 IPv6 address menggunakan 128 bit untuk me-representasikan sebuah address yang termasuk bit untuk melakukan subnetting. Setengah ke dua dari address (least significant 64 bit) biasanya digunakan hanya untuk host saja. Oleh karenanya, kita memang perlu melakukan subnet dari network.

Gambar 36: Subnetting IPv6

48 bit pertama biasanya di sebut routing prefix yang biasanya diberikan oleh Internet Registry seperti APNIC, RIPE dll. Kita biasanya akan memperoleh 16 bit selanjutnya sebagai subnet. 16 bit subnet equivalen dengan IPv4 Class B Network. Dengan menggunakan bit subnet ini, sebuah organisasi akan bisa memperoleh 65 ribu subnet, sangat lebih dari cukup.

Oleh karena-nya routing prefix biasanya /64 dan bagian host adalah 64 bit. Kita dapat saja membuat subnet lebih dalam dari 16 bit Subnet ID, dengan cara meminjam host bit. Akan tetapi sangat di rekomendasikan 64 bit digunakan sebagai host address karena auto-configuration membutuhkan 64 bit.

IPv6 subnetting menggunakan cara / konsep Variable Length Subnet Masking seperti di IPv4. /48 prefix dapat di alokasikan ke sebuah organisasi untuk bisa mengambil manfaat dari /64 subnet prefix, yang terdiri dari 65535 sub-network, masing-masing mempunyai 264 host. Sebuah /64 prefix dapat di alokasikan ke sebuah sambungan point-to-point dimana hanya ada dua host IPv6 di sambungan tersebut. Mencocokan Sebuah Route Dalam kondisi normal (tanpa QoS), sebuah pencarian di tabel routing akan menghasilkan route dengan most significant number pada address bit yang akan di pilih. Dengan kata lain, route dengan sepanjang mungkin prefix yang cocok akan di pilih terlebih dulu.

Sebagai contoh, jiha sebuah tabel routing di bawah ini (list tidak lengkap): 2001:0db8:100::/48 :: U 1 0 0 sit1 2000::/3 ::192.88.99.1 UG 1 0 0 tun6to4 Contoh tujuan dari IPv6 paket akan di routing ke device berikut: 2001:0db8:100:1:2:3:4:5/48 -> di routing melalui device sit1 2001:0db8:200:1:2:3:4:5/48 -> di routing melalui device tun6to4 Menggunakan IP Calculator Untuk memudahkan perhitungan kita dapat menggunakan IP Calculator seperti: • http://www.ipv6calculator.net/ • http://www.subnetonline.com/pages/subnet-calculators/ipv6-subnet-calculator.php

Contoh untuk IPv6 address 2001:abc:fe::1/64 Akan di peroleh informasi yang cukup detail seperti

-[ipv6 : 2001:abc:fe::1/64] - 0 Expanded Address 2001:0abc:00fe:0000:0000:0000:0000:0001 Compressed address 2001:abc:fe::1 Subnet prefix (masked) 2001:abc:fe:0:0:0:0:0/64 Address ID (masked) 0:0:0:0:0:0:0:1/64 Prefix address ffff:ffff:ffff:ffff:0:0:0:0 Prefix length 64 Address type Aggregatable Global Unicast Addresses Network range 2001:0abc:00fe:0000:0000:0000:0000:0000 - 2001:0abc:00fe:0000:ffff:ffff:ffff:ffff Interface Config 2001:abc:fe::1/64 BGP network 2001:abc:fe::/64 OSPF network area Wildcard network Konfigurasi Interface di IPv6 Disini kita akan membahas cara mengkonfigurasi Interface dengan IPv6. Yang akan menarik bagi kita yang biasanya menggunakan IPv4 terutama jumlah IP address yang bisa di tempelkan pada sebuah Interface. Pada IPv4, biasanya sebuah Interface hanya bisa di tempelkan sebuah (satu) IP address saja. Jika kita ingin mempunyai beberapa IP address maka kita perlu membuat interface virtual. Pada IPv6, kita dapat menempelkan banyak IPv6 address pada sebuah interface tanpa perlu membuat interface virtual sama sekali. Mengkonfigurasi Interface untuk Network Device yang berbeda. Pada sebuah node, ada beberapa device network. Mereka tergabung dalam beberapa kelas. • Secara fisik, seperti eth0, tr0 • Secara virtual, seperti ppp0, tun0, tap0, sit0, isdn0, ippp0 Secara Fisik Menempel secara fisik seperti Ethernet atau Token-Ring secara normal tidak memerlukan penanganan khusus. Secara Virtual Interface yang menempel secara virtual biasanya membutuhkan dukungan khusus. Interface tunnel IPv6-in-IPv4 Interface ini biasanya di kenal dengan nama sitx. Nama sit adalah kependekan dari Simple Internet Transition. Device ini mempunyai kemampuan untuk mengenkapsulasi paket IPv6 ke dalam paket IPv4 dan mengirimkan melalui tunnel ke ujung satu-nya. sit0 mempunyai arti spesial dan tidak dapat digunakan untuk tunnel khusus. Interface PPP Interface PPP memperoleh kemampuan IPv6 dari IPv6 enabled PPP daemon. Interface ISDN HDLC Kemampuan IPv6 untuk HDLC dengan enkapsulasi ip sudah ada dalam kernel. Interface ISDN PPP Interface ISDN PPP (ippp) tidak di enable IPv6-nya di kernel. Juga tidak ada rencana untuk itu, karena di kernel 2.5+ akan di ubah oleh lapisan interface ppp yang generic.

SLIP + PLIP Interface ini tidak mendukung transportasi IPv6 (mengirim OK, tapi menerima tidak jalan). Ether-tap device Ether-tap device adalah IPv6-enabled dan dapat di konfigurasi stateless. Untuk menggunakannya, modul “ethertap” harus di load terlebih dulu.

Membuat Interface Up / Down Ada dua metoda yang dapat digunakan untuk membuat sebuah interface up atau down Menggunakan "ip" Penggunaan

# ip link set dev up # ip link set dev down Contoh

# ip link set dev eth0 up # ip link set dev eth0 down Menggunakan "ifconfig" Penggunaan

# /sbin/ifconfig up # /sbin/ifconfig down Contoh

# /sbin/ifconfig eth0 up # /sbin/ifconfig eth0 down Menampilkan IPv6 Address yang ada Kita dapat mencek, apakah IPv6 address sudah dikonfigurasi secara automatic saat stateless auto- configuration. Menggunakan "ip" Penggunaan

# /sbin/ip -6 addr show dev Contoh untuk host dengan statik konfigurasi

# /sbin/ip -6 addr show dev eth0 Pada contoh ini interface eth0 mempunyai beberapa IPv6, hasilnya kira-kira:

2: eth0: mtu 1500 qlen 1000 inet6 2001:470:36:ab6::4f0/128 scope global inet6 2001:470:36:ab6:e47e:a439:2e5d:44a4/64 scope global temporary dynamic inet6 2001:470:36:ab6:62a4:4cff:fe75:a6a0/64 scope global dynamic inet6 fe80::62a4:4cff:fe75:a6a0/64 scope link

Sementara untuk host yang secara automatic di konfigurasi IPv6 dan ada lifetime-nya

# /sbin/ip -6 addr show dev eth0 Hasilnya kira-kira:

2: eth0: mtu 1500 qlen 1000 inet6 2001:470:36:ab6::4f0/128 scope global valid_lft forever preferred_lft forever inet6 2001:470:36:ab6:e47e:a439:2e5d:44a4/64 scope global temporary dynamic valid_lft 6974sec preferred_lft 1574sec inet6 2001:470:36:ab6:62a4:4cff:fe75:a6a0/64 scope global dynamic valid_lft 6974sec preferred_lft 1574sec inet6 fe80::62a4:4cff:fe75:a6a0/64 scope link valid_lft forever preferred_lft forever Penggunaan "ifconfig" Penggunaan:

# /sbin/ifconfig Contoh (output di filter menggunakan grep untuk menampilkan hanya address IPv6 saja). Disini kita bisa melihat IPv6 yang berbeda mempunyai scope yang berbeda.

# /sbin/ifconfig eth0 |grep "inet6 addr:" Dalam contoh berikut interface eth0 mempunyai beberapa IPv6, hasilnya kira-kira:

inet6 addr: 2001:470:36:ab6:62a4:4cff:fe75:a6a0/64 Scope:Global inet6 addr: 2001:470:36:ab6:e47e:a439:2e5d:44a4/64 Scope:Global inet6 addr: fe80::62a4:4cff:fe75:a6a0/64 Scope:Link inet6 addr: 2001:470:36:ab6::4f0/128 Scope:Global Menambahkan IPv6 Address ke Interface Menambahkan address IPv6 sama dengan mekanisme address "IP ALIAS" di Linux IPv4 interface. Menggunakan "ip" Kita dapat menggunakan perintah ini beberapa kali untuk menambahkan beberapa IPv6 address ke sebuah interface.

Penggunaan: # /sbin/ip -6 addr add / dev Contoh:

# /sbin/ip -6 addr add 2001:0db8:0:f101::1/64 dev eth0 Menggunakan "ifconfig" Kita dapat menggunakan perintah ini beberapa kali untuk menambahkan beberapa IPv6 address ke sebuah interface. Penggunaan:

# /sbin/ifconfig inet6 add / Contoh

# /sbin/ifconfig eth0 inet6 add 2001:0db8:0:f101::1/64

Mengedit file /etc/network/interfaces Kita dapat mengedit file /etc/network/interfaces

# nano /etc/network/interfaces Untuk memperoleh IPv6 Static, isi dengan:

auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.223 dns-nameservers 8.8.8.8 iface eth0 inet6 static address 2001:470:36:AB6::100 netmask 60 gateway 2001:470:36:AB6::1 dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844

Dalam contoh di atas di perlihatkan konfigurasi sekaligus IPv4 dan IPv6 dalam /etc/network/interfaces. Perbedaannya hanya perintah iface eth0 inet (IPv4) dan iface eth0 inet6 (IPv6). Konfigurasi /etc/network/interfaces hanya akan aktif jika network kita restart atau komputer kita reboot.

Dalam file /etc/network/interfaces, kita hanya dapat menambahkan satu IPv6 address interface. Jika ingin menambahkan beberapa IPv6 adress kita perlu menggunakan perintah “ip” atau “ifconfig” di shell. Membuang IPv6 Address dari Interface Membuang IPv6 Address memang tidak terlalu sering dibutuhkan. Hati-hati dalam membuang IPv6 address yang tidak eksis, karena di kernel yang lama kemungkinan akan menyebabkan crash.

Menggunakan "ip" Penggunaan: # /sbin/ip -6 addr del / dev Contoh:

# /sbin/ip -6 addr del 2001:0db8:0:f101::1/64 dev eth0 Menggunakan "ifconfig" Penggunaan:

# /sbin/ifconfig inet6 del / Contoh:

# /sbin/ifconfig eth0 inet6 del 2001:0db8:0:f101::1/64

Routing pada Jaringan IPv6 Disini akan di jelaskan beberapa teknik untuk mengkonfigurasi dan memanipulasi routing di IPv6.

Mengaktifkan IPv6 forwarding di kernel Agar router dapat memforward IPv6 kita perlu meng-enable kernel dengan perintah

sudo sysctl -w net.ipv6.conf.all.forwarding=1

Menampilkan Route IPv6 yang ada Kita dapat men-cek apakah IPv6 sudah terkonfigurasi secara automatis. Menggunakan "ip" Penggunaan

# /sbin/ip -6 route show [dev ] Contoh

# /sbin/ip -6 route show dev eth0 Hasilnya kira-kira:

2001:0db8:0:f101::/64 proto kernel metric 256 mtu 1500 advmss 1440 fe80::/10 proto kernel metric 256 mtu 1500 advmss 1440 ff00::/8 proto kernel metric 256 mtu 1500 advmss 1440 default proto kernel metric 256 mtu 1500 advmss 1440 Penggunaan "route" Penggunaan

# /sbin/route -A inet6 Contoh (di filter untuk "eth0"):

# /sbin/route -A inet6 |grep -w "eth0"

2001:0db8:0:f101 ::/64 :: UA 256 0 0 eth0 <- Route global address fe80::/10 :: UA 256 0 0 eth0 <- Route link-local address ff00::/8 :: UA 256 0 0 eth0 <- Route multicast address ::/0 :: UDA 256 0 0 eth0 <- Automatic default route Menambahkan IPv6 route melalui sebuah gateway Jika dibutuhkan untuk menjangkau jaringan di luar dengan IPv6 melalui router yang IPv6-enabled Menggunakan "ip" Penggunaan

# /sbin/ip -6 route add / via [dev ] Contoh

# /sbin/ip -6 route add 2000::/3 via 2001:0db8:0:f101::1 Menggunakan "route" Penggunaan

# /sbin/route -A inet6 add / gw [dev ] Device dapat dibutuhkan, jika IPv6 address dari gateway ada di link local.

Contoh berikut akan menambahkan route ke global address (2000::/3) melalui gateway 2001:0db8:0:f101::1

# /sbin/route -A inet6 add 2000::/3 gw 2001:0db8:0:f101::1

Membuang IPv6 Route dari gateway Membuang IPv6 route melalui gateway, sering kali tidak di perlukan secara manual. Kebanyakan dilakukan oleh script konfigurasi network pada saat shutdown (full atau per interface).

Menggunakan "ip" Penggunaan

# /sbin/ip -6 route del / via [dev ] Contoh

# /sbin/ip -6 route del 2000::/3 via 2001:0db8:0:f101::1 Menggunakan "route" Penggunaan

# /sbin/route -A inet6 del / gw [dev ] Contoh

# /sbin/route -A inet6 del 2000::/3 gw 2001:0db8:0:f101::1

Menambahkan IPv6 Route melalui sebuah interface Menambahkan IPv6 route melalui interface sering kali tidak dibutuhkan. Kadang dibutuhkan di sambungan dedicated point-to-point.

Menggunakan "ip" Penggunaan:

# /sbin/ip -6 route add / dev metric 1 Contoh:

# /sbin/ip -6 route add 2000::/3 dev eth0 metric 1 Metric “1” digunakan disini agar compatible dengan metric yang digunakanoleh route, karena default metric yang digunakan oleh "ip" adalah “1024”. Menggunakan "route" Penggunaan:

# /sbin/route -A inet6 add / dev Contoh:

# /sbin/route -A inet6 add 2000::/3 dev eth0

Membuang IPv6 Route dari sebuah interface Membuang IPv6 route melalui interface biasanya tidak dilakukan menggunakan tangan, script konfigurasi akan melakukan hal tersebut saat shutdown.

Menggunakan "ip" Penggunaan

# /sbin/ip -6 route del / dev Contoh

# /sbin/ip -6 route del 2000::/3 dev eth0 Menggunakan "route" Penggunaan

# /sbin/route -A inet6 del / dev Contoh

# /sbin/route -A inet6 del 2000::/3 dev eth0

Display Tetangga / Neighbor menggunakan perintah ip Dengan perintah berikut kita dapat melihat / mempelajari tetangga yang menjalankan IPv6

# ip -6 neigh show [dev ] Contoh berikut memperlihatkan satu tetangga, yang kebetulan sebuah router

# ip -6 neigh show Hasilnya kira-kira:

fe80::5e2e:59ff:fe35:14eb dev br-lan lladdr 5c:2e:59:35:14:eb STALE

fe80::225:9cff:fe49:e965 dev eth5 lladdr 00:25:9c:49:e9:65 router REACHABLE

2001:470:19:b37:19d2:804c:32b5:4878 dev br-lan lladdr 08:60:6e:db:4e:b8 STALE

fe80::8aae:1dff:fef2:5da8 dev br-lan lladdr 88:ae:1d:f2:5d:a8 STALE 2001:470:19:b37:9d44:555d:f72c:7892 dev br-lan FAILED

2001:470:19:b37:ae9e:17ff:fecc:b2fe dev br-lan FAILED

fe80::a60:6eff:fedb:4eb8 dev br-lan lladdr 08:60:6e:db:4e:b8 STALE

Manipulasi tabel Tetangga / Neighbor menggunakan perintah ip Menambahkan entri secara manual Penggunaan

# ip -6 neigh add lladdr dev Contoh:

# ip -6 neigh add fec0::1 lladdr 02:01:02:03:04:05 dev eth0 Membuang entri secara manual Penggunaan

# ip -6 neigh del lladdr dev Contoh:

# ip -6 neigh del fec0::1 lladdr 02:01:02:03:04:05 dev eth0

Setting Lanjut Perintah "ip" memang tidak terdokumentasi dengan baik, tapi sangat kuat. Lihat manual secara online # ip -6 neigh help Akan keluar kira-kira:

Usage: ip neigh { add | del | change | replace } { ADDR [ lladdr LLADDR ] [ nud { permanent | noarp | stale | reachable } ] | proxy ADDR } [ dev DEV ] ip neigh {show|flush} [ to PREFIX ] [ dev DEV ] [ nud STATE ]

Beberapa opsi tampaknya hanya untuk IPv4 BAB 9: Routing

Yang menarik dari protokol IP adalah biasanya tidak ada informasi sama sekali paket yang dikirim harus melalui router tertentu / yang mana. Akibatnya bukan mustahil paket akan hilang di jalan jika tidak benar dalam melakukan routing.

Seperti halnya OSI Network Layer Protokol, Internet Protocol (IP) mempunyai tanggung jawab untuk mencarikan route yang harus di tempuh paket untuk mencapai tujuan. Hal ini dilakukan dengan melihat tujuan IP di NET_ID dan informasi kemana paket harus di arahkan di table routing. Semua ini dilakukan oleh protocol routing, bukan IP, protocol routing ini yang akan mengisi tabel routing.

Beberapa referensi yang baik tentang teknik routing dapat di baca di Linux Advanced Routing & Traffic Control http://lartc.org/ danLinux Network Administration Guide http://www.tldp.org/guides.html.

Detail teknik dan implementasi routing yang sangat kompleks dan mungkin sebaiknya di bahas dalam buku yang terpisah. Bagi anda yang sangat tertarik untuk mendalami teknik routing sangat di sarankan untuk mendownload berbagai whitepaper / material yang ada di situs Cisco http://www.cisco.com yang banyak menyediakan teknik routing yang baik terutama untuk jaringan sekelas Internet Service Provider (ISP).

Terutama untuk jaringan wireless komunitas, saat ini juga mulai berkembang teknik jaringan yang sangat flexibel dimana semua peralatan bisa menjadi relay satu sama lain. Teknik ini di kenal dengan jaringan wireless mesh. Detail teknik routing wireless mesh di kenal sebagai Optimized Link State Routing yang dapat di ambil secara bebas di http://www.olsr.org/. Lebih detail tentang jaringan wireless mesh dapat di baca di buku “Jaringan MESH: Solusi Jitu Membangun Jaringan Wireless Gotong Royong Tanpa Access Point” di terbitkan oleh Andipublisher.com Routing Direct vs. Indirect Jika dua komputer yang terhubung dalam jaringan komputer dengan hub yang sama, maka ke dua komputer tersebut dapat langsung berhubungan satu sama lain melalui hub tanpa perlu mem- forward ke router atau gateway. Routing Direct Umumnya untuk routing direct kita tidak perlu mengkonfigurasi apa-apa di sisi system operasinya. Informasi bahwa sebuah host adalah direct, jika ke dua-nya mempunyai network address (NET_ID) yang sama persis. Konfigurasi netmask di network interface sangat menentukan dan sangat fatal disini. Konfigurasi interface di Linux pada interface eth0 dapat dilakukan menggunakan perintah,

# ifconfig eth0 [ip-address] netmask [subnetmask]

Routing Indirect Jika dua komputer yang saling berhubung tidak tersambung pada jaringan yang sama, tidak tersambung pada hub yang sama. Harus ada sebuah atau beberapa buah router / gateway yang di fungsikan untuk me-relay paket agar ke dua komputer dapat saling komunikasi. Agar indirect routing dapat berfungsi dengan baik, kita perlu menambahkan entry pada tabel routing di sistem operasi yang kita gunakan. Proses ini dapat dilakukan secara statik maupun secara automatis / dinamik. Metoda Routing Teknik routing yang di jelaskan di atas menggunakan perintah route add di shell Linux sebetulnya termasuk kategori routing statik. Routing Statik Route ke tujuan di daftar secara manual. Tabel routing statik hanya berubah jika di ubah oleh pengguna atau administrator.

Sambungan ke jaringan tidak tergantung pada kondisi jaringan. Jadi baik jaringan yang dituju up atau down, route statik akan tetap ada di tabel routing, dan paket / trafik akan di kirim ke tujuan. Biasanya akan ada paling tidak satu (1) buah routing statik untuk sebuah network interface, yang biasanya di buat secara automatis pada saat network interface tersebut di konfigurasi.

Tabel routing statik akan terkonfigurasi pada saat booting, dan tidak berubah sampai waktu yang tidak di tentukan. Teknik ini merupakan teknik paling mendasar dalam jaringan komputer. Tentunya di asumsikan bahwa semua workstation tetap bekerja dalam konfigurasi IP address yang benar, jika ada satu workstation yang berubah konfigurasinya, maka memungkinan besar semua komputer di jaringan harus berubah konfigurasinya untuk merefleksikan perubahan topologi jaringan yang ada. Routing default “usaha terakhir” untuk trafik tujuan yang tidak di ketahui oleh router.

Merupakan bentuk routing yang paling sederhana untuk sebuah jaringan yang tersambung dengan satu titik exit / keluaran. Routing dinamik Routing dynamic (dinamik) menggunakan protokol informasi routing yang khusus yang dapat secara automatis mengupdate tabel routing yang dapat berbicara dengan router lainnya.

Sambungan ke jaringan tergantung kepada ke beradaan dan kondisi jaringan. Maka, jika jaringan yang dituju sedang terputus atau mati maka route ke arah jaringan tersebut akan hilang dari tabel dan trafik tidak akan dikirimkan ke tujuan tersebut.

Disini akan di bahas secara umum berbagai protokol routing dan kerjanya. Maupun contoh aplikasinya di Linux menggunakan Quangga yang merupakan turunan dari Zebra yang sangat mirip dengan Cisco. Untuk melihat dengan lebih detail kebutuhan dari sebuah router Internet dapat membacanya di RFC 1716 (http://tools.ietf.org/rfc/rfc1716.txt)

Sebagian besar jaringan akan menggunakan kombinasi dari ketiga metoda routing tersebut. Contoh Routing Default Pada jaringan komputer yang sangat sederhana dengan SATU buah router atau gateway ke jaringan yang lebih besar (seperti Internet), teknik menambahkan gateway secara statis dapat menggunakan perintah,

# route add default gw [ip-router-anda] Internet atau default biasanya dapat di presentasikan sebagai komputer dengan IP address 0.0.0.0 dengan netmask 0.0.0.0. Cek apakah tabel routing di komputer / router sudah benar menggunakan perintah

# netstat -nr Misalnya, untuk gateway 192.168.0.222 hasilnya kira-kira

Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.0.222 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Perhatikan pada tabel terlihat jelas bahwa untuk destination 0.0.0.0 dan netmask 0.0.0.0. di sambungkan ke gateway 192.168.0.222.

Tentunya bagi jaringan yang kompleks dengan router / gateway yang lebih dari satu kita tidak mungkin menggunakan teknik sederhana tersebut. Kita perlu menggunakan teknik routing dynamic. Contoh Routing Statik Untuk membuat sebuah aturan routing statik pada tabel routing tidak sukar. Perintah routing statik sebetulnya sederhana saja, yaitu,

# route add -net ip-address-jaringan-tujuan/prefix gw ip-addres-gateway contoh

# route add -net 192.168.13.0/24 gw 192.168.0.33 sehingga semua paket menuju jaringan 192.168.13.0/24 (254 mesin) akan di forward / di relay melalui gateway / router 192.168.0.33. Perintah routing statik ini harus di tulis di semua mesin yang ada di jaringan agar, semua mesin mengetahui keberadaan jaringan. Bayangkan kita memiliki dua (2) buah LAN tersambung melalui router seperti tampak pada gambar. Gambar 37: Contoh jaringan dengan routing statik

Dalam gambar di perlihatkan, ada • Dua (2) LAN dengan keluarga IP address 192.168.0.0/24 dan 192.168.13.0/24. • Router memiliki dua (2) LAN card dengan IP address 192.168.0.33 dan 192.168.13.33. • Komputer 1 berada di LAN 1 mempunyai IP address 192.168.0.3. • Komputer 2 berada di LAN 2 mempunyai IP address 192.168.13.3.

Router dapat dibuat menggunakan semua laptop yang kita tambahkan sebuah LAN USB agar mempunyai dua (2) buah LAN card. Sistem operasi yang digunakan di router dapat menggunakan Linux Desktop, atau kalau cukup berani dapat menggunakan Ubuntu Server.

Agar komputer 1 dapat berkomunikasi ke komputer 2, maka seluruh peralatan komputer yang ada di jaringan, baik itu komputer 1, komputer 2, dan router harus di set tabel routing-nya agar mengetahui di keberadaan masing-masing jaringan. Untuk itu, maka,

Contoh Konfigurasi Routing Pada Komputer 1 Untuk komputer linux biasa, routing pada komputer 1 di set

# ifconfig eth0 192.168.0.3 netmask 255.255.255.0 # route add -net 192.168.13.0/24 gw 192.168.0.33 # echo 1 > /proc/sys/net/ipv4/ip_forward

Kalimat terakhir men-set agar mesin Linux bersedia merelay atau memforward IPv4. Jika ini tidak di set, maka router tidak akan bersedia untuk merelay paket. Masukan perintah “echo 1 > /proc/sys/net/ipv4/ip_forward” ke file /etc/rc.local agar tidak hilang jika booting. Khusus untuk Ubuntu, kita perlu memasukannya dalam bentuk perintah di file /etc/network/interfaces

auto eth0 iface eth0 inet static address 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255 up route add -net 192.168.13.0/24 gw 192.168.0.33 dev eth0

Selanjutnya, cek netstat -nr, pastikan ada arah routing ke 192.168.13.0/24 melalui 192.168.0.33

Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.13.0 192.168.0.33 255.255.255.0 UG 0 0 0 eth0

Contoh Konfigurasi Routing Pada Router Routing pada router praktis kita hanya perlu menset

# ifconfig eth1 192.168.0.33 netmask 255.255.255.0 # ifconfig eth0 192.168.13.33 netmask 255.255.255.0 # echo 1 > /proc/sys/net/ipv4/ip_forward

Kalimat terakhir men-set agar mesin router Linux bersedia merelay atau memforward IPv4. Jika ini tidak di set, maka router tidak akan bersedia untuk merelay paket. Masukan perintah “echo 1 > /proc/sys/net/ipv4/ip_forward” ke file /etc/rc.local agar tidak hilang jika booting. Khusus untuk Ubuntu, kita perlu memasukannya dalam bentuk perintah di file /etc/network/interfaces

auto eth0 iface eth0 inet static address 192.168.13.33 netmask 255.255.255.0 broadcast 192.168.13.255

auto eth1 iface eth1 inet static address 192.168.0.33 netmask 255.255.255.0 broadcast 192.168.0.255

Cek netstat -nr, pastikan ada arah routing ke 192.168.0.0/24 dan 192.168.13.0/24.

Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.13.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Contoh Konfigurasi Routing pada Komputer 2 Routing pada komputer 2 di set

# ifconfig eth1 192.168.13.3 # route add -net 192.168.0.0/24 gw 192.168.13.33 # echo 1 > /proc/sys/net/ipv4/ip_forward Kalimat terakhir men-set agar mesin router Linux bersedia merelay atau memforward IPv4. Jika ini tidak di set, maka router tidak akan bersedia untuk merelay paket. Masukan perintah “echo 1 > /proc/sys/net/ipv4/ip_forward” ke file /etc/rc.local agar tidak hilang jika booting. Khusus untuk Ubuntu, kita perlu memasukannya dalam bentuk perintah di file /etc/network/interfaces

auto eth1 iface eth1 inet static address 192.168.13.3 netmask 255.255.255.0 broadcast 192.168.13.255 up route add -net 192.168.0.0/24 gw 192.168.13.33 dev eth1

Cek netstat -nr, pastikan ada arah routing ke 192.168.0.0/24 melalui 192.168.13.33

Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.0.0 192.168.13.33 255.255.255.0 UG 0 0 0 eth1 192.168.13.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

Cek Sambungan Setelah semua komputer dan router terkonfigurasi dengan baik, yang perlu kita lakukan adalah cek sambungan secara bertahap pengunakan ping.

Dari Komputer 1, lakukan

ping 192.168.0.33 ping 192.168.13.33 ping 192.168.13.3

Atau jika ingin lebih sederhana kita dapat menggunakan perintah

# tracepath 192.168.13.3 Akan keluar kira-kira sebagai berikut

1: 192.168.0.3 0.139ms pmtu 1500 1: 192.168.0.33 0.463ms 1: 192.168.0.33 0.436ms 2: 192.168.13.3 7.012ms reached Resume: pmtu 1500 hops 2 back 63

Lakukan pengecekan dari arah sebaliknya untuk memastikan bahwa komputer 2 pun tersambung ke komputer 1.

Protokol Routing Yang Banyak Digunakan Agar hidup kita lebih enak, berbagai tata cara untuk menyebarkan informasi routing secara automatis mulai di kembangkan. Menggunakan protokol routing, kita dapat meminimalkan konfigurasi manual secara statik. Pada dasarnya ada dua (2) keluarga protokol routing, yaitu: 1. Interior Gateway Protocol (IGP), adalah nama generik keluarga protokol yang membantu pertukaran informasi routing antar router dalam sebuah jaringan autonomous, seperti LAN dalam sebuah perusahaan. IGP biasanya digunakan untuk wilayah pada geografis yang terbatas. Contoh IGP adalah RIP dan OSPF.

2. Exterior Gateway Protocol (EGP), adalah nama generik keluarga protokol yang digunakan untuk membantu pertukaran informasi routing antara dua mesin antar jaringan / sistem autonomous. EGP biasanya digunakan antar mesin di Internet untuk saling bertukar tabel routing. Contoh EGP adalah BGP.

Sedikit lebih detail dari masing-masing protokol routing ini adalah sebagai berikut:

• OSPF - , sebuah Interior Gatesway Routing Protocol yang dikembangkan untuk jaringan berbasis IP yang berdasarkan algoritma untuk mencari jalur terpendek lebih dulu (shortest path first) atau link-state.

Router yang menggunakan algoritma link-state akan mengirimkan informasi routing ke semua node di jaringan dengan menghitung sambungan terpendek (shortest path) ke setiap node berbasis pada topografi dari Internet yang di bentuk oleh setiap node. Setiap node akan mengirimkan bagian dari tabel routing (sambil terus memonitor route ke tujuan network tertentu) yang menjelaskan tentang status dari sambungan dia, router juga akan mengirimkan struktur routing (topografi) lengkap.

Keuntungan menggunakan algoritma sambungan terpendek (shortest path) akan menghasilkan update kecil-kecil yang lebih sering di mana-mana di jaringan. Tabel routing akan lebih cepat convergen, oleh karena akan menghindari masalah looping routing, count- to-infinity (pada saat router terus menerusn menaikan hop count ke arah sebuah jaringan). Hal-hal ini akan menyebabkan jaringan yang tidak stabil.

Keburukan dari algoritma sambungan terpendek (shortest path first) membutuhkan memory dan kekuatan CPU yang besar. Walau pada akhirnya lebih banyak keuntungan yang di peroleh dari pengorbanan yang harus di lakukan.

OSPF versi 2, yang di terangkan di RFC 1583, (http://www.ietf.org/rfc/rfc1583.txt) pada hari ini banyak menggantikan RIP di Internet.

• RIP - Routing Information Protocol, adalah sebuah Interior Gateway Protocol. RIP versi 2 (RIP-2) diterangkan di RFC 2453, (http://tools.ietf.org/rfc/rfc2453.txt) menerangkan bagaimana router saling bertukar informasi tabel routing menggunakan algoritma distance vector. Dengan RIP, sebuah router tetangga akan secara periodik mengirimkan seluruh table routing yang ada di router tetangga tersebut. RIP menggunakan jumlah hop (hop count) yang di lewati sebagai metric perhitungan untuk biaya jalur (path cost). Path / jalur yang dapat dilewati di batasi 16 hop. RIP menjadi semakin tidak effisien di Internet karena jaringan terus berkembang. Beberapa protokol routing berbasis RIP yang masih digunakan di LAN, antara lain adalah NetWare, AppleTalk, VINES, dan DECnet. IANA mencatat daftar RIP message types (http://www.iana.org/assignments/rip-types/rip-types.xml).

• OLSR - Optimized Link State Routing Protocol di terangkan pada dokumen RFC 3626 (http://www.ietf.org/rfc/rfc3626.txt) OLSR adalah sebuah protocol routing untuk IP yang di optimisasi untuk jaringan mobile ad-hoc, yang juga dapat digunakan pada jaringan wireless ad-hoc atau lebih sering di kenal sebagai wireless mesh. OLSR adalah sebuah protocol link- state routing yang proactif, yang menggunakan message hello dan topology control (TC) untuk mengetahui dan mendiseminasikan informasi link state di seluruh jaringan mobile ad- hoc. Masing-masing node menggunakan informasi topologi untuk menghitung next hop yang dituju untuk semua node di jaringan menggunakan shortest hop forwarding paths. Lebih dalam tentang OLSR bisa di baca di buku “Jaringan MESH: Solusi Jitu Membangun Jaringan Wireless Gotong Royong Tanpa Access Point” di terbitkan oleh Andipublisher.com

• IGRP - Interior Gateway Routing Protocol, adalah prorietary network protocol yang dikembangkan oleh Cisco System yang dirancang untuk bekerja dalam sebuah Autonomous System. (http://docwiki.cisco.com/wiki/Interior_Gateway_Routing_Protocol) IGRP adalah distance-vector routing protocol yang artinya setiap router akan mengirimkan semua atau sebagian dari tabel routingnya dalam message routing update pada interval tertentu ke setiap router tetangga. Sebuah router akan memilih jalur terbaik antara sumber dan tujuan. Karena setiap jalur mungkin terdiri dari banyak sambungan, system perlu cara untuk membandingkan berbagai sambungan untuk menentukan jalur yang terbaik. Berbeda dengan RIP yang hanya mempunyai satu kriteria (hop saja), IGRP menggunakan lima (5) kriteria untuk menentukan jalur terbaik, yaitu, kecepatan sambungan, delay, panjang paket, beban jaringan dan reliabilitas. Seorang network administrator dapat menentukan bobot dari masing-masing kriteria untuk menentukan jalur terbaiknya.

• EIGRP - Enhanced Interior Gateway Routing Protocol (http://en.wikipedia.org/wiki/Enhanced_Interior_Gateway_Routing_Protocol) , adalah evolusi dari IGRP yang berusaha memenuhi kebutuhan jaringan skala besar dan perubahan di teknologi jaringan sejak diimplementasikannya IGRP. Router yang menggunakan IGRP dapat menggunakan EIGRP karena metrics yang digunakan oleh kedua protokol ini dapat saling translasi. Jika tidak ada route yang baik, EIGRP akan meminta pada tetangga untuk mencari alternatif route. Permintaan ini akan di propagasikan ke router yang lain sampai di peroleh route alternatif. Berbeda dengan IGRP, EIGRP menggunakan Diffusing-Update Algorithm (DUAL) yang di kembangkan di SRI International.

• BGP - Border Gateway Protocol versi 4 (BGPv4) adalah exterior gateway protocol yang memungkinkan sekumpulan router dikenal sebagai autonomous system untuk saling berbagi informasi routing. BGP menggunakan protocol distance vector, seperti RIP, tapi tidak seperti protocol distance vector yang lain, tabel BGP juga menyimpan informasi route yang sebenarnya ke jaringan yang dituju. BGP juga mendukung kebijakan routing, yang memungkinkan network administrator untuk mengatur routing berdasarkan masalah keamanan, politik, legal, atau ekonomis bukan hanya sekedar berdasarkan teknis saja. BGP juga mendukung CIDR. BGPv4 di jelaskan di RFC 1771 (http://www.ietf.org/rfc/rfc1771.txt), sedang RFC 1268 (http://tools.ietf.org/rfc/rfc1268.txt) menjelaskan penggunakan BGP di Internet. Di samping itu, IANA memaintain daftar dari BGP Parameters. (http://www.iana.org/assignments/bgp-parameters/bgp-parameters.xml)

Autonomous System (AS) adalah sebuah group dari jaringan yang beroperasi di bawah administrasi bersama, yang menggunakan metodologi routing yang sama. Sebuah AS akan menggunakan Internal Gateway Protocol (IGP) dan metrik yang sama untuk membuat route paket dalam AS. AS akan menggunakan External Gateway Protocol (EGP) untuk membuat route paket ke Autonomous System (AS) yang lain.

Alternatif terakhir yang paling sederhana, tabel routing dibuat menggunakan “routing statis”. Contoh sederhana sebuah routing statis adalah penggunaan default gateway pada sebuah mesin. Sehingga tanpa perlu berfikir panjang, sebuah mesin yang ingin menghubungi mesin lain di luar LAN cukup mengirimkan paket-nya ke gateway. Router-router penghubung LAN corporate ke Internet pun biasanya menggunakan statik routing yang mengarahkan semua traffic ke Internet dari LAN untuk di arahkan ke router ISP. Karena hanya satu jalur menuju ISP maka protokol routing jarang dibutuhkan pada konfigurasi seperti ini.

Semua mesin & router akan menjaga tabel routingnya masing-masing yang berisi informasi routing terkini. Pada shell di Linux, kita dapat melihat isi tabel routing menggunakan perintah

netstat –r atau

netstat -nr atau

route -n Contoh keluaran adalah sebagai berikut

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.222 0.0.0.0 UG 0 0 0 eth1 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.13.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Masing-masing protocol routing mempunyai hubungan yang berbeda-beda dengan keluarga protocol TCP/IP. Message RIP biasanya di bawa oleh datagram UDP yang tentunya berjalan di atas paket IP. Message OSPF biasanya di bawa langsung di atas datagram IP. BGP berbeda sama sekali, message BGP di kirim di atas TCP yang berjalan di atas IP.

Umumnya semua buku TCP/IP akan mendiskusikan IP routing dengan cukup detail. Salah satu buku yang baik tentang IP routing adalah “Routing in the Internet” oleh Christian Huitema. Harganya lumayan sekitar US$50-an. Pemilihan Protokol Routing Ada dua (2) kelas protokol routing, yaitu, 1. protokol link state 2. protokol distance vector. Perbandingan ke duanya adalah sebagai berikut,

Protokol Link State Protokol Distance Vector ISIS, OSPF,OLSR RIP, IGRP Informasi yang dikirim: Informasi yang dikirim:  Menjelaskan kondisi sambungan  Ke semua jaringan yang di ketahui yang tersambung ke router. router, tidak hanya ke jaringan yang  Alokasi IP network / subnet. router tsb tersambung.  Biaya dari link (dihitung kebalikan  Router yang mengadvertise akan dari bandwidth). menambah metric / hop-count dari router yang dia dengar. Maksimum hop-count 15.

Keuntungan: Keuntungan:  Lebih scalability, tidak ada hop  Konfigurasi sederhana. count, mendukung VLSM dan CIDR, hirarki dan memungkinkan aggregasi.  Lebih cepat konvergen, secara langsung membanjirkan link state ke jaringan, dan lebih sedikit over head untuk pertukaran informasi routing.  Memungkinkan load balancing melalui link cost.

Kerugian: Kerugian:  Lebih susah di konfigurasi dan di  Tidak memperhitungkan kecepatan troubleshoot. link.  Lambat konvergensi.  Lebih banyak pertukaran dan maintenance tabel routing.  Timer hold-down / flush memperlambat konvergensi menjadi menit.  Ada kemungkinan routing loop temporer.  Tidak terlalu scalable, kurang hirarki.  Classful, kurang kemampuan VLSM dan CIDR.

Tergantung dari keperluan / kompleksitas jaringan, protokol yang digunakan mungkin dapat berbeda-beda. Tentunya yang paling sederhana adalah menggunakan routing statis & tidak menggunakan protokol sama sekali. Pada Interior Gateway Protocol (IGP), ada beberapa kriteria dalam pemilihan protokol routing adalah sebagai berikut:

RIPv1 RIPv2 IGRP OSPF OLSR EIGRP Sambungan redundan X X V V V V Sambungan paralel X X V V V V VLSM X V X V V V IP address diskontinyu X V X V V V

EIGRP pada dasarnya proprietary dari Cisco, sementara OSPF dan OLSR merupakan standard terbuka Internet, jadi lebih mudah untuk di implementasikan di jaringan yang menggunakan router non-Cisco.

VLSM adalah Variable Length Subnet Masking yang memungkinkan kita melakukan masking IP address tidak mengikuti standard masking konvensional. Routing Sederhana Routing dalam artian yang sederhana berarti melewatkan paket IP menuju sasaran. Alat yang berfungsi melakukan routing paket biasanya disebut sebagai router atau gateway. Agar mampu melewatkan paket data antar jaringan, maka router minimal harus memiliki dua buah network interface.

Proses routing dilakukan secara hop by hop. IP tidak mengetahui jalur keseluruhan menuju tujuan setiap paket. IP routing hanya menyediakan IP address dari router berikutnya (next hop router) yang menurutnya “lebih dekat” ke host tujuan.

Gambar 38: Proses Routing merupakan proses hop-by-hop

Sebuah mesin / komputer hanya dapat mengirim paket pada divais lain yang terhubung kedalam satu jaringan fisik yang sama. Paket dari IP addressA1 dengan tujuan IP address C1 diforward melalui router G1 dan G2. Host A1 pertama kali mengirim paket ke router G1 (karena G1 terhubung ke tempat dimana host A1 berada). Kemudian router G1 mengirimkan paket ke router G2 melalui network B. Dan akhirnya G2 yang juga terhubung ke network C langsung menyampaikan paket ke address tujuan, host C1.

Perhatikan dalam setiap paket yang dikirim IP source A1 dan IP destination C1 tetap & tidak berubah. Tapi MAC address source dan MAC address tujuan akan berubah-ubah dalam setiap paket tergantung mesin yang merelay paket tersebut.

Jika kita perhatikan baik-baik, maka keberadaan Address Resolution Protocol (ARP) sangat penting untuk dapat memperoleh tabel MAC & IP address. Algoritma routing untuk host Proses routing yang dilakukan oleh host cukup sederhana. Jika host tujuan terletak di jaringan yang sama/terhubung langsung, IP datagram dikirim langsung ke tujuan. Jika tidak, IP datagram dikirim ke default router. Router ini yang akan mengatur pengiriman IP selanjutnya, hingga sampai ke tujuannya.

Konfigurasi sederhana ini dapat kita lihat di konfigurasi networking di komputer desktop yang kita gunakan, yang kita cukup memasukan sebuah IP address gateway yang mengarahkan IP paket ke Internet. Algoritma routing untuk router Dalam menentukan pilihan arah pelewatan IP datagram, router berkonsultasi dengan tabel routing yang dimilikinya berikut ini adalah contoh dari sebuah tabel routing.

[root@gate ~]# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 202.100.10.32 0.0.0.0 255.255.255.240 U 0 0 0 wlan0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 44.132.0.0 192.168.0.1 255.255.0.0 UG 0 0 0 eth1 0.0.0.0 202.100.10.33 0.0.0.0 UG 0 0 0 wlan0 [root@gate ~]#

Dari hasil perintah netstat –nr diatas terlihat tabel routing ini berisi:

1. IP address tujuan 2. IP address next hop router (gateway) 3. Flag. Flag ini menyatakan jenis routing. 4. Spesifikasi Network interface tempat datagram dilewatkan.

Dalam proses meneruskan paket ke tujuan, IP router melakukan hal hal berikut :

1. Mencari di tabel routing, entry yang cocok dengan IP address tujuan. Jika ditemukan, paket akan di kirim ke next hop router atau interface yang terhubung langsung dengannya (directly connected interface) 2. Mencari di tabel routing, entry yang cocok dengan alamat network dari network tujuan. Jika ditemukan, paket dikirim ke next hop router tersebut. 3. Mencari di tabel routing, entry yang bertanda default. Jika tidak ada alternatif routing yang lain, paket akan dikirim ke router default.

Router default / gateway biasanya dapat di identifikasi dengan router dengan NetMask 0.0.0.0 dan IP tujuan 0.0.0.0. Tabel routing ini dihasilkan oleh program protokol routing.

Dalam bahasa sederhana, IP address 0.0.0.0 dengan di kombinasikan netmask 0.0.0.0 adalah alamat dari semua mesin yang ada di Internet.

Teknik Mengatasi Kelangkaan IP address Ada beberapa teknik dasar yang dapat digunakan untuk mengatasi kelangkaan IP address antara lain adalah:

• Alokasi IP address yang lebih kreatif, menggunakan: a) Teknik Variable Length Subnet Mask (VLSM). b) Menggunakan alokasi blok IP address yang tidak permanen, seperti menggunankan Dynamic Host Configuration Protocol (DHCP). c) Penggabungan beberapa kelas IP address (biasanya kelas C).

• Menggunakan Classless Interdomain Routing (CIDR), di definisikan dalam RFC 1519 (http://www.ietf.org/rfc/rfc1519.txt). • Menggunakan Private IP adddress dan Network Address Translation (NAT). a) Private IP address di definisikan di RFC 1918 (http://tools.ietf.org/rfc/rfc1918.txt). b) Network Address Translation (NAT) di definisikan di RFC 1631 (http://www.ietf.org/rfc/rfc1631.txt).

• Menggunakan IP v6 (http://en.wikipedia.org/wiki/IPv6) yang memungkinkan alokasi IP address yang jauh lebih besar. Variable Length Subnet Mask Kemampuan untuk mengkonfigurasi sebuah jaringan dengan mask yang berbeda-beda. Hal ini membuat pembagian jaringan lebih fleksibel menjadi beberapa subnet walaupun tetap menjaga jumlah mesin yang cukup di masing-masing subnet.

Contoh pembagian kelas address, sebuah address kelas C dengan mask 255.255.255.x, dapat dibagi menjadi:

• 255.255.255.252 (1111 1100) 64 subnet dengan 4 host masing-masing. • 255.255.255.248 (1111 1000) 32 subnet dengan 8 host masing-masing. • 255.255.255.240 (1111 0000) 16 subnet dengan 16 host masing-masing. • 255.255.255.224 (1110 0000) 8 subnet dengan 32 host masing-masing. • 255.255.255.192 (1100 0000) 4 subnet dengan 64 host masing-masing. • 255.255.255.128 (1000 0000) 2 subnet dengan 128 host masing-masing.

Jika kita ingin membagi sebuah kelas menjadi 3 subnet, dengan sebuah subnet 100 host dan dua subnet dengan 50 host, maka VLSM akan dibutuhkan. Catatan tentang VLSM,

• RIPv1 dan IGRP tidak dapat menangani VLSM. • OSPF, EIGRP, ISIS, dan RIPv2 dapat menangani VLSM. • Classless Inter Domain Routing (CIDR)

IP network di representasikan dengan atau NET_ID, HOST_ID. Tidak ada lagi kelas IP address tradisional A/B/C. Lebih merepresentasikan hirarki arsitektur Internet, dimana setiap domain akan mengambil IP address-nya dari tingkat / hirarki yang lebih tinggi.

Memungkinkan beberapa kelas / blok IP address untuk di kumpulkan menjadi satu kumpulan, CIDR blok atau Supernet. Hal ini dapat di identifikasi dengan mudah pada kelas IP address yang mempunyai prefix (atau NET_ID) yang pendek, lebih pendek dari network mask yang normal. Memungkinkan beberapa IP network untuk dijadikan satu dalam sebuah pemberitahuan routing.

Contoh <198.32.0.0/16> merupakan network kelas C yang ilegal. <198.32.0.0/26> merupakan supernet karena netmask 16 lebih kecil dari 24, yang merupakan panjang netmask normalnya. Network 198.32.1.0/20 dapat di identifikasi sebagai jaringan yang lebih spesifik dengan panjang prefix / NET_ID 20.

Keuntungan CIDR, terutama lebih mengarah pada jaringan yang lebih hirarki dan berorientasi geografis. Lebih efisien dalam propagasi & strategi routing. Sangat menghemat bandwidth dalam mempropagasikan route. Aggregasi memungkinkan ISP untuk memberitahukan address di bawahnya dalam satu kalimat saja, daripada banyak kalimat.

Kemungkinan masalah dengan CIDR. CIDR hanya akan bekerja jika setiap orang / pelanggan tersambung ke provider-nya melalui satu sambungan saja (single homing) dan mengambil IP address dari prefix / NET_ID provider. Konfigurasi ini akan sulit bagi pelanggan yang tersambung pada lebih dari provider (multi-homing), atau pelanggan yang sudah mempunyai IP address sendiri.

Gambar 39: Routing dengan CIDR dan tanpa CIDR

Aturan Longest Match Routing

Gambar 40: Routing dengan aturan Longest Matching Routing Routing selalu dilakukan berdasarkan kecocokan yang paling panjang (longest match). Maksudnya, routing akan selalu memilih netmask yang terpanjang dari dua prefix yang berbeda panjangnya untuk sebuah network yang sama. Sebuah tujuan tersambung ke banyak domain harus selalu secara explisit memberitahukan routing se-eksplisit mungkin, tidak dalam bentuk aggregat.

Jika ada dua (2) pilihan routing ke arah mesin 198.32.1.1, melalui Domain A dengan masking 16 bit 198.32.1.0/16 dan melalui Domain B dengan masking 24 bit 198.32.1.0/24. Maka yang akan di pilih adalah masking terpanjang, dalam hal ini jalur 2 untuk network 198.32.1.0 dengan 24 bit masking. Routing Loop Loop routing terjadi jika traffic berjalan bolak balik antar jaringan dan tidak pernah mencapai tujuannya. Cara mengatasinya:

• Tidak boleh mengikuti route yang tidak spesifik untuk tujuan yang match dengan salah satu route aggregat sendiri. • Buang semua paket yang di arahkan ke tujuan yang tidak dapat dihubungi yang tidak sespesifik route aggregat. • Perhatikan adanya “Black hole” dimana traffic mencapai dan berhenti pada tujuan yang sebetulnya bukan yang dituju, tapi dari situ tidak dapat di forward kemana-mana lagi.

Gambar 41: Mengatasi Routing Loop

Skenario Multihoming Multihoming terjadi jika kita mempunyai beberapa saluran ke jaringan lain. Ada beberapa skenario multihoming yang sering digunakan yang akan di bahas. Address Dari Sebuah Provider Yang Sama Advertising aggregate akan menjadi sedikit tricky. Tidak boleh ada yang meng-aggregate route orang lain, kecuali jika

• Pihak yang meng-aggregat adalah superset dari pihak yang di aggregat. • Kedua pihak telah sepakat secara penuh.

Contoh, subnet 198.24.0.0/18 akan membuat blackhole bagi StubNet, karena trafik akan mengikuti longest match dan akhirnya ISP2 tidak akan memiliki route sambungan ke StubNet. Gambar 42: Multihoming dengan Address dari provider yang sama.

Dalam hal ini, aggregat secara explisit harus di advertise ke ISP1 dan ISP2. Jika ISP1 hanya advertise aggregate yang tidak spesifik dari 198.24.0.0/13, maka semua trafik ke arah JamesNet dan LindaNet akan selalu mengikuti longest match melalui ISP2. Gambar 43: Agregat secara explisit di advertise ke ISP1 dan ISP2

Address Di ambil Dari Provider Yang Berbeda Dalam contoh ini, setiap provider akan dapat mengaggregat address-nya masing-masing tanpa perlu mendaftarkan range yang spesifik dari provider yang lain. Kerugiannya,

• Route backup untuk organisasi multihomed tidak di maintain. • Masing-masing hanya akan advertise block-nya saja, tapi tidak dari blok ISP yang lain. • Sebagian dari jaringan akan terputus jika salah satu ISP putus. Gambar 44: Address di ambil dari ISP yang berbeda

Address Di Ambil Tidak Dari Provider Manapun Jika address tidak di ambil dari ISP1, ISP2 maupun NAP, maka semua ISP harus mengadvertise aggregat spesifik ini di atas address mereka.

Kerugiannya, hanya akan menambah besarnya tabel routing di semua router.

Gambar 45: Address tidak di ambil dari ISP manapun Autonomous System (AS) Autonomous System (AS) adalah sekumpulan router yang mempunyai kebijakan routing yang sama, di jalankan di bawah sebuah administrasi teknis. (http://en.wikipedia.org/wiki/Autonomous_system_%28Internet%29) Secara praktisnya,

• Sekumpulan IGP (Interior Gateway Protocol) akan bekerjasama untuk membangun interior routing. • Setiap AS memperoleh nomor identifikasinya, AS Number, yang dialokasikan oleh Internet Registry. Untuk percobaan kita juga mengenal Private AS Number. Private AS Number antara 64512 s/d 65535 bisa digunakan untuk experimen di laboratorium. • Informasi routing antar AS di pertukarkan melalui Exterior Gateway Protocol (EGP) seperti BGPv4.

Gambar 46: Konsep Autonomous System (AS)

Stub AS

Gambar 47: Konsep Stub AS

Merupakan konfigurasi paling sederhana dari sebuah jaringan dimana sebuah autonomous system (AS) mencapai jaringan diluar domain-nya melalui hanya satu pintu yang tersambung ke Provider. Istilah teknis-nya adalah Single Homed AS atau Stub AS. Konfigurasi ini berkonsekuensi,

• Semua traffic default akan dikirimkan ke provider, oleh karena itu tidak ada kebutuhan untuk memperoleh informasi routing dari provider. • Single homed AS tetap mempunyai kebutuhan untuk memberitahukan route yang ada di provider melalui beberapa alternatif cara, antara lain. ◦ Melalui entry statik – baik untuk sekumpulan kecil routing yang di aggregat. ◦ Melalui protokol IGP – biasanya stub AS akan sangat sulit memperoleh AS number karena kebijakan routing cenderung untuk mengikuti kebijakan routing provider oleh karena itu tidak memerlukan AS number yang unik. ◦ Melalui protokol BGP – provider dapat memberikan pelanggan private AS number (dari 65412 sampai dengan 65535).

Multihomed Nontransit AS Konfigurasi multihomed terjadi jika kita mempunyai lebih dari satu pintu ke dunia luar. Beberapa konsekuensi kebijakan non-transit adalah:

• Kita tidak menginginkan adanya trafik transit melalui AS yang kita kontrol. • Tidak ada IP address source atau destination dari luar AS. • AS tidak akan mengadvertise route yang dia pelajari dari AS lain. • Trafik transit sebetulnya masih dapat di paksakan melalui routing default atau routing statik. • Tidak memerlukan BGPv4.

Gambar 48: Multihomed non-transit AS

Multihomed Transit AS Multihomed karena mempunyai lebih dari satu sambungan ke dunia luar. Transit memungkinkan trafik dilakukan melalui jaringan AS yang kita kontrol. Beberapa konsekuensi multihomed transit AS adalah,

• Menggunakan BGP di dalam AS sebagai pipa untuk mempertukarkan update BGP (IBGP). • Router yang menjalankan IBGP di kenal sebagai transit router. • Router yang menjalankan EBGP di kenal sebagai border router. • Akan meng-advertise route yang dipelajari dari AS yang lain. Gambar 49: Multihomed transit AS

Implementasi Routing Menggunakan Quangga Pasti sebagian besar pembaca pernah mendengar nama besar Cisco, Juniper Network, Mikrotik atau untuk peralatan jaringan yang baik.

Tapi bagaimana dengan Linux? Linux pada hari ini sangat baik untuk server, sedikit yang menyadari bahwa Linux mempunyai potensi yang sangat baik sebagai router. Dengan GNU Zebra atau turunan yang terbarunya Quangga, sebuah mesin Linux dapat menjadi router yang mendukung routing protokol TCP/IP, seperti, RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGPv4, dan BGPv4+. Bagi anda yang ingin serius menggunakan Linux untuk router hardware, lebih baik melirik OpenWRT dan membeli hardware yang bisa flash dengan sistem operasi OpenWRT. Daftar hardware yang bisa di flash menggunakan OpenWRT bisa di baca di http://wiki.openwrt.org/toh/start

Project Zebra di mulai tahun 1996, berasal dari Kunihiro Ishiguro yang bekerja di NIS, sebuah ISP yang merupakan kerjasama antara British Telecom dan Marubeni. Bekerja di ISP, Ishiguro menyadari kebutuhan software routing yang baik. Pada saat itu Ishiguro bertemu Yoshinari Yoshikawa. Yoshikawa mempunyai visi yang sama dengan Ishiguro, akhirnya mereka bersatu untuk secara bahu membahu membangun software routing engine pertama di dunia yang berbasis pada GNU General Public License.

Entitas ini di sebut Zebra Project, yang terdiri atas keahlian bisnis IP Infusion yang digabung dengan keahlian teknis beberapa engineer networking dunia yang terbaik dan komit untuk memberikan free software routing engine yang berkualitas baik. Quagga adalah routing software open source berbasis pada routing software Zebra, yang berhenti pengembangannya di tahun 2003.

Quagga terdiri dari beberapa daemon, satu daemon untuk sebuah protokol routing. Sebuah daemon bernama Zebra merupakan manager routing kernel. Setiap daemon mempunyai file konfigurasi dan interface terminal yang dapat di akses menggunakan telnet. Tool vtysh, sebuah interface yang unik, tersedia untuk mengkonfigurasi router Quagga dari localhost. Quagga bekerja secara independent / tidak tergantung pada sistem operasi yang digunakannya. Hal ini berbeda dengan open source router Vyatta atau komersial router yang mana sistem operasi-nya built in menjadi satu dengan routing engine-nya.

Quagga tidak memberikan layanan “non-routing”, seperti DHCP server, NTP server/client atau ssh. Ini perlu di berikan oleh sistem operasi yang digunakan Quagga.

RFC QUAGGA VYATTA CISCO CISCO 0.99.6 VC 3.0 2651 3750 L3

Tipe Software IOS-Like JunOS-Like Cisco IOS Cisco IOS Opensource Y Y N N Instalasi Y Y N N

Routing Statik Y Y Y Y RIPv2 2453 Y Y Y Y OSPFv2 2328 Y Y Y Y BGPv4 1771/4271 Y Y Y Y

NAT 2766 N/Linux Y Y N VRRP 3768 N/Linux Y Y N Access List Y Y Y Y Route map Y Y Y Y VPN IPSec 4301 N/Linux Y Y Y VPN SSL N/Linux N/Linux N N

FTP Client 959 N/Linux Y Y Y TFTP Client 1350 N Y Y Y Telnet Server 854 Y Y Y Y Ssh server 4251 N/Linux Y Y/N Y/N HTTP Server N Y Y Y

DHCP Server 2131 N/Linux Y Y Y DHCP Relay N/Linux Y Y Y NTP Server 1305 N/Linux N Y/N N NTP Client 1305 N/Linux Y Y Y SNMP 3412/1157 Y Y Y Y ping Y Y Y Y traceroute Y Y Y Y

Membuat Sendiri Router Yang Baik Jika kita pernah membuat sebuah firewall, sebetulnya kita sudah membuat sebuah router yang sederhana. Pada kesempatan ini kita akan membuat sebuah router Linux yang dapat berkomunikasi menggunakan protokol routing dinamik. Protokol ini memungkinkan sebuah router untuk bicara satu sama lain dan berbagi informasi tentang jalur-jalur yang ada di jaringan. Hal ini sangat penting di jaringan yang besar seperti Internet dimana routing statik tidak mungkin digunakan.

Contoh, walaupun hanya rangkuman dari informasi routing yang dikirim saja, tabel Border Gateway Protocol (BGP) di Internet akan berisi lebih dari 100,000 line / kalimat. Di tambah dengan kecepatan perubahan yang terjadi di Internet, maka penggunakan routing statik di Internet sangat mustahil. Kebutuhan akan routing dynamic sangat nyata, bahkan untuk jaringan yang lebih kecil dari Internet, seperti jaringan corporate sangat terasa.

BGP, adalah External Gateway Protocol (EGP), yang merupakan tulang punggung routing di Internet. Untuk jaringan yang kecil, Open Shortest Path First (OSPF) yang merupakan Internal Gateway Protocol (EGP) adalah salah satu yang banyak digunakan. GNU Zebra dan Quangga adalah software open source yang memungkinkan kita menjalankan BGP dan / atau OSPF di Linux. Menginstalasi Quagga Dalam proses instalasi Quagga kita dapat melakukan beberapa hal. Misalnya melihat versi Quagga yang tersedia di repository dapat menggunakan perintah

# apt-cache policy quagga Tergantung repository yang anda gunakan, akan keluar kira-kira sebagai berikut,

quagga: Installed: (none) Candidate: 0.99.21-3 Version table: 0.99.21-3 0 500 http://192.168.0.2/ubuntu-12.10-64/ quantal/main amd64 Packages 0.99.20.1-0ubuntu0.12.04.3 0

Untuk menginstalasi Quagga cukup sederhana sekali dapat menggunakan perintah

# apt-get install quagga

Konfigurasi Quagga Jika kita familiar dengan sistem operasi Cisco IOS, seharusnya kita tidak terlalu masalah untuk membuat Quagga dalam waktu singkat. Setiap sesi Quagga akan menggunakan VTY untuk memungkinkan konfigurasi dinamik melalui telnet. Sehingga jika kita ingin mengkonfigurasi OSPF, kita cukup telnet ke Linux port 2604. Untuk mengubah tabel routing di kernel atau untuk mengkonfigurasi redistribuasi antara protokol routing, kita harus telnet ke port 2601. Pada dasarnya daemon Quagga berfungsi sebagai manager yang menangani komunikasi antar daemon dengan sistem itu sendiri. Konfigurasi Quagga untuk Routing Statik Mari kita melakukan routing statik sama seperti sebelumnya pada jaringan seperti tampak pada gambar. Hanya bedanya, sekarang kita akan menggunakan Quagga di Router.

Lakukan pada mesin router langkah berikut. • Pastikan daemon zebra di aktifkan, ketik perintah berikut,

# vi /etc/quagga/daemons pastikan zebra=yes

zebra=yes bgpd=no ospfd=no ospf6d=no ripd=no ripngd=no isisd=no • Restart layanan quagga,

# /etc/init.d/quagga restart Masukan juga perintah di atas ke /etc/rc.local • Konfigurasi the Router hostname di file /etc/quagga/vtysh.conf:

# vi /etc/quagga/vtysh.conf isi dengan

! ! Sample ! ! service integrated-vtysh-config hostname RouterQuagga username root nopassword !

• Konfigurasi zebra

# vi /etc/quagga/zebra.conf isi dengan

interface eth0 ip address 192.168.13.33/24 link-detect

interface eth1 ip address 192.168.0.33/24 link-detect

ip route 0.0.0.0 0.0.0.0 192.168.0.222

line vty no login enable password password

Setelah di jalankan coba lakukan

telnet localhost 2601 ketik perintah misalnya

show ip route akan keluar kira-kira

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP, A - Babel, > - selected route, * - FIB route

S>* 0.0.0.0/0 [1/0] via 192.168.0.222, eth1 C>* 127.0.0.0/8 is directly connected, lo C>* 192.168.0.0/24 is directly connected, eth1 C>* 192.168.13.0/24 is directly connected, eth0

Coba lakukan ping dari komputer 1 ke komputer 2 dan pastikan ada responds dari ping tersebut.

Konfigurasi Quagga untuk Routing Dinamik dengan RIP Untuk experimen routing dinamik menggunakan RIP, kita membuat jaringan yang lebih kompleks dengan dua buah Router yang saling memberitahukan tabel routing yang ada satu sama lain menggunakan protokol RIP. Jika RIP berjalan dengan baik, maka tabel routing pada Router 1 dan Router 2 akan terupdate dengan baik dan automatis sehingga komputer 1 dapat berkomunikasi dengan baik ke komputer 2. Gambar 50: Routing dynamic menggunakan Quagga

Pada komputer 1 dan komputer 2 kita hanya menset route default saja. Yaitu, pada komputer 1,

Konfigurasi Quagga untuk Routing Dinamik dengan OSPF Mari kita lihat bagaimana cara membuat OSPF dan BGP beroperasi di server. Zebra pada dasarnya menggunakan file konfigurasi berbentuk text. Untuk router OSPF / BGP file konfigurasi yang digunakan adalah zebra.conf, ospfd.conf dan bgpd.conf.

Isi file zebra.conf, adalah sebagai berikut

! Zebra configuration saved from vty ! 2002/02/28 01:46:12 ! hostname LinuxRouter password zebra enable password z3bRa log file /var/log/zebra/zebra.log ! interface eth0 description Interface to External Network ip address 10.0.0.1/24 ! interface eth1 description Interface to Internal Network ip address 192.168.66.1/24 secara umum konfigurasi minimal / sederhana dari zebra.conf cukup menjelaskan. Zebra / Quangga dapat menggunakan banyak tipe network interface, baik itu Ethernet, ISDN dll. asal dikenal oleh kernel.

Subnet masking dilakukan dengan network bit (contoh /24) berbeda dengan full mask (contoh 255.255.255.0). Perhatikan ada dua jenis password, satu untuk user mode satu lagi untuk privileged mode. Hal ini sangat penting untuk memberikan akses pada pengguna nonadministrator, dan sangat penting jika kita membuat router server atau looking glass.

Seorang BGP admin akan mengatakan betapa pentingnya looking glass ini untuk melakukan perbaikan routing, karena looking glass mungkinkan kita melihat route yang ada di luar AS kita sendiri. AS singkatan dari Autonomous System, pada dasarnya group dari peralatan yang berada dalam kebijakan atau administrasi yang sama. BGP Routing dilakukan oleh AS Number. AS number di kontrol oleh Network Information Center, seperti ARIN, APNIC, RIPE NCC dll.

Langkah selanjutnya untuk memulai program Zebra, kita dapat menggunakan perintah berikut:

/usr/sbin/zebra –dk /usr/sbin/ospfd –d /usr/sbin/bgpd –d

Perintah pertama adalah untuk menjalankan zebra. Zebra akan mengupdate tabel routing di kernel. Switch –dk memberitahukan program untuk beroperasi sebagai daemon (“d”), dan akan beroperasi di belakang layar. Switch “k” memberitahukan Zebra untuk “keep” menyimpan semua tabel routing yang telah di konfigurasi sebelumnya. Hal ini sangat penting jika kita tidak ingin agar tabel konfigurasi di Zebra terhapus secara tidak sengaja.

Biasanya, route dan interface di konfigurasi menggunakan kombinasi perintah ifconfig dan route. Zebra pada dasarnya mengubah secara keseluruhan bentuk route management-nya. Mengkonfigurasi OSPF Untuk memulai konfigurasi OSPF kita dapat telnet ke port 2604. Untuk memasuki privileged mode dapat dilakukan dengan menulis “enable” dan memasukan password privileged mode. Mode konfigurasi di akses melalui configuration terminal command. Zebra / Quagga juga mau menerima singkatan yang sama dengan Cisco. Juga menerima perintah “list” dan “?”, yang akan memberikan daftar perintah yang ada dan penjelasan singkat.

Anda juga akan suka melihat “tab completion” / tombol tab untuk melengkapi perintah juga di dukung. Feature ini sangat baik, terutama jika anda sudah biasa dengan itu. Selanjutnya kita akan memberitahukan daemon tentang jaringan mana yang akan di beritahukan melalui OSPF, termasuk pemberitahuan area-nya. OSPF mendukung banyak area untuk scalability.

Untuk memasuki mode konfigurasi OSPF dapat dilakukan dengan menulis router ospf. Dengan perintah network 192.168.66.0/24 area 0, memberitahukan router bahwa kita akan menggunakan OSPF untuk memberitahukan keberadaan network 192.168.66.9 dengan subnet mask 255.255.255.0.

Dalam contoh ini, kita akan membuat interface eth0 menjadi interface passive sehingga routing update yang ada tidak akan di keluarkan dari interface ini. Hal ini penting untuk proses testing jika router lain di arah eth0 kemungkinan akan mendengarkan. Proses membuat passive interface dapat dilakukan menggunakan perintah passive-interface eth0. Jika kita telah membuat perubahan, keluar dari mode konfigurasi dengan menulis “end” dan simpan hasilnya dengan perintah “write file”. Tampak disini adalah cuplikan dari apa yang kita lakukan.

labrat:~# telnet 0 2604 Trying 0.0.0.0... Connected to 0. Escape character is '^]'.

Hello, this is zebra (version 0.84b) Copyright 1996-2000 Kunihiro Ishiguro

User Access Verification

Password: ospfd> enable Password: ospfd# configure terminal ospfd(config)# router ospf ospfd(config-router)# network 192.168.66.0/24 area 0 ospfd(config-router)# passive-interface eth0 ospfd(config-router)# end ospfd# write file Configuration saved to /etc/zebra/ospfd.conf

Ingat bahwa agar OSPF atau BGP dapat beroperasi di atas sebuah interface, interface tersebut harus nyala (“up”). Untuk secara manual menyalakan sebuah interface, login ke port 2601, jalankan perintah “no shut” pada interface yang bersangkutan. Mengkonfigurasi BGP Mengkonfigurasi BGP tidak berbeda jauh dengan OSPF. Untuk memulai, lakukan telnet ke port 2605.

Setelah menjalankan perintah “configure terminal”, masuk ke mode konfigurasi BGP dengan menuliskan “router bgp ”. BGP menggunakan AS number untuk mebangun hubungan dengan tetangganya. Dalam lingkungan testing, kita harus menggunakan AS number private, dalam range 64512 sampai 65534.

Jaringan yang akan di advertise oleh BGP harus di masukan dalam perintah network. Tidak ada perintah “area” dalam BGP, oleh karena itu network command kita hanya “network 192.168.66.0/24”. Berbeda dengan OSPF, tetangga BGP harus secara statis di set. Kita dapat menset-nya melalui perintah berikut: “neighbor remote-as ”. Berikut adalah contoh cuplikan yang akan terjadi:

labrat:~# telnet 0 2605 Trying 0.0.0.0... Connected to 0. Escape character is '^]'.

Hello, this is zebra (version 0.84b) Copyright 1996-2000 Kunihiro Ishiguro

User Access Verification

Password: bgpd> enable Password: bgpd# configure terminal bgpd(config)# router bgp 65530 bgpd(config-router)# network 192.168.66.0/24 bgpd(config-router)# neighbor 10.0.0.5 remote-as 65531 bgpd(config-router)# end bgpd# write file Configuration saved to /etc/zebra/bgpd.conf

Ada banyak option yang dapat dikembangkan dari OSPF dan BGP, ada baiknya kita mempelajari berbagai manual dan dokumentasi tentang routing sebelum memasukannya ke dalam lingkungan produksi. Referensi • http://lartc.org/ • http://www.tldp.org/guides.html • http://www.cisco.com BAB 10: Transport Layer

Dalam keluarga protocol TCP/IP ada dua (2) protocol yang kira-kira equivalent dengan lapisan transport dan session di OSI. Protokol ini di kenal sebagai Transmission Control Protocol (TCP) dan User Datagram Protocol (UDP). Kedua protokol ini mengatur aliran data antara dua (2) host di Internet yang saling berkomunikasi secara reliable (andal). Kadang orang berargumentasi bahwa ada kesalahan penamaan dengan menyebutkan “aplikasi TCP/IP”, karena pada kenyataannya aplikasi akan berjalan di atas TCP atau UDP. Di samping TCP dan UDP, ada beberapa protocol lain di juga berada di lapisan transport yang sering kita gunakan antara lain adalah Internet Message Control Protocol (ICMP) dan protokol routing seperti, Open Shortest Path First (OSPF). Port Aplikasi di atas lapisan transport biasanya ditunjukan oleh nomor port di protocol TCP/UDP. Nomor port bersama IP address membentuk soket, dalam sebuah komunikasi end-to-end antara dua mesin akan dapat secara unik di identifikasi di Internet dengan kombinasi empat (source port, source IP address, destination port, destination IP address).

Nomor port dibentuk oleh nomor 16-bit. Nomor port antara 0-1023 di kenal sebagai Well Known Ports. Nomor port ini biasanya di alokasi untuk server dari aplikasi, dan pada kebanyakan system, hanya dapat digunakan oleh proses yang mempunyai ijin yang paling tinggi (seperti root atau administrator). Nomor port antara 1024-49151 di kenal sebagai Registered Ports, dan nomor ini di definisikan dan di umumkan ke masyarakat Internet agar tidak terjadi konflik antar vendor. Sisa nomor, antara 49152-65535, di kenal sebagai Dynamic and/or Private Ports dan dapat secara bebas digunakan oleh klien / server.

Beberapa nomor well-known port adalah:

Port # Protokol Servis Port # Protokol Servis 7 TCP echo 80 TCP http 9 TCP discard 110 TCP pop3 13 TCP daytime 111 TCP sunrpc 19 TCP chargen 119 TCP nntp 20 TCP ftp-control 123 UDP ntp 21 TCP ftp-data 137 UDP netbios-ns 23 TCP telnet 138 UDP netbios-dgm 25 TCP smtp 139 TCP netbios-ssn 37 UDP time 143 TCP imap 43 TCP 161 UDP snmp 53 TCP/UDP dns 162 UDP snmp-trap 67 UDP bootps 179 TCP bgp 68 UDP bootpc 443 TCP https (http/ssl) 69 UDP tftp 520 UDP rip 70 TCP gopher 1080 TCP socks 79 TCP finger 33434 UDP traceroute

Daftar lengkap nomor port yang telah di alokasikan dapat dilihat di IANA list of Port Numbers (http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml). Daftar nomor port dalam implementasi yang lebih spesifik dapat dilihat di file services. File ini biasanya dapat di lihat di file /etc/services (Linux/Unix). TCP (Transmission Control Protocol) TCP (Transmission Control Protocol), merupakan protokol yang terletak di layer transport. Protokol ini menyediakan service yang dikenal sebagai connection oriented, reliable, byte stream service.

Apakah yang dimaksud dengan pernyataan diatas? connection oriented berarti sebelum melakukan pertukaran data, dua aplikasi pengguna TCP harus melakukan pembentukan hubungan (handshake)terlebih dulu. Reliable berarti TCP menerapkan proses deteksi kesalahan paket dan pengiriman ulang / retransmisi. Byte Stream Service berarti paket dikirimkan dan sampai ke tujuan secara berurutan.

TCP, di jelaskan di RFC 793 (http://www.ietf.org/rfc/rfc793.txt), memberikan servis komunikasi virtual circuit (connection oriented) melalui jaringan. TCP mengatur cara memformat protocol, menghubungkan, dan memutuskan virtual circuit, pengurutan paket, flow control, dan perbaikan kesalahan. Sebagian besar aplikasi TCP/IP yang membutuhkan transport yang andal akan di berikan oleh TCP.

Apa sajakah yang dilakukan TCP agar reliabilitas pengiriman data terjamin? Untuk menjamin keandalan, TCP melakukan hal hal berikut:

1. Data yang diterima oleh aplikasi dipecah pecah menjadi segmen-segmen yang besarnya menurut TCP paling sesuai untuk mengirimkan data. 2. Ketika TCP menerima data dari mitranya, TCP mengirimkan acknowledgment (pemberitahuan bahwa ia telah menerima data) 3. Ketika TCP mengirimkan sebuah data, TCP mengaktifkan pewaktu (software timer) yang akan menunggu acknowledgement dari penerima segmen data tersebut. Jika sampai waktu yang ditentukan tidak diterima acknowledgement, data tersebut dikirimkan kembali oleh TCP. 4. Sebelum segmen data dikirim, TCP melakukan perhitungan checksum pada header dan data nya. Hal ini berbeda dengan protokol IP yang hanya melakukan perhitungan checksum pada headernya saja. Jika segmen yang diterima memiliki checksum yang tidak valid, TCP akan membuang segmen ini dan berharap sisi pengirim akan melakukan retransmisi. 5. Karena segmen TCP dikirim menggunakan IP, dan datagram IP dapat sampai ke tujuan dalam keadaan tidak berurutan, segmen TCP yang dikirimnya pun dapat mengalami hal yang sama. Karenanya sisi penerima paket TCP harus mampu melakukan pengurutan kembali segmen TCP yang ia terima (resequencing), dan memberikan data dengan urutan yang benar ke aplikasi penggunanya. 6. Karena paket IP dapat terduplikasi di perjalanan, penerima TCP harus membuang data yang terduplikasi. 7. Untuk mencegah agar server yang cepat tidak membanjiri server yang lambat, TCP melakukan proses flow control. Setiap koneksi TCP memiliki buffer dengan ukuran yang terbatas. Sisi penerima TCP hanya memperbolehkan sisi pengirim mengirimkan data sebesar buffer yang ia miliki. Gambar 51: Format TCP

Sebuah data unit TCP di sebut segment; nama ini digunakan karena TCP pada dasarnya tidak mengenal message, tapi hanya mengirimkan blok-blok byte antara pengirim dan penerima. Kolom-kolom pada protocol TCP adalah:

• Source Port dan Destination Port: menunjukan port sumber dan port tujuan untuk mengidentifikasi sambungan end-to-end dan aplikasi pada lapisan yang lebih tinggi. • Sequence Number: berisi nomor urut byte pertama dari segmen dari aliran byte yang dikirim. Karena nomor urut mengacu pada jumlah byte dan bukan jumlah segmen, nomor urut dalam TCP segmen biasanya tidak berurutan. • Acknowledgment Number: Digunakan oleh pengirim untuk memberikan acknowledge penerimaan data; kolom ini menunjukan nomor urut dari byte data selanjutnya yang diharapkan di terima. • Data Offset: Menunjuk pada byte data pertama dari segmen TCP; kolom ini menunjukan panjang header segmen TCP. • Control Flags: Sekumpulan bit yang mengontrol beberapa aspek dari sambungan virtual TCP. Bit control ini termasuk: ◦ Urgent Pointer Field Significant (URG): Jika di set, menunjukan bahwa segmen yang dikirim berisi data urgent (atau prioritas tinggi) dan kolom Urgent Pointer adalah valid. ◦ Acknowledgment Field Significant (ACK): Jika di set, menunjukan bahwa nilai yang ada di kolom Acknowledgment Number adalah valid. Bit ini biasanya di set, kecuali pada saat pertama kali sambungan dilakukan. ◦ Push Function (PSH): Digunakan pada saat aplikasi sumber / pengirim menginginkan untuk memaksa TCP segera mengirimkan data yang saat ini ada di buffer tanpa menunggu buffer penuh; Hal ini sangat berguna untuk mengirimkan data pendek / kecil. ◦ Reset Connection (RST): Jika di set, akan segera memutuskan sambungan TCP end-to- end. ◦ Synchronize Sequence Numbers (SYN): Menset awal segmen pada saat proses / membentuk sambungan, menunjukan bahwa segmen tersebut membawa nomor urut awal. ◦ Finish (FIN): Memohon untuk pemutusan hubungan TCP secara normal; agar hubungan benar-benar terputus kedua belah pihak harus mengirimkan segmen FIN. • Window: Digunakan untuk control flow, berisi nilai dari receive window size yang menentukan maksimum byte data / paket yang dapat di terima oleh penerima sekali kirim / sekaligus. Lebar kolom Windows ialah 16 bit (2 byte). Sehingga nilai maksimalnya ialah 65535 . • Checksum: Memberikan bit tambahan untuk mendeteksi kesalahan pada segmen TCP (termasuk header dan data). • Urgent Pointer: Data urgent adalah informasi yang telah di beri tanda sebagai data dengan prioritas tinggi oleh aplikasi di lapisan atas; data ini biasanya akan membypass urutan data TCP yang normal dan biasanya di letakan dalam segmen antara header dan data yang normal. Urgent Pointer yang hanya valid pada saat URG bit di set, menunjukan posisi dari octet pertama dari data yang tidak urgen dalam segmen. • Options: Digunakan pada saat negosiasi proses pembentukan hubungan. Ada banyak option yang dapat di negosiasi. Maximum Segment Size (MSS) adalah option yang paling sering di negosiasikan, dan jika tidak dilakukan maka nilai default MSS adalah 536. Option lain yang sering digunakan adalah Selective Acknowledgement (SACK), yang memungkinkan untuk menerima segmen yang tidak mengikuti urutan yang benar. IANA me-maintain daftar dari semua TCP Option Numbers (http://www.iana.org/assignments/tcp-parameters/tcp- parameters.xml). UDP (User Datagram Protocol) UDP (User Datagram Protocol) diterangkan di RFC 768 (http://www.ietf.org/rfc/rfc768.txt). UDP merupakan protokol transport yang sederhana. Berbeda dengan TCP yang connection oriented, UDP memberikan servis datagram (connectionless) end-to-end yang tidak reliable (tidak andal). Dalam UDP tidak ada sequencing (pengurutan kembali) paket yang datang, acknowledgement terhadap paket yang datang, atau retransmisi jika paket mengalami masalah di tengah jalan.

Kemiripan UDP dengan TCP ada pada penggunaan port number. Sebagaimana digunakan pada TCP, UDP menggunakan port number ini membedakan pengiriman datagram ke beberapa aplikasi berbeda yang terletak pada komputer yang sama.

Karena sifatnya yang connectionless dan unreliable, UDP digunakan oleh aplikasi aplikasi yang membutuhkan servis sederhana dengan overhead protokol / overhead waktu transaksi yang rendah, seperti:

1. Secara periodik melakukan aktivitas tertentu (misalnya query routing table pada jaringan lokal, atau pengiriman data sensor pada Internet of Things / IoT), serta hilangnya satu data akan dapat diatasi pada query periode berikutnya. 2. Melakukan pengiriman data ke jaringan lokal. Pendeknya jarak tempuh datagram akan mengurangi resiko kerusakan data 3. Bersifat broadcasting atau multicasting. Pengiriman datagram ke banyak client sekaligus akan efisien jika prosesnya menggunakan metode connectionless. Contoh untuk streaming video atau audio.

Gambar 52: Format User Datagram Protocol (UDP) Dengan kebutuhan yang sangat sederhana yang tidak membutuhkan keandalan. Kolom yang digunakan oleh datagram UDP adalah:

• Source Port: Mengidentifikasi port UDP yang digunakan oleh pengirim datagram; penggunakan Source Port sifatnya optional dan dapat di set menjadi 0. • Destination Port: Mengidentifikasi port yang dituju di penerima datagram. receiver. • Length: Menunjukan panjang total datagram UDP. • Checksum: Memberikan bit tambahan untuk deteksi kesalahan di datagram (termasuk header dan data). ICMP (Internet Control Message Protocol) Internet Control Message Protocol, dijelaskan di RFC 792 (http://www.ietf.org/rfc/rfc792.txt), adalah pasangan bagi IP yang memberitahukan pengirim IP jika ada datagram yang bermasalah. ICMP sangat penting artinya di lingkungan connectionless seperti IP. ICMP bukan host-to-host protocol seperti TCP atau UDP, tapi host-tohost dalam artian sebuah alat (apakah itu router atau computer) mengirimkan berita ke alat yang lain (apakah itu router / komputer).

Pada kondisi normal, Protokol IP berjalan baik dan menghasilkan proses penggunaan memori serta sumber daya transmisi yang efisien. Namun ada beberapa kondisi dimana koneksi IP terganggu, misalnya karena router yang crash, putusnya kabel, atau matinya host tujuan.. Pada saat saat ini ICMP berperan membantu menstabilkan kondisi jaringan. Hal ini dilakukan dengan cara memberikan pesan pesan tertentu, sebagai respons atas kondisi tertentu yang terjadi pada jaringan tersebut.

Situasi yang sering terjadi dilapangan, misalnya, dalam hubungan antara router A dan B mengalami masalah, maka Router A akan secara otomatis mengirimkan paket ICMP Destination Unreachable ke host pengirim paket yang berusaha melewati host B menuju tujuannya. Dengan adanya pemberitahuan ini maka host tujuan tidak akan terus menerus berusaha mengirimkan paketnya melewati router B.

Contoh diatas hanya sebagian dari jenis pesan ICMP. Ada dua tipe pesan yang dapat dihasilkan oleh ICMP yaitu ICMP Error Message dan ICMP Querry Message. ICMP Error Message, sesuai namanya, dihasilkan jika terjadi kesalahan pada jaringan. Sedangkan ICMP Querry Message ialah jenis pesan yang dihasilkan oleh protokol ICMP jika pengirim paket menginginkan informasi tertentu yang berkaitan dengan kondisi jaringan.

Protokol ICMP terdefinisi dari header protokol IP dengan nilai satu (1) pada kolom protokol. Secara umum 32 bit pertama protokol ICMP yang akan menentukan fungsi yang di emban protokol ICMP seperti tampak pada gambar.

Gambar 53: Format ICMP

Keterangan dari masing-masing kolom adalah sebagai berikut: • Type: Menentukan format message ICMP (8 bits). Ada cukup banyak format ICMP yang di definisikan. Beberapa diantaranya terdapat dalam tabel. • Code: Menjelaskan lebih lanjut dari ICMP Message (8 bits). • Checksum: Digunakan untuk mencek apakah header ICMP yang diterima masih baik atau sudah korup (16 bit).. • Data: Berisi data yang spesifik seperti di indikasikan oleh kolom Type dan Field. Panjang data bervariasi.

IANA memaintain daftar lengkap dari ICMP Parameters (http://www.iana.org/assignments/icmp- parameters/icmp-parameters.xml). Cuplikan berbagai tipe message ICMP dapat dilihat sebagai berikut:

Type Deskripsi 0 Echo reply. 3 Destination unreachable. 4 Source quench. 5 Redirect. 6 Alternate Host Address. 8 Echo request. 9 Router advertisement. 10 Router solicitation. 11 Time exceeded. 12 Parameter problem. 13 Timestamp request. 14 Timestamp reply. 15 Information request. 16 Information reply. 30 Traceroute. 33 IPv6 Where-Are-You. 34 IPv6 I-Am-Here.

ICMP Error Messages dibagi menjadi beberapa jenis. Diantaranya :

• Destination Unreachable. Pesan ini dihasilkan oleh router jika pengiriman paket mengalami kegagalan akibat masalah putusnya jalur, baik secara fisik maupun secara logic. Destination Unreachable ini dibagi menjadi beberapa tipe. Beberapa tipe yang penting ialah : ▪ Network Unreachable, jika jaringan tujuan tak dapat dihubungi. ▪ Host Unreachable, jika host tujuan tak bisa dihubungi. ▪ Protocol At Destination is Unreachable, jika di tujuan tak tersedia protokol tersebut. ▪ Port is Unreachable, jika tidak ada port yang dimaksud pada tujuan. ▪ Destination Network is Unknown, jika network tujuan tak diketahui. ▪ Destination Host is Unknown, jika Host tujuan Tidak diketahui.

• Time Exceeded. Paket ICMP jenis ini dikirimkan jika isi field TTL dalam paket IP sudah habis dan paket belum juga sampai ke tujuannya. Sebagaimana telah diterangkan pada bagian IP diatas, tiap kali sebuah paket IP melewati satu router, nilai TTL dalam paket tersebut dikurangi satu. TTL ini diterapkan untuk mencegah timbulnya paket IP yang terus menerus berputar putar di network karena suatu kesalahan tertentu, sehingga menghabiskan sumberdaya jaringan yang ada. Field TTL ini pula yang digunakan oleh program traceroute untuk melacak jalannya paket dari satu host ke host lain. Program traceroute dapat melakukan pelacakan rute berjalannya IP dengan cara mengirimkan paket kecil UDP ke IP tujuan, dengan TTL yang di set membesar.

Saat paket pertama dikirim, TTL di set satu, sehingga router pertama akan membuang paket ini dan mengirimkan paket ICMP time exceeded. Kemudian paket kedua dikirim , dengan TTL dinaikkan. Dengan naiknya TTL, paket ini sukses melewati router pertama namun dibuang oleh router kedua. Router ini pun mengirimkan paket ICMP time exceeded. Dengan mendaftar nama nama router yang mengirimkan paket ICMP time exceeded ini, akhirnya didapat seluruh nama router yang dilewati oleh paket UDP ini. Traceroute adalah program yang menggunakan kemampuan ini, contoh keluaran di Linux saat melakukan traceroute ke www.detik.com,

root@openbts28:~# traceroute www.detik.com traceroute to www.detik.com (203.190.241.43), 30 hops max, 60 byte packets 1 192.168.0.222 (192.168.0.222) 0.615 ms 0.930 ms 1.184 ms 2 10.117.192.1 (10.117.192.1) 337.859 ms 338.280 ms 338.771 ms 3 be4-cg03-pe03.fast.net.id (202.73.96.73) 339.304 ms 339.824 ms * 4 be4-cg03-pe03.fast.net.id (202.73.96.73) 340.250 ms 340.739 ms * 5 * * * 6 218.100.72.9 (218.100.72.9) 341.127 ms 327.463 ms 280.346 ms 7 203.190.244.34 (203.190.244.34) 279.823 ms 280.810 ms 281.259 ms 8 203.190.241.43 (203.190.241.43) 282.713 ms 284.103 ms 284.605 ms root@openbts28:~#

• Parameter Problem. Paket ini dikirim jika terdapat kesalahan parameter pada header Paket IP • Source Quench. Paket ICMP ini basanya dikirim oleh router untuk memberitahukan bahwa dia mengalami kepadatan trafik dan datagram yang dikirim terpaksa di buang. Hal ini biasanya terjadi karena terbatasnya buffer di router. Sebagai respons atas paket ini, pihak pengirim paket harus memperlambat pengiriman paketnya • Redirect. Paket ini dikirimkan jika router merasa Host mengirimkan paket IP melalui router yang salah. paket ini seharusnya dikirimkan melalui router lain. Untuk alasan keamanan, biasanya message Redirect di blok oleh firewall.

Sedangkan ICMP Querry Messages terdiri dari :

• Echo dan Echo Reply. Bertujuan untuk memeriksa apakah sistem tujuan dalam keadaan aktif. Program ping merupakan program pengirim paket ini. Responder harus mengembalikan data yang sama dengan data yang dikirimkan. • Timestamp dan Timestamp Reply. Message ini mirip dengan message Echo tapi menggunakan timestamp / pewaktu (dengan ketelitian milidetik) di messagenya. Hal ini memungkinkan kita menghitung berapa waktu yang dibutuhkan untuk sebuah mesin untuk memproses datagram, dan juga memberikan mekanisme bagi sebuah mesin untuk mensinkronkan waktu. • Address Mask. Untuk mengetahui berapa netmask yang harus digunakan oleh suatu host dalam suatu network.

Salah satu aplikasi ICMP yang paling sering digunakan adalah Echo Request (Type 8) yang di jawab menggunakan Echo Reply (Type 0), atau yang lebih kompleks menggunakan Timestamp (Type 13) dan Timestamp Reply (Type 14) sehingga kita dapat mengukur waktu yang dibutuhkan untuk mengirim ICMP Message tersebut. Gambar 54: Format ping

Header ICMP untuk keperluan timestamp & timestamp reply memiliki beberapa tambahan kolom untuk memasukan nomor urut (Sequence Number) dan Timestamp. Tampak pada contoh adalah hasil keluaran yang dihasilkan.

$ ping bukalapak.com

PING bukalapak.com (182.253.238.102) 56(84) bytes of data. 64 bytes from 182.253.238.102: icmp_seq=1 ttl=59 time=1.23 ms 64 bytes from 182.253.238.102: icmp_seq=2 ttl=59 time=1.09 ms 64 bytes from 182.253.238.102: icmp_seq=3 ttl=59 time=1.24 ms 64 bytes from 182.253.238.102: icmp_seq=4 ttl=59 time=1.11 ms 64 bytes from 182.253.238.102: icmp_seq=5 ttl=59 time=1.02 ms 64 bytes from 182.253.238.102: icmp_seq=6 ttl=59 time=1.01 ms 64 bytes from 182.253.238.102: icmp_seq=7 ttl=59 time=1.45 ms 64 bytes from 182.253.238.102: icmp_seq=8 ttl=59 time=1.20 ms ^C --- bukalapak.com ping statistics --- 8 packets transmitted, 8 received, 0% packet loss, time 7006ms rtt min/avg/max/mdev = 1.017/1.173/1.459/0.142 ms

Tampak bahwa dari mesin contoh ke bukalapak.com dibutuhkan waktu bolak-balik rata-rata 1.173 ms, dan cukup reliable karena hampir tidak ada paket yang hilang (0% packet loss) di jalan.

Sebagai paket pengatur kelancaran jaringan, paket ICMP tidak diperbolehkan membebani network. Karenanya, paket ICMP tidak boleh dikirim saat terjadi problem yang disebabkan oleh :

1. Kegagalan pengiriman paket ICMP 2. Kegagalan pengiriman paket broadcast atau multicast

Logika Sambungan TCP dan ICMP Sangat penting untuk menghayati bagaimana sambungan TCP terjadi untuk dapat merasakan bagaimana TCP beroperasi. Hubungan komunikasi TCP pada dasarnya terdiri atas tiga (3) bagian, yaitu:

1. Connection Establishment (pembuatan sambungan). 2. Data Exchange (pertukaran data). 3. Connection Termination (pemutusan sambungan). Dalam contoh di bawah adalah sambungan ke server POP3 (yang mendengarkan di TCP port 110) dengan klien-nya (yang menggunakan TCP port 1967).

CLIENT SERVER

syn, SEQ=800 1 ------> 1 src_port=1967, dst_port=110 1 1 syn, ack, SEQ=1567, ACK=801 1 CONNECTION <------1 src_port=110, dst_port=1967 1 ESTABLISHMENT 1 ack, SEQ=801, ACK=1568 1 ------> 1 src_port=1967, dst_port=110 1

ack, SEQ=1568, ACK=801 2 <------2 src_port=110, dst_port=1967 2 DataLen=18 (POP3 Server V1.12\n) 2 2 ack, SEQ=801, ACK=1586 2 ------> 2 src_port=1967, dst_port=110 2 DataLen=5 (quit\n) 2 DATA 2 EXCHANGE ack, SEQ=1586, ACK=806 2 <------2 src_port=110, dst_port=1967 2 DataLen=9 (Sayonara\n) 2 2 ack, SEQ=806, ACK=1595 2 ------> 2 src_port=1967, dst_port=110 2

fin, ack, SEQ=806, ACK=1595 3 ------> 3 src_port=1967, dst_port=110 3 3 ack, SEQ=1595, ACK=807 3 <------3 src_port=110, dst_port=1967 3 CONNECTION 3 fin, ack, SEQ=1595, ACK=807 3 TERMINATION <------3 src_port=110, dst_port=1967 3 3 ack, SEQ=807, ACK=1596 3 ------> 3 src_port=1967, dst_port=110 3

Pada fase connection establishment terdiri atas tiga fasa yang dikenal sebagai three way handshake (tiga fasa berjabatan) yang pada saat itu client dan server akan mempertukarkan nomor urut awal initial sequence number (ISN) dan acknowledge ISN dari mesin yang dituju. Dalam contoh ini, client memulai hubungan dengan mengirimkan server TCP segmen dengan SYN bit di set dan nomor urut (Sequence Number) 800. Dengan menset SYN-bit memberitahukan si penerima (dalam hal ini server) bahwa si pengirim (dalam hal ini client) sedang dalam mode inisialisasi ISN dan ISN belum di konfirmasi. Nomor Acknowledgement di segmen tidak terlihat karena nilainya pada titik ini tidak valid.

Server merespond dengan segmen yang bit SYN dan ACK di set. Nomor urut (Sequence Number) 1567 dan Acknowledgement Number 801. SYN-bit dan ISN dari 1567 mempunyai arti yang sama dengan paragraph di atas. Bit ACK menunjukan bahwa isi dari kolom Acknowledgement Number adalah valid dan nilai ACK adalah 801, ini adalah cara server mengkonfirmasi ISN dari klien.

Bagian terakhir dari three-way handshake terjadi pada saat klien mengirimkan segmen TCP dengan bit ACK di set. Perhatikan bahwa isi kolom Acknowledgement Number (1568) adalah lebih besar satu (1) dari ISN server.

Three-way handshake ini kadang kala di kenal sebagai segmen pertukaran “syn, syn/ack, dan ack”. Hal ini sangat penting karena beberapa hal. Untuk seseorang yang melakukan sniffing dan melihat paket yang lewat, mengetahui three-way handshake ini adalah cara untuk menemukan mulainya sebuah hubungan komunikasi. Untuk firewall, proxy server, detector penyusup (intrusion detection), dan system lainnya, three-way handshake memberikan cara untuk mengetahui arah dari sambungan komunikasi TCP karena mungkin peraturan firewall untuk sambungan outbound (arah keluar) dan inbound (arah ke dalam akan berbeda.

Bagian kedua dari sambungan TCP adalah data exchange. Informasi yang ada di sini pada dasarnya hanya untuk contoh saja. Pada bagian data exchange terlihat POP server mengirimkan “banner” ke client dan client mengirimkan perintah “quit”, dan server memutuskan hubungan. Perlu di catat bahwa “\n” menunjukan akhir dari kalimat / “end-of-line”. Segmen yang dikirim memperlihatkan hubungan antara nomor urutan data & nomor acknowledgement antara client dan server.

Fase terakhir adalah connection termination. Meskipun sambungan TCP adalah full-duplex, artinya dapat sekaligus mengirim dan menerima secara bersamaan, pada dasarnya protocol TCP melihat sambungan-nya sebagai sepasang sambungan simplex. Simplex adalah sambungan dimana pada saat si pengirim mengirimkan data maka si penerima tidak boleh mengirimkan data. Oleh karena itu, untuk memutuskan hubungan komunikasi secara benar membutuhkan empat segmen. Dalam hal ini client mengirimkan segmen ke server denganbit FIN dan ACK di set. Server meresponds dengan segmen yang hanya bit ACK di set dan Acknowledgement Number di tambah satu. Server kemudian mengirimkan segmen ke client dengan bit FIN dan ACK di set.

Paragraph di atas menjelaskan scenario normal dalam komunikasi TCP antara klien dan server. Dua mesin dengan UDP akan berkomunikasi dengan cara yang hamper sama, salah satu mesin akan mengirimkan datagram UDP ke mesin yang lain dengan asumsi bahwa mesin tersebut mendengarkan pada port yang di tuju.

Akan tetapi apa yang terjadi jika mesin yang dituju ternyata tidak mendengarkan para port yang dituju, atau mesin ternyata tidak ada? Berikut adalah apa yang akan terjadi pada kondisi tidak normal:

• Mesin tidak mendengarkan pada TCP port yang di tuju: Jika mesin A berusaha menghubung mesin B pada TCP port yang mesin B tidak mendengarkan, maka mesin B akan meresponds dengan segmen TCP yang berisi bit RST dan bit ACK di set. • Mesin tidak mendengarkan para UDP port yang dituju: Jika mesin A berusaha menghubungi mesin B pada UDP port yang mesin B tidak mendengarkan, maka mesin B akan mengirimkan ICMP port unreachable ke mesin A. • Mesin tidak ada: Jika mesin A berusaha menghubungi mesin B dan ternyata mesin B tidak ada (misalnya IP address B tidak ada atau mesin B sedang down), maka router di subnet jaringan tempat mesin B akan mengirimkan berita ICMP host unreachable ke mesin A.

Wireshark Untuk Melihat TCP Flow Cara yang lebih gampang untuk melihat TCP Flow adalah menggunakan Wireshark. Wireshark cukup mudah di instalasi menggunakan perintah

apt-get install wireshark Berikut adalah contoh hasil capture screen wireshark saat kita melakukan komunikasi ke smtp.telkom.net pada port 25. Gambar di bawah ini adalah tampilan wireshark yang sudah di sortir hanya menampilkan komunikasi SMTP antara IP 192.168.0.124 (PC di balik NAT) dengan smtp.telkom.net (222.124.18.79).

Gambar 55: Hasil penyadapan Wireshark

Melalui menu Wireshark > Analyze > Follow TCP Stream kita dapat melihat payload informasi yang dibawa dalam komunikasi antara dua komputer tersebut. Tulisan berwarna merah dikirim oleh komputer source (dalam hal ini 192.168.0.124). Sementara, tulisan berwarna biru dikirim oleh komputer destination (dalam hal ini 222.124.18.79).

Gambar 56: Hasil Follow TCP Flow sebuah komunikasi pengiriman e-mail

Untuk melihat komunikasi lebih detail dalam kita perlu menggunakan Wireshark > Statistics > Flow Graphs . Pastikan kita memilih,

• Displayed packets. • TCP flow • Standard source / destination addresses.

Setelah kita tekan tombol OK maka akan tampak TCP Flow yang terjadi. Gambar 57: Detail aliran komunikasi TCP

Proses komunikasi tampak dengan jelas dalam flow graph di atas,

• Connection Establishment (pembuatan sambungan). Terjadi antara waktu 13.964 s/d 17.167. Di awali dengan paket SYN, di balas dengan SYN ACK dan di akhiri dengan ACK. • Data Exchange (pertukaran data). Terjadi antara waktu 17.931 s/d 42.172. Disini digunakan PSH, ACK dan ACK berkali-kali. • Connection Termination (pemutusan sambungan). Terjadi antara 42.172 s/d 42.199. Disini di awali dengan FIN ACK dari destination, di balas FIN ACK dari source. Di akhiri dengan ACK. • Demikian kita dapat melihat dengan jelasn akan adanya proses pengecekan dengan ACK (Acknowledgement) yang menjamin bahwa paket yang dikirim di terima dengan baik. Referensi • http://opensource.telkomspeedy.com/wiki/index.php/TCP • http://opensource.telkomspeedy.com/wiki/index.php/UDP • http://opensource.telkomspeedy.com/wiki/index.php/ICMP • http://en.wikipedia.org/wiki/Transmission_Control_Protocol • http://en.wikipedia.org/wiki/User_Datagram_Protocol • http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol • http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment- numbers/ BAB 11: Aplikasi TCP/IP

Internet pada dasarnya adalah lapisan aplikasi dari TCP/IP. Aplikasi Internet baru bisa berkembang dengan baik setelah jaringan di bawahnya meyakinkan bahwa data dapat dikirim dengan baik dari satu komputer ke komputer lain, seperti yang dilakukan oleh protokol IP dan TCP atau UDP.

Bagian ini akan memperlihatkan beberapa aplikasi Internet, khususnya email dan web yang merupakan aplikasi utama Internet saat ini. Aplikasi di atas TCP dan / atau UDP Ada beberapa contoh aplikasi Internet, seperti:

• BGP: Border Gateway Protocol versi 4 (BGP-4) adalah sebuah exterior routing protocol berbasis distance vector yang banyak digunakan untuk sambungan antar ISP atau antara ISP dengan lokasi pelanggan, jika pelanggan mempunyai beberapa sambungan ke Internet sekaligus. • DNS: Domain Name System mendefinisikan struktur nama dengan IP address-nya maupun dengan mail dan name server. Berbagai RFC yang menjelaskan tentang DNS dapat dilihat di bagian referensi http://en.wikipedia.org/wiki/Domain_Name_System. • FTP: File Transfer Protocol yangmemungkinkan pengguna untuk mentransfer file ke computer lain, berdasarkan RFC 959 (http://www.ietf.org/rfc/rfc959.txt). FTP sebaiknya tidak digunakan karena tidak terlalu aman. • HTTP: Hypertext Transfer Protocol adalah dasar dari pertukaran informasi melalui Web / World Wide Web (WWW). Ada banyak versi dari HTTP yang digunakan di Internet, nulai dengan HTTP versi 1.0 (RFC 1945) (http://www.w3.org/Protocols/rfc1945/rfc1945) hingga HTML5 yang masih dalam tahap pengembangan (http://en.wikipedia.org/wiki/HTML5). Halaman WWW ditulis dalam Hypertext Markup Language (HTML), berbasis ASCII, yang merupakan bahasa formatting yang platform-independent (RFC 1866) (http://www.rfc- editor.org/rfc/rfc1866.txt). • IMAP: Internet Mail Access Protocol merupakan alternative dari POP sebagai interface antara user mail client software dengan e-mail server, digunakan untuk mengambil e-mail dengan lebih banyak flexibilitas dalam managemen mailbox. IMAP di jelaskan pada RFC 1730 (http://www.ietf.org/rfc/rfc1730.txt) • OSPF: Open Shortest Path First versi 2 (OSPFv2) adalah protocol routing berbasis link state yang digunakan di dalam jaringan corporate. OSPF sering disebut sebagai interior gateway protocol. OSPFv2 dijelakan pada RFC 2328 (http://www.ietf.org/rfc/rfc2328.txt) • Ping: Program Utility yang memungkinkan pengguna untuk mengetahui status sebuah mesin dan waktu yang dibutuhkan untuk mencapai mesin tersebut. Ping menggunakan message ICMP Echo. • POP: Post Office Protocol mendefinisikan interface sederhana antara software user client (seperti Eudora, Outlook) dengan e-mail server, digunakan untuk mengambil e-mail dari server, sehingga client dapat me-manage mailbox-nya. Versi terakhir adalah POP3 (RFC 1460) (http://tools.ietf.org/rfc/rfc1460.txt). • RADIUS: Remote Authentication Dial-In User Service (RADIUS) adalah protocol untuk mengauthentikasi pengguna dial-up, biasanya digunakan di ISP yang menggunakan telepon. RADIUS di jelaskan pada RFC 2865 (http://tools.ietf.org/rfc/rfc2865.txt) • RIP: Routing Information Protocol (RIP) adalah protokol routing berbasis distance-vector digunakan di dalam jaringan sebuah LAN di sebuah corporate. RIP di jelaskan pada RFC 1058 (http://tools.ietf.org/rfc/rfc1058.txt) • SSH: Protocol Secure Shell memungkinkan pengguna untuk login ke mesin lain di Internet, seperti halnya Telnet. Berbeda dengan Telnet, SSH akan mengenkrop password maupun data yang dikirim. • SMTP: Simple Mail Transfer Protocol adalah protokol standard untuk mengirimkan e-mail di Internet (RFC 821) (http://www.ietf.org/rfc/rfc2821.txt). SMTP digunakan antar e-mail server di Internet dan memungkinkan pengguna untuk mengirimkan mail ke server. RFC 822 (http://www.rfc-editor.org/rfc/rfc822.txt) secara khusus menerangkan format dari message di sebuah mail, sedang RFC 1521 (http://www.ietf.org/rfc/rfc1521.txt) dan 1522 (http://www.ietf.org/rfc/rfc1522.txt) menjelaskan MIME (Multipurpose Internet Mail Extensions). Beberapa buku referensi tentang elektronik mail termasuk !%@:: Addressing and Networks oleh D. Frey dan R. Adams (O'Reilly & Associates, 1993) dan THE INTERNET MESSAGE: Closing the Book With Electronic Mail oleh M. Rose (PTR Prentice Hall, 1993). • SNMP: Simple Network Management Protocol mendefinisikan prosedur dan database informasi managemen untuk mengatur peralatan jaringan yang berbasis TCP/IP. SNMP (RFC 1157) (http://www.ietf.org/rfc/rfc1157.txt) pada hari ini banyak di implementasikan di jaringan local maupun di jaringan wide area network. SNMP Versi 2 (SNMPv2, RFC 1441) (http://www.rfc-editor.org/rfc/rfc1441.txt) menambahkan mekanisme keamanan yang tidak ada di SNMP, tapi lumayan kompleks. Penggunakan SNMPv2 semoga menjadi lebih luas. Informasi tambahan tentang SNMP dan manajemen di jaringan berbasis TCP/IP dapat di peroleh di buku SNMP oleh S. Feit (McGraw-Hill, 1994) dan THE SIMPLE BOOK: An Introduction to Internet Management, 2/e, oleh M. Rose (PTR Prentice Hall, 1994). • SSL: Secure Sockets Layer (SSL), dirancang oleh Netscape, memberikan mekanisme untuk berkomunikasi yang aman di Internet. SSL berbasis sertifikat dan kriptografi menggunakan kunci public. Aplikasi SSL yang sering kita gunakan adalah HTTP di atas SSL, yang lebih sering dikenal sebagai HTTPS. Versi baru SSL di kenal sebagai Transport Layer Security (TLS) (RFC 2246) (http://www.ietf.org/rfc/rfc2246.txt). SSL tidak spesifik HTTP; protokol seperti IMAP4 (imaps), FTP (ftps), Telnet (telnets), dan POP3 (pop3s) semua mempunyai definisi untuk beroperasi di atas SSL. • TACACS+: The Terminal Access Controller Access Control System plus adalah sebuah protocol untuk remote akses. • Telnet: Kependekan dari Telecommunication Network, sebuah protokol virtual terminal yang memungkinkan seorang pengguna untuk logon ke sebuah mesin TCP/IP untuk mengakses ke mesin lain di jaringan. Telnet di jelaskan di RFC 854 (http://www.ietf.org/rfc/rfc854.txt). • TFTP: Trivial File Transfer Protocol (TFTP) digunakan untuk beberapa aplikasi special yang membutuhkan file transfer sederhana. TFTP di jelaskan di RFC 1350 (http://www.ietf.org/rfc/rfc1350.txt) • Time/NTP: Time dan Network Time Protocol (NTP) digunakan oleh mesin di Internet untuk mensinkronkan waktu mereka dengan time server yang ada di Internet. NTP di jelaskan di RFC 5905 (http://www.ietf.org/rfc/rfc5905.txt) • Traceroute: Sebuah tool yang dapat menayangkan routing yang diambil sebuah paket yang berjalan di Internet dari mesin local ke mesin remote tujuan. Di Linux / Unix telah tersedia perintah traceroute. • Whois/NICNAME: Program utility untuk mencari informasi di database tentang Internet Domain dan informasi domain kontak. Whois di jelaskan di RFC 3912 (http://www.ietf.org/rfc/rfc3912.txt) Panduan untuk menggunakan banyak aplikasi ini dapat di peroleh di "A Primer on Internet and TCP/IP Tools and Utilities" (FYI 30/RFC 2151) (http://tools.ietf.org/rfc/rfc2151.txt) oleh Gary Kessler & Steve Shepard.

Pada kesempatan ini, tidak semua aplikasi TCP/IP akan di bahas, beberapa diantaranya, terutama Web dan e-mail akan di bahas secara lebih mendalam.

Untuk dapat secara mendalam mempelajari cara kerja protokol aplikasi ini, sangat di sarankan untuk menggunakan Wireshark dan menangkap / meng-capture data yang dikirim dan mempelajari interaksi protokol aplikasi menggunakan fasilitas “Follow TCP Stream”. Post Office Protocol 3 – Mengambil E-mail di Server Dalam aplikasi Internet, sebuah client e-mail lokal akan menggunakan Post Office Protocol version 3 (POP3), untuk mengambil e-mail dari server remote melalui sambungan TCP/IP. Hampir semua pelanggan Internet Service Provider mengambil e-mail mereka menggunakan software yang menggunakan POP3.

Disain dari POP3 maupun yang sebelumnya, untuk mendukung end user yang tidak mempunyai akses 24 jam ke Internet, seperti dial-up, untuk mengambil semua e-mail pada saat tersambung ke Internet. Walaun umumnya software POP mempunyai option untuk meninggalkan e-mail di server, umumnya yang terjadi adalah connect, ambil semua e-mail, delete semua e-mail yang ada di server, dan masukan ke mailbox di PC sebagai new message.

Bagi mereka yang ingin mengambil e-mail, dan meninggalkannya di server, tidak mendelete-nya biasanya menggunakan perintah POP3 UIDL (Unique Iddentification Listing). Dengan cara itu, client dapat terus mengetahui e-mail mana yang sudah di ambil, dan mana yang belum di ambil. Mekanisme lain yang dapat digunakan untuk mengambil e-mail dan menyimpannya di mail server adalah menggunakan protokol IMAP.

Dengan menggunakan POP3 maupun IMAP untuk mengambil e-mail, untuk mengirimkan e-mail biasanya menggunakan protokol SMTP.

Seperti halnya protokol Internet yang lama lainnya, POP3 awalnya hanya mendukung mekanisme login yang tidak di enkripsi. Hingga hari ini pengiriman password dalam bentuk text pada POP3 masih digunakan, tapi beberapa mekanisme authentikasi yang lebih aman telah di kembangkan. Salah satunya adalah APOP yang menggunakan fungsi hash MD5 untuk menghindari replay attack. Beberapa client yang mengimplementasikan APOP termasuk Mozilla, Thunderbird, Eudora, dan Novell Evolution.

Untuk lebih aman lagi, e-mail client dapat meng-enkrip trafik POP3 menggunakan SSL. Cara Kerja POP3 Proses awalnya, server akan menjalankan servis POP3 yang mendengarkan pada TCP port 110. Jika di enkapsulasi dalam SSL, biasanya digunakan TCP port 995. Jika client ingin menggunakan servis tersebut, maka client akan membuka hubungan TCP ke server host.

Jika sambungan terjadi, server POP3 akan mengirimkan selamat datang. Client dan akan server POP3 akan saling bertukar perintah dan responds sampai hubungan di putuskan atau terputus. Perintah di POP3 biasanya terdiri dari keyword yang tidak case-sensitif, biasanya di ikuti oleh satu atau lebih argumen / parameter. Ada dua indikator status, positif (+OK) dan negatif (-ERR). Ada tiga (3) tahap transaksi POP3, tahap pertama adalah tahap AUTHORIZATION. Tahap ke dua adalah tahap TRANSACTION, dan terakhir adalah tahap UPDATE yang dimulai dengan perintah QUIT dari sisi client. Rangkuman Perintah POP3 Perintah Minimal POP3

USER name valid di tahap AUTHORIZATION PASS string QUIT STAT valid di tahap TRANSACTION LIST [msg] RETR msg DELE msg NOOP RSET QUIT

Perintah Optional POP3

APOP name digest valid di tahap AUTHORIZATION TOP msg valid di tahap TRANSACTION UIDL [msg] POP3 Replies: +OK -ERR Contoh Dialog POP3 ---- client (“C:”)membuka hubungan ke server POP3 (“S:”)

S: C: $ telnet pop.cbn.net.id 110 C: Trying 210.210.145.40... C: C: Connected to pop.cbn.net.id (210.210.145.40). C: Escape character is '^]'. S: +OK POP3 Ready pop1a.int.cbn.net.id 0001d694

---- client (“C:”) mengauthentikasi ke server POP3 (“S:”)

C: USER malin S: +OK USER nurlina set, mate C: PASS kundang123 S: +OK You are so in

---- client (“C:”) melihat jumlah mail yang ada di server POP3 (“S:”)

C: STAT S: +OK 1 1785 C: LIST S: +OK POP3 clients that break here, they violate STD53. S: 1 1785 ---- client (“C:”) mengambil mail di server POP3 (“S:”)

C: RETR 1 S: +OK 1785 octets follow. S: Received: (qmail 6387 invoked from network); 28 Feb 2006 15:34:03 +0700 S: Received: from unknown (HELO mx1a.int.cbn.net.id) (10.64.128.128) S: by box3a.int.cbn.net.id with SMTP; 28 Feb 2006 15:34:03 +0700 S: … dst … S: .

---- client (“C:”) membuang / mendelete mail yang sudah di ambil.

C: DELE 1 S: +OK Deleted.

---- client (“C:”) memutuskan hubungan dengan server POP3 (“S:”)

C: QUIT S: +OK Bye-bye. C: Connection closed by foreign host. C: S: Instalasi POP3 Server Salah satu POP3 dan IMAP Server yang tersedia di Linux adalah Dovecot. Instalasi POP3 & IMAP Server di Linux tidak sulit dan tidak perlu mengkonfigurasi apa-apa karena biasanya langsung operasional. Di Ubuntu instalasi Dovecot dapat dilakukan menggunakan perintah

sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d File konfigurasi berada di folder / file

/etc/dovecot/ /etc/dovecot/ dovecot.conf /etc/dovecot/conf.d/20-imap.conf /etc/dovecot/conf.d/20-pop3.conf

Konfigurasi default tidak perlu di ubah untuk dapat beroperasi. Untuk mengaktifkan server POP3 & IMAP pada Ubuntu dapat menggunakan perintah

$ sudo /etc/init.d/dovecot start Simple Mail Transport Protocol (SMTP) – kirim / terima E-mail

Gambar 58: Konsep komunikasi email

Berkomunikasi dengan e-mail merupakan salah satu layanan Internet yang paling banyak digunakan. E-mail terkenal karena memberikan cara yang mudah dan cepat dalam mengirim informasi. Selain itu juga dapat menangani attachment kecil sampai file yang ukurannya cukup besar. Dan tidak perlu diragukan lagi, bahwa sebagian besar pengguna mengirim file menggunakan e-mail dari pada menggunakan program transfer file. Rata-rata pesan dalam e-mail tidak mencapai sepuluh kilobyte dan beberapa pesan mengandung beberapa megabyte data, karena digunakan untuk mengirim file. Mekanisme pertukaran e-mail menggunakan TCP/IP dapat dilihat di gambar.

Pemakai di terminalnya berhubungan dengan user agent (UA). Beberapa agent e-mail yang populer, seperti, antara lain: Alpine, Thunderbird. Pertukaran mail menggunakan TCP dilakukan oleh Message Transport Agent (MTA). MTA yang paling umum untuk Linux adalah Sendmail dan . Pemakai awam biasanya tidak berhubungan dengan MTA ini. MTA adalah tanggung jawab administrator jaringan.

Pada bagian ini akan dipelajari pertukaran elektronik mail antar dua MTA menggunakan TCP. Instalasi SMTP Server Untuk memudahkan proses belajar, ada baiknya kita menginstalasi server SMTP di komputer Linux yang kita gunakan. Salah satu SMTP Server yang tersedia di Linux adalah postfix. Instalasi Postfix relatif mudah melalui perintah

sudo apt-get install postfix Pada proses instalasi kita perlu mengisi informasi

• Pada pertanyaan General type of mail configuration, isi agar “Internet with smarthost” jika kita merupakan e-mail server di sebuah LAN yang tersambung ke Internet. • System mail name, isi dengan domain name server yang kita inginkan. • SMTP relay host di isi dengan server SMTP milik ISP, misalnya jika kita tersambung ke Telkom Speedy, kita dapat menggunakan smtp.telkom.net.

Restart SMTP Server menggunakan perintah

sudo /etc/init.d/postfix restart

Protokol SMTP Komunikasi antara dua MTA menggunakan NVT ASCII. Perintah dikirim oleh client ke server, dan server merespon dengan kode balasan numerik dan beberapa string yang dapat dibaca.

Contoh interaksi MTA ditampilkan berikut ini. Kita akan mengirim sebuah pesan ke mail server dan kita lihat hubungan SMTP-nya. Kita akan menggunakan server SMTP lokal postfix yang kita install sebelumnya. Asumsinya, mail server yang kita gunakan bernama yc0mlc.ampr.org dan username yang digunakan adalah onno.

Pertama-tama kita menuliskan perintah berikut di sebuah editor text, kita perlu mengubah yc0mlc.ampr.org dan onno dengan hostname dan username yang anda gunakan.

helo testing.percobaan.com mail from: rcpt to: data From: Onno W. Purbo To: Onno W. Purbo Subject: Testing 123

Percobaan Testing 123

. quit

Kemudian lakukan

telnet 127.0.0.1 25 Sehingga keluar

Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 lenovo ESMTP Postfix (Ubuntu)

Copy & paste tulisan yang kita buat di atas. Sehingga keluar responds dari SMTP Server yang kira- kira sebagai berikut

250 yc0mlc.ampr.org 250 2.1.0 Ok 250 2.1.5 Ok 354 End data with . 250 2.0.0 Ok: queued as 757E43C1DE5 221 2.0.0 Bye Connection closed by foreign host.

Sebetulnya kalau di urutkan proses interaksi yang terjadi adalah sebagai berikut

helo testing.percobaan.com >>> 250 yc0mlc.ampr.org mail from: >>> 250 2.1.0 Ok rcpt to: >>> 250 2.1.5 Ok data >>> 354 End data with . From: Onno W. Purbo To: Onno W. Purbo Subject: Testing 123

Percobaan Testing 123

. >>> 250 2.0.0 Ok: queued as 757E43C1DE5 quit >>> 221 2.0.0 Bye

Kalimat yang di beri tanda >>> adalah perintah yang dikirimkan oleh SMTP Server kepada kita.

Untuk mengirim pesan e-mail, hanya ada lima perintah yang digunakan, yaitu: HELO, MAIL, RCPT, DATA, dan QUIT. Cara kerja SMTP sangat sederhana. Komunikasi antara client dan server terdiri dari teks-teks yang mudah dibaca. Meski SMTP mendefinisikan perintah-perintah secara kaku, namun kita masih bisa dengan mudah membaca transkrip interaksi antara client dan server.

Mula-mula, client melakukan hubungan TCP secara aktif ke port 25, dan menunggu kode balasan 220 yang kadang kala di tambahkan ucapan selamat datang dari server, dalam hal ini ESMTP Postfix. Respon server harus dimulai dengan FQDN (fully qualified domain name) dari server, misal yc0mlc.ampr.org.

Selanjutnya client memperkenalkan dirinya dengan perintah EHLO, yaitu perintah yang ada pada ESMTP. Bagi MTA yang menggunakan SMTP versi awal yang primitif, maka MTA tersebut biasanya hanya mengenal perintah HELO. Argumen di belakang perintah tersebut harus FQDN dari client, misal yc0mlc.ampr.org.

Server merespon dengan memberikan identitas dirinya kepada client. Jika komunikasi sudah terbentuk, client dapat mengirim lebih dari satu pesan, mengakhiri hubungan, atau meminta server untuk mengirim aturan bagi pengirim dan penerima, sehingga pesan dapat mengalir dengan arah yang sebaliknya.

Transaksi mail dimulai dengan perintah MAIL, yang menjelaskan siapa pengirim pesan ini. Server selanjutnya mempersiapkan struktur datanya agar dapat menerima pesan baru, dan membalas perintah MAIL tersebut dengan kode 250, atau lengkapnya 250 OK.

Perintah selanjutnya RCPT, menjelaskan kepada siapa mail ditujukan. Jika ada banyak penerima, maka beberapa perintah RCPT dapat dikirimkan. Server harus mengirim pemberitahuan bagi setiap perintah RCPT ini dengan mengirim respon 250 OK, atau pesan kesalahan, misal 550 No such user here. Isi pesan dikirim oleh client dengan perintah DATA yang diakhiri dengan mengirim satu baris data yang hanya berisi satu titik. Server merespon dengan mengirim pesan 354 dan menentukan urutan karakter tertentu yang dijadikan sebagai tanda akhir pesan e-mail. Urutan ini sebenarnya terdiri dari 5 karakter: carriage return (CR), line feed (LF), titik (“.”), carriage return (CR), dan line feed (LF).

QUIT dikirim terakhir untuk mengakhiri transaksi pengiriman pesan e-mail ini. Server meresponnya dengan mengirim pesan 221, yang berarti setuju untuk menghentikan transaksi. Kedua pihak akhirnya menutup hubungan TCP.

Untuk membaca email yang dikirim melalui Command Line Interface (CLI) kita dapat menginstalasi aplikasi seperti mailutils atau alpine melalui perintah

apt-get install mailutils Di bawah ini adalah e-mail yang diterima oleh [email protected] lengkap dengan header informasi yang di tambahkan oleh MTA menggunakan perintah mail.

[email protected]:~$ mail Akan tampak

"/var/mail/onno": 1 message 1 new >N 1 [email protected] Tue Jan 8 12:22 16/530 ? 1 masukan “1” kemudian tekan ENTER untuk melihat e-mail pertama

Return-Path: X-Original-To: [email protected] Delivered-To: [email protected] Received: from testing.percobaan.com (localhost [127.0.0.1]) by lenovo (Postfix) with SMTP id 757E43C1DE5 for ; Tue, 8 Jan 2013 12:22:49 +0700 (WIT) Message-Id: <20130108052249.757E43C1DE5@lenovo> Date: Tue, 8 Jan 2013 12:22:49 +0700 (WIT) From: [email protected]

From: Onno W. Purbo To: Onno W. Purbo Subject: Testing 123

Percobaan Testing 123

? Maka akan terlihat e-mail yang tadi kita kirim masuk dengan baik.

Sebenarnya SMTP jauh lebih kompleks dibandingkan dengan yang dijelaskan di sini. Misalnya, jika seorang pemakai pindah, server bisa tahu dimana mailbox yang baru, dan memberi tahu client agar menggunakan alamat terbaru tersebut. Komponen E-mail Elektronik mail terdiri dari tiga (3) komponen. • Envelope, atau amplop. Ini digunakan oleh MTA untuk pengiriman. Dalam contoh sebelumnya, envelope ditandai dengan dua buah perintah SMTP:

MAIL From: RCPT To:

Isi dan interpretasi dari envelope SMTP ditentukan di RFC 821. RFC ini juga menentukan protokol yang digunakan untuk mengirim mail melalui hubungan TCP.

• Header, digunakan oleh user agent. Dalam contoh sebelumnya, ada beberapa field header dalam contoh, yaitu: Return-Path, X-Original-To, Delivered-To, Received, Date, From, Message-Id, To, dan Subject. Setiap field header berisi sebuah nama yang diikuti oleh sebuah titik dua (:), dan nilai dari field header tersebut. Format dan interpretasi atas field header ini ditentukan dalam RFC 822. Field header yang panjang, seperti Received, akan dilipat ke dalam beberapa baris, dengan ditambah sebuah spasi kosong di depannya.

• Body merupakan isi pesan dari pengirim ke penerima. Dalam RFC 822 disebutkan bahwa body ini merupakan baris-baris dalam bentuk text ASCII. Setiap baris yang dikirim menggunakan perintah DATA, tidak boleh melebihi 1024 byte. Relay Agent Baris pertama informasi yang diberikan oleh MTA lokal pada contoh kita di atas adalah “Connecting to [127.0.0.1] via relay...”. Pesan yang sudah diterima oleh MTA lokal dari user agent (UA) dikirim ke relay. Relay adalah host yang bertindak sebagai mesin relay untuk pengiriman mail. Jadi setiap mail yang dikirim ke luar jaringan, akan dikirim dulu ke relay agent ini, dan selanjutnya menjadi tanggung jawab relay agent untuk meneruskan ke tujuan.

Host yang bertindak sebagai relay agent harus didaftarkan di DNS sebagai MX (Mail Exchanger) dan setiap sistem e-mail di dalam domainnya diset agar mengirim mail mereka ke host ini.

Untuk melihat relay sebuah mesin di Internet dapat menggunakan perintah host, misalnya untuk gmail.com, seperti di bawah ini,

$ host gmail.com

gmail.com has address 216.58.221.69 gmail.com has IPv6 address 2404:6800:4005:806::2005 gmail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com. gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com. gmail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com. gmail.com mail is handled by 5 gmail-smtp-in.l.google.com. gmail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com.

Atau menggunakan perintah dig, misalnya untuk gmail.com, sebagai berikut,

$ dig MX gmail.com

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> MX gmail.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26911 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;gmail.com. IN MX

;; ANSWER SECTION: gmail.com. 1774 IN MX 40 alt4.gmail-smtp-in.l.google.com. gmail.com. 1774 IN MX 10 alt1.gmail-smtp-in.l.google.com. gmail.com. 1774 IN MX 20 alt2.gmail-smtp-in.l.google.com. gmail.com. 1774 IN MX 5 gmail-smtp-in.l.google.com. gmail.com. 1774 IN MX 30 alt3.gmail-smtp-in.l.google.com.

;; Query time: 1 msec ;; SERVER: 103.43.46.100#53(103.43.46.100) ;; WHEN: Tue Jan 10 10:30:30 WIB 2017 ;; MSG SIZE rcvd: 150

Terlihat bahwa relay agent untuk gmail.com di set ke gmail-smtp-in.l.google.com. Kebetulan mempunya prioritas 5. Informasi ini harus di set pada Domain Name System (DNS) yang digunakan, sering kali para administrator jaringan tidak mengerti fungsi MX pada DNS untuk operasi e-mail di Internet.

Di Internet, sebagian besar organisasi telah menggunakan sistem relay. Dengan sistem ini, kita dapat menyembunyikan setiap sistem e-mail individual dari luar. Gambar memperlihatkan sistem elektronik mail Internet yang menggunakan sistem relay di kedua ujungnya.

Ada empat MTA pada skenario tersebut, antara pengirim dan penerima. MTA lokal hanya meneruskan mail ke MTA relay milik organisasi yang sama. Dengan demikian, komunikasi antara kedua MTA ini menggunakan SMTP melalui intranet organisasi tersebut. MTA relay pada organisasi pengirim, meneruskan mail ke MTA relay pada organisasi penerima melalui Internet. MTA relay yang satunya ini selanjutnya mengirim mail ke host penerima, melalui komunikasi dengan MTA lokal pada host penerima tersebut. Semua MTA pada skenario ini menggunakan protokol SMTP.

Gambar 59: Relay e-mail Laporan Kegagalan Kegagalan pengiriman e-mail adalah hal yang wajar. Mail Server biasanya akan mengirimkan pesan, seperti di bawah ini:

Date: Wed, 1 Mar 2006 05:40:10 +0700 (WIT) From: Mail Delivery System To: [email protected] Subject: Undelivered Mail Returned to Sender Parts/Attachments: 1 Shown 14 lines Text, "Notification" 2 Shown 391 bytes Message, "Delivery report" 3 Shown 918 bytes Message, "Undelivered Message" 3.1 Shown 9 lines Text ------

This is the Postfix program at host yc0mlc.ampr.org.

I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to If you do so, please include this problem report. You can If you do so, please include this problem report. You can delete your own text from the attached returned message.

The Postfix program

: Host or domain name not found. Name service error for name=entahdimana.com type=A: Host not found

[ Part 2: "Delivery report" ]

Reporting-MTA: dns; yc0mlc.ampr.org X-Postfix-Queue-ID: DE135CDB3D X-Postfix-Sender: rfc822; [email protected] Arrival-Date: Wed, 1 Mar 2006 05:40:02 +0700 (WIT)

…. di hapus ….

Dalam laporan ke gagalan di atas, kesalahan terjadi karena domain entahdimana.com tidak di ketahui keberadaannya di Internet. Tentunya masih banyak lagi kesalahan pengiriman yang mungkin terjadi, misalnya, username yang dituju tidak ada, MTA tidak berhasil mengirimkan e-mail dalam selang waktu tertentu (biasanya sekitar 4 jam), MTA tidak berhasil mengirimkan e-mail dalam waktu beberapa hari sehingga mail terpaksa di buang. Extended SMTP Extended SMTP atau ESMTP merupakan hasil framework yang ditambahkan kepada SMTP. Adanya kemampuan baru pada ESMTP ini tidak mempengaruhi implementasi lama yang telah ada. EHLO, adalah perintah pengganti HELO, pada ESMTP. Ini merupakan pemberitahuan kepada server bahwa client akan memanfaatkan kemampuan baru pada ESMTP. Jika client membuka hubungan dengan perintah HELO, berarti dia masih ingin menggunakan implementasi yang lama, yaitu SMTP. Server yang kompatibel dengan ESMTP akan merespon dengan memberi kode 250. Respon ini normalnya bersifat multi baris yang setiap baris terdiri dari sebuah keyword dan argumen pilihan. Keyword-keyword ini menunjukkan ekstension SMTP yang didukung oleh server. Inisialisasi hubungan kepada beberapa server SMTP yang mendukung ESMTP akan kita lihat, untuk mengetahui ekstension SMTP yang didukung oleh masing-masing server. Kita melakukannya dengan perintah Telnet ke port 25.

[yc0mlc@yc0mlc ~]$ telnet yc0mlc.ampr.org 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 yc0mlc.ampr.org ESMTP Postfix EHLO test 250-yc0mlc.ampr.org 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 8BITMIME

Exteded command ditunjukkan dibelakang kode 250, yaitu PIPELINING, SIZE, VRFY, dan 8BITMIME. Server ESMTP ini menyatakan perintah-perintah pilihan dari RFC 821 yang didukungnya, dan dalam contoh ini adalah VRFY dan ETRN. Keyword 8BITMIME melarang client untuk mengirim karakter selain ASCII. Keyword SIZE akan membolehkan client memasukkan ukuran mail (bytes) setelah perintah MAIL FROM. Setiap keyword yang dimulai dengan X, seperti XUSR, merujuk pada ekstension SMTP lokal. Contoh berikut adalah server SMTP yang dimiliki oleh NOS (Network Operating System), yaitu server elektronik mail untuk jaringan radio paket. Server ini tidak mendukung Extended SMTP, sehingga memberi pesan kesalahan 500 Command unrecognized, terhadap perintah EHLO.

khnemu # telnet hathor 25 Trying 132.92.36.167... Connected to hathor.cnrg.net. Escape character is '^]'. 220 hathor.cnrg.net SMTP HMEITB ready EHLO khnemu 500 Command unrecognized rset 250 Reset state

Selanjutnya, client harus mengirim perintah RSET dan diikuti oleh perintah HELO.

Multipurpose Internet Mail Extension (MIME) Jika RFC 822 menentukan body message sebagai baris-baris teks dalam NVT ASCII tanpa struktur, maka RFC 1521 mendefinisikan ekstension yang memungkinkan adanya struktur dalam body message e-mail. Hal ini disebut MIME, Multipurpose Internet Mail Extension. MIME tidak memerlukan ekstension pada ESMTP atau header non-ASCII. MIME hanya menambah beberapa header yang memberitahukan kepada penerima struktur dari body message. Dengan demikian, body masih bisa dikirim menggunakan NVT ASCII, tidak perduli isi dari mail. Kalau pada ESMTP ada perintah SIZE yang menyatakan panjang maksimum mail, sementara MIME bisa sangat panjang, maka ESMTP harus tidak berpengaruh pada MIME. Yang diperlukan agar MIME bisa diterapkan adalah, kedua ujung, baik pengirim maupun penerima, harus memiliki user agent yang mengerti MIME.

Ada lima field header pada MIME:

Mime-Version: Content-Type: Content-Transfer-Encoding: Content-ID: Content-Description:

Contoh, pada message mail Internet, akan ada dua baris header seperti ini:

Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII

Default dari Internet adalah MIME versi 1.0 dengan charset US-ASCII. MIME mendefinisikan tujuh Content-type. Tabel berikut ini memperlihatkan ke tujuh tipe dan sub-tipenya.

Content-Type Subtype Keterangan Text plain Teks yang tidak diformat richtext Teks dengan format sederhana: tebal, miring, garis bawah, dst. enriched Penyederhanaan dan penyempurnaan dari richtext. multipart mixed Beberapa bagian dari body diproses secara berurutan. parallel Beberapa bagian dari body dapat diproses secara paralel digest Sebuah digest elektronik mail alternative Beberapa bagian dari body ada, semua menggunakan isi semantik yang identik. message rfc822 Content adalah pesan mail berdasarkan RFC 822. partial Content adalah bagian dari sebuah pesan mail. external-body Content merupakan penunjuk ke pesan yang sebenarnya. application octet-stream Biasanya data biner. postscript Sebuah program postscript. image jpeg Format ISO 10918. gif Format Graphic Interface Format dari CompuServe. audio basic Pengkodean menggunakan format -law ISDN 8-bit. video mpeg Format ISO 11172.

Pengkodean untuk transfer ditentukan oleh field header Content-Transfer-Encoding. Ada lima format pengkodean yang berbeda:

1. Default, ASCII (7 bit). 2. quoted-printable, seperti pada contoh sebelumnya. Ini berguna jika ada beberapa karakter yang menggunakan 8-bit set. 3. base64. 4. 8bit, yang mengandung karakter baris dan beberapa karakter non-ASCII. 5. binary, yaitu data 8-bit yang tidak mengandung baris.

Berikut ini contoh mail yang mengandung MIME dengan Content-Type MULTIPART dan subtype MIXED. Mail ini mengandung beberapa bagian atau attachment. Bagian pertama memiliki Content- Type TEXT dan bagian kedua adalah IMAGE/jpeg. From [email protected] Wed Mar 1 08:06:52 2006 X-Original-To: [email protected] Delivered-To: [email protected] Date: Wed, 1 Mar 2006 08:06:48 +0700 (WIT) From: "Onno W. Purbo" X-X-Sender: [email protected] To: [email protected] Subject: foto MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-2082643410-1141175208=:17717"

This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools.

--8323328-2082643410-1141175208=:17717 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Test pengiriman foto

--8323328-2082643410-1141175208=:17717 Content-Type: IMAGE/jpeg; name=OnnoW-STT.jpg Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=OnnoW-STT.jpg

/9j/4AAQSkZJRgABAAEAyADIAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/2wCEACEWGB0YFCEdGx0lIyEnMVM2MS0tMWVITDxTeGp+fHZq dHKFlb+ihY20j3J0puKotMXL1tjWgKDr++jQ+b/S1s0BIyUlMSsxYTY2Yc2J dInNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3N NQscaooOQFGAKAHYG4HAyOAaAEEaCQyBFDkYLY5P40ACIkYIRVUE5OBjJoAX KACgAoAKACgAoAKACgAoAQ9DQDKC/MfTNavQwEBz+QpvcA9Md6BC45zSHYQd cfU/qKb0EAOe1D0GWLYYf6r/AFqJFw3MrVsC+fjoB/KtIbIfVlLHy89PT8qp FARnGfSgYh+UA+1Akbemf8eUnoCRWMipbDiORzz/APWqrnMJimOwoGfxx/n9 aQmhv+f1oAXvj/Pb/GgBVG4+gz/n+dMCe0+6T6gVEzWHVFioLCgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//2Q==

--8323328-2082643410-1141175208=:17717—

Instalasi Mail Server Sederhana Di Linux ada beberapa software yang siap untuk Mail Server sederhana. Untuk memudahkan pengguna mengambil e-mail menggunakan POP3 dan IMAP telah tersedia dovecot yang di jelaskan di bagian sebelumnya.

Ada beberapa paket program yang akan membantu dalam mengoperasikan SMTP & mail server di Linux, antara lain adalah:

1. sendmail (SMTP server), ini merupakan SMTP server legendaris terutama digunakan pada server lama. 2. Postfix (SMTP server, alternatif dari Sendmail. Pada saat ini, tampaknya lebih banyak SMTP server yang menggunakan Postfix). 3. Squirrelmail (Webmail interface, supaya pengguna bisa mengakses menggunakan Web pada URL http://ipmesinanda/webmail/ atau http://127.0.0.1/webmail/ di mesin lokal). 4. dovecot (POP3 & IMAP server) 5. mailman (mailing list server yang mempunyai interface Web).

Semua paket program mail server di atas dapat di instalasi menggunakan fasilitas apt-get install di Debian / Ubuntu. Beberapa catatan untuk paket program ini, • dovecot dapat langsung di operasikan tanpa di konfigurasi. • Mailman baru akan jalan jika kita sudah membuat user mailman dan menset password site mailman. • Squirrelmail akan jalan jika dovecot sudah aktif. Squirrelmail membutuhkan akses ke server IMAP. • Sendmail dan Postfix hanya dapat jalan salah satu.

Setting default mail server umumnya hanya dapat me-relay mail dari localhost (127.0.0.1) saja. Agar Postfix dapat merelay e-mail dari workstation lain yang ada di LAN, kita perlu membuka satu parameter di file konfigurasi /etc/postfix/main.cf, agar,

inet_interfaces = all nilai default awalnya adalah net_interfaces = localhost, sehingga hanya localhost yang dapat mengirimkan e-mail melalui mail server postfix.

Biasanya untuk server lokal di LAN / IntraNet, kita perlu menset agar e-mail yang kita kirim dapat di lepaskan melalui relay di ISP. Misalnya, kita menggunakan TelkomNet, maka relay yang digunakan adalah smtp.telkom.net dapat diset melalui perintah,

relayhost = smtp.telkom.net

Untuk mengaktifkan mail server tidak terlalu sulit, hanya,

/etc/init.d/postfix restart

Dengan setting yang sangat minimal di atas, sebetulnya server kita telah dapat beroperasi dengan baik. Tentunya masih banyak detail konfigurasi lainnya yang bisa kita gunakan supaya sistem menjadi lebih effisien, lebih aman, dan lebih andal. Situs yang baik tentang Postfix di Indonesia adalah http://www.postfix.or.id.

Hypertext Transfer Protocol Sebelumnya telah dijelaskan bahwa Hypertext Transfer Protocol digunakan untuk jenis layanan WWW di jaringan TCP/IP. Spesifikasi protokol ini didefinisikan oleh Tim Berners-Lee dalam RFC 1945 dan digunakan di Internet sejak tahun 1990. Pada bagian ini akan dijelaskan bagaimana protokol HTTP bekerja, dimulai dari model hubungan HTTP, format pesan, dan cache di protokol HTTP.

RFC 1945 yang mendefinisikan protokol HTTP versi 1.0 ternyata dianggap masih memiliki kekurangan dan kemudian IETF menspesifikasikan protokol HTTP versi baru, yaitu 1.1 dalam RFC 2068. Perbaikan atas HTTP 1.0 antara lain adalah koneksi persistent dan pipelined serta model cache yang lebih baik.

Standarisasi Web dilakukan oleh W3C http://www.w3c.org. Sangat di sarankan, untuk membaca berbagai tutorial yang berhubungan dengan Web melalui alamat http://www.w3.org/2002/03/tutorials.

Model hubungan HTTP Protokol HTTP bersifat request-response, yaitu dalam protokol ini client menyampaikan pesan request ke server dan server kemudian memberikan response yang sesuai dengan request tersebut. Request dan response dalam protokol HTTP disebut sebagai request chain dan response chain. Hubungan HTTP yang paling sederhana terdiri atas hubungan langsung antara user agent dengan server asal. Hubungan HTTP tidak selalu seperti ini karena spesifikasi HTTP mengenal adanya beberapa komponen yang dapat terlibat dalam membentuk sebuah hubungan HTTP, yaitu client, user agent, server asal, proxy, gateway, dan tunnel.

Menurut spesifikasi HTTP, istilah-istilah di atas adalah sebagai berikut:

• Client - Program yang membentuk hubungan HTTP dengan tujuan untuk mengirimkan request • User agent - Client yang melakukan request, dapat berupa browser, editor, spider, atau perangkat lain • Server asal - Server tempat menyimpan atau membuat resource • Proxy - Program perantara yang bertindak sebagai server dan client dengan tujuan untuk membuat request atas nama client yang lain • Gateway - Server yang bertindak sebagai perantara untuk server lain. Gateway menerima request seolah-olah ia adalah server asal dan client tidak mengetahui bahwa gateway yang menerima request yang dikirim. • Tunnel - Program perantara yang bertindak sebagai perantara buta antara dua hubungan HTTP. Tunnel tidak dianggap sebagai pihak yang terlibat dalam hubungan HTTP, walaupun ia dapat membuat HTTP request.

Pada protokol HTTP terdapat tiga jenis hubungan dengan perantara: proxy, gateway, dan tunnel. Proxy bertindak sebagai agen penerus, menerima request dalam bentuk Uniform Resource Identifier (URI) absolut, mengubah format request, dan mengirimkan request ke server yang ditunjukkan oleh URI. Gateway bertindak sebagai agen penerima dan menerjemahkan request ke protokol server yang dilayaninya. Tunnel bertindak sebagai titik relay antara dua hubungan HTTP tanpa mengubah request dan response HTTP. Tunnel digunakan jika komunikasi perlu melalui sebuah perantara dan perantara tersebut tidak mengetahui isi dari pesan dalam hubungan tersebut. Gambar contoh hubungan HTTP yang melibatkan beberapa komponen dapat dilihat di gambar

Gambar 60: Komponen HTTP

Proxy atau gateway dapat menggunakan mekanisme cache untuk memperpendek rantai hubungan HTTP. Proxy pada gambar di atas dapat menggunakan cache dan memberikan response cache sehingga request dari UA tidak perlu dilayani oleh server asal karena proxy telah memberikan response atas request tersebut.

Instalasi Web Server dan Proxy Web Web server default yang biasanya digunakan di Linux adalah Web server Apache. Sementara, proxy server-nya adalah Squid dan Lusca. Cara mudah menginstalasi Web server Apache melalui perintah

sudo apt-get install apache2 atau kalau kita ingin lengkap dengan MySQL database server dan PHP, dapat menggunakan perintah sudo apt-get install apache2 php5 php5-xmlrpc php5-mysql php5-gd \ php5-cli php5-curl mysql-client mysql-server atau

sudo apt-get install apache2 php php-xmlrpc php-mysql php-gd php-cli \ php-curl mysql-client mysql-server

File konfigurasi apache berada di folder

/etc/apache2

Sedang file HTML yang ingin kita publikasi di Web dapat diletakan di /var/www/. Sebelum menggunakan Web Server Apache kira perlu merestart server, melalui perintah

/etc/init.d/apache2 restart

Instalasi Proxy Server Squid dapat dilakukan melalui perintah

apt-get install squid

Default konfigurasi yang ada di squid tidak dapat langsung digunakan untuk keamanan. Anda perlu mengubah satu line di konfigrasi Squid /etc/squid/squid.conf, supaya

http_access allow all

Restart Server Proxy Squid melalui perintah

/etc/init.d/squid restart konfigurasi defaultnya adalah http_access deny all, dengan membuka http_access menjadi allow all cukup berbahaya dari sisi keamanan. Sebaiknya kita melakukan hal lain yang lebih aman. Fasilitas konfigurasi yang lebih aman cukup banyak dan dapat dibaca di file konfigurasi /etc/squid/squid.conf.

Bagi anda yang ingin memblokir akses ke situs porno, situs kekerasan, situs perjudian dll. Telah tersedia SquidGuard di Linux yang dapat di install melalui fasilitas yang sama dengan Apache maupun Squid. SquidGuard dapat langsung di aktifkan dengan menimpakan file /etc/squid/squid.conf dengan file /etc/squid/squid-squidGuard.conf. Tentunya konfigurasi http_access allow all di atas harus di ulang kembali.

Hubungan Persistent Perbedaan mendasar antara HTTP/1.1 dengan HTTP/1.0 adalah penggunaan hubungan persistent. Jika HTTP/1.0 membutuhkan sebuah koneksi TCP untuk setiap permintaan URI, maka HTTP/1.1 dapat menggunakan sebuah koneksi TCP saja untuk beberapa permintaan URI. Server HTTP/1.1 dapat mengasumsikan bahwa hubungan yang digunakan dengan client HTTP/1.1 adalah hubungan persistent, kecuali jika client menyatakan tidak hendak menggunakan hubungan persistent. Dalam mekanisme ini, server dan client dapat mengirim sinyal untuk menutup koneksi TCP menggunakan header

Connection: close. Setelah sinyal ini dikirim, client tidak boleh lagi mengirimkan request ke server.

Server atau client yang berhubungan menggunakan protokol HTTP dengan versi lebih rendah dari 1.1 harus tidak mengasumsikan terjadinya hubungan persistent kecuali dinyatakan dengan jelas melalui sinyal

Connection: Keep-Alive.

Hubungan persistent juga mendukung request yang di-“pipeline”, yaitu client mengirimkan beberapa request sekaligus tanpa menunggu response selesai datang dari server. Server yang menerima request yang di-“pipeline” harus memberikan response sesuai urutan request. Client yang mendukung pipeline harus siap untuk kembali mengirimkan request tersebut jika server tidak memberikan response.

Format HTTP Kita mengenal protokol HTTP menggunakan format URL (Universal Resource Locator) HTTP dalam bentuk:

“http:” “//” host [ “:”port ] [ abs_path ]

Dengan,

host - nama domain Internet yang legal. port - bilangan yang menunjukkan port HTTP di host (default 80). abs_path - lokasi resource di dalam host.

Contoh:

http://www.google.co.id/index.html http://onnocenter.or.id/pustaka/

Jika kita mengisikan URL tersebut ke browser, browser bertugas untuk mengartikan URL tersebut dan menerjemahkannya dalam komunikasi protokol HTTP. Aturan dalam mengartikan format URL HTTP mengikuti aturan umum URI, yaitu case-sensitive, kecuali nama dan skema URI case- insensitive. Dengan aturan ini maka http:// onnocenter.or.id/pustaka/ sama dengan http://ONNOCENTER.or.id:80/pustaka/ tetapi berbeda dengan http://onnocenter.or.id:80/Pustaka/.

Komunikasi protokol HTTP terdiri atas pesan request yang diberikan oleh user agent dan response yang dikeluarkan oleh server. Setiap request dan response HTTP menggunakan format pesan generik seperti yang didefinisikan oleh RFC 822. Pesan HTTP terdiri atas baris mulai, header pesan, dan isi pesan beserta entity (opsional). Header pesan dan isi pesan dipisahkan oleh sebuah baris kosong, yaitu hanya berisi karakter CRLF. Baris mulai pada pesan request berisi pesan permintaan dari client, sementara pada pesan response, baris ini berisi status response atas request yang diterima. Header pesan dapat terdiri atas beberapa baris, tergantung dari field-field yang perlu disertakan dalam header tersebut. Terdapat empat jenis header pesan, yaitu header pesan umum yang berlaku di setiap jenis pesan, header request, header response, dan header entity.

Header yang umum pada pesan HTTP request dan response adalah

Header-umum = Cache-Control | Connection | Date | Pragma | Transfer-Encoding | Upgrade | Via Fungsi dari masing-masing field adalah,

• Field Cache-control memberikan aturan yang harus ditaati oleh seluruh mekanisme cache dalam rantai request/response. • Field Connection mengatur tipe hubungan HTTP, apakah akan menggunakan hubungan persistent atau tidak. • Field Date memberikan informasi mengenai waktu asal pesan. Field Transfer-Encoding menentukan jenis transfer yang diberikan kepada isi pesan agar dapat sampai dengan aman ke client. • Field Upgrade pada pesan HTTP digunakan untuk mengganti protokol yang hendak digunakan, field ini berguna sebagai mekanisme transisi dari protokol HTTP/1.1 ke protokol tipe lain. • Field Via digunakan oleh proxy dan gateway untuk memberitahu jalur yang digunakan dalam sebuah rantai request/response.

Isi pesan HTTP digunakan untuk mengirimkan isi entity. Keberadaan isi pesan dalam pesan request ditandai dengan adanya header Content-Length. Dalam pesan response, keberadaan isi pesan ini tergantung atas kode-status yang diberikan. Dalam sebuah pesan HTTP, header Content-Length dan Transfer-Encoding tidak boleh muncul bersama-sama. Kedua header ini menunjukkan hal yang berlawanan: adanya header Transfer-Encoding menunjukkan bahwa panjang isi pesan tidak diketahui sementara header Content-Length menunjukkan panjang isi pesan dalam byte. Jika dalam sebuah pesan terdapat kedua header ini, maka header Content-Length harus diabaikan.

Setiap request dan response dalam komunikasi HTTP harus menyertakan versi protokol yang digunakan. Format penulisan versi protokol ini adalah

HTTP/.

Major dan minor adalah bilangan yang menunjukkan versi dari protokol HTTP. Dengan aturan ini penulisan versi protokol untuk versi 1.0 adalah HTTP/1.0 dan HTTP/1.1 untuk versi 1.1.

Penyertaan versi protokol ini diperlukan karena dapat saja terjadi dalam sebuah hubungan HTTP, server dan client menggunakan versi yang berbeda. Jika ini terjadi maka server dan client harus menggunakan versi HTTP tertinggi yang mungkin agara keduanya dapat berkomunikasi dengan baik.

Request Format baris mulai dari pesan request HTTP dimulai dengan metode request, diikuti oleh URI untuk request, versi protokol yang digunakan dan diakhiri oleh karakter CRLF

Baris-request = Method SP Request-URI SP HTTP-Version CRLF

Method menunjukkan metode apa yang hendak dilakukan atas resource yang ditunjuk oleh Request- URI. Ada beberapa metode yang didefinisikan oleh HTTP/1.1, yaitu:

OPTIONS, GET, HEAD, POST, PUT, DELETE & TRACE.

Untuk setiap pesan request, server harus memberikan kode jawaban untuk memberitahu apakah client diperbolehkan mengakses menggunakan method yang diinginkan. Jika method tidak boleh digunakan, server harus menjawab dengan kode 405 (Method Not Allowed).. Dari semua metode di atas, hanya metode GET dan HEAD yang harus diimplementasikan oleh semua server. Jika server tidak mengimplementasikan sebuah metode atau tidak mengenal metode yang diminta client, maka server harus memberikan response 501 (Not Implemented).

Metode GET mengambil informasi apa saja dalam bentuk entity yang diidentifikasikan oleh Request-URI. Metode HEAD sama dengan metode GET kecuali bahwa server harus tidak mengirimkan entity yang ditunjukkan oleh Request-URI. Metode POST digunakan untuk meminta server menempatkan entity yang dikirim bersama request sebagai subordinat dari Request-URI yang dituju. Metode ini biasa digunakan dalam mengirimkan form.

Metode PUT meminta server untuk menempatkan entity request sebagai Request-URI. Perbedaan antara POST dan PUT adalah Request-URI dalam metode POST bertindak sebagai proses penerima data atau sebagai gateway, sementara dalam metode PUT, Request-URI adalah entity yang terdapat dalam request.

Metode DELETE meminta server untuk menghapus URI yang dikirim client. Client tidak dapat menjamin server berhasil melaksanakan request yang diminta. Metode TRACE digunakan untuk meminta loop-back pesan. Metode TRACE ini dapat digunakan untuk diagnostik.

Request-URI menunjukkan resource yang hendak diakses melalui pesan request. Request-URI dapat berupa URI absolut, path absolut, atau tanda asteriks (‘*’). Request-URI tergantung pada request itu sendiri. Tanda asteriks ‘*’ berarti bahwa request tidak merujuk pada resource tertentu, melainkan pada server. Request-URI asteriks hanya boleh digunakan jika metode yang digunakan tidak harus merujuk pada sebuah resource. Contoh:

OPTIONS * HTTP/1.1

Request-URI absolut diperlukan jika request dilakukan ke server proxy. Server proxy yang biasa digunakan squid dengan port 3128. Proxy dapat memberikan jawaban berdasarkan cache atau meneruskan request tersebut. Proxy boleh meneruskan request tersebut langsung ke server asal atau ke server proxy yang lain. Jika proxy meneruskan request ke server proxy lain, maka Request-URI tidak boleh diubah. Contoh request absolut:

GET http://www.google.co.id/index.html HTTP/1.1

Request dalam bentuk path absolut digunakan untuk menentukan resource pada server atau gateway. Jika sebuah request menggunakan Request-URI path absolut maka request juga harus mengirimkan lokasi jaringan URI dalam sebuah field header host. Dalam kasus seperti request di atas, proxy dapat menghubungi server www.google.co.id pada port 80dan mengirimkan request

GET /index.html HTTP/1.1 Host: www.google.co.id

Perhatikan bahwa dalam Request-URI path absolut informasi host tujuan juga turut disertakan. Server HTTP/1.1 harus mengetahui bahwa sebuah request ditentukan dengan melihat Request-URI dan header host. Server HTTP/1.1 yang tidak membolehkan resource berbeda untuk field Host yang berbeda dapat mengabaikan field header Host tersebut. Jika server tersebut membolehkan resource yang berbeda maka server tidak boleh mengabaikan field header Host dalam Request-URI path- absolut. Jika server tersebut menerima Request-URI absolut, maka field header Host harus diabaikan. Jika ternyata host yang dirujuk pada Request-URI absolut atau path-absolut bukan host yang valid di server, maka server harus memberikan respon kesalahan 400 (Bad Request).

Setelah baris-request, client mengirimkan request header yang berisi informasi mengenai request atau mengenai client itu sendiri ke server. Header-header tersebut adalah: Header-request = Accept | Accept-Charset | Accept-Encoding | Accept-Language | Authorization | From | Host | If-Modified-Since | If-Match | If-None-Match | If-Range | If-Unmodified-Since | Max-Forwards | Proxy-Authorization | Range | Referer | User-Agent

Keterangan mengenai beberapa field header adalah sebagai berikut, Field Header Keterangan Accept Menentukan tipe media yang dapat diterima sebagai respon dari server Contoh: Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Accept-Charset Mengindikasikan set karakter yang dapat diterima sebagai respon Contoh: Accept-Charset: iso-8859-1,*,utf-8 Accept-Language Memperkecil jenis bahasa yang lebih disukai untuk diterima oleh client Contoh: Accept-Language: da, en-gb;q=0.8, en;q=0.7 Host Menentukan host dan port tempat resource hendak diambil. Client HTTP/1.1 harus menyertakan field ini dalam setiap request. Contoh: Host: www.google.co.id:80 If-Modified-Since Digunakan bersama metode GET memberikan kondisi bahwa jika resource yang hendak diakses belum diubah sejak waktu yang ditentukan oleh field ini, maka resource tersebut tidak akan dikirim oleh server, melainkan server memberikan response 304 (not modified) tanpa isi pesan. Contoh: If-Modified-Since: Sat, 21 Feb 2006 19:43:31 GMT User-Agent Berisi informasi mengenai user agent yang melakukan request ke server. Contoh: User-Agent: Lynx/2.7.1 libwww-FM/2.14

Contoh request lengkap yang berasal dari browser Internet Explorer 6.0 yang hendak mengakses http://www.yahoo.com

GET / HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Host: www.yahoo.com Connection: Keep-Alive Cookie: FPB=881h90lik11rsfl3; B=5ut53s91rs4no&b=2;

Contoh request lengkap yang berasal dari browser Opera 7.52 yang hendak mengakses http://www.google.co.id.

GET / HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.52 [en] Host: www.google.co.id Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: en Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Connection: Keep-Alive Response Setelah menerima request, server harus memberikan response HTTP atas request tersebut, yang terdiri atas baris status, header-header, dan isi pesan. Baris status berisi kode-status yang berupa kode tiga digit dan frasa-alasan yaitu penjelasan singkat atas kode-status tersebut.

Digit pertama kode-status menentukan kelas dari response. Protokol HTTP/1.1 mendefinisikan 5 nilai untuk digit pertama: 1xx: Informational – request diterima, dan proses berlanjut 2xx: Success – request diterima dan dimengerti 3xx: Redirection – request membutuhkan tindakan lebih lanjut 4xx: Client Error - request mengandung sintaks yang salah 5xx: Server Error – server gagal melakukan tindakan sesuai request.

Server HTTP dapat menghasilkan kode-status selain yang didefinisikan dalam RFC sepanjang digit pertama kode-status tersebut dimengerti oleh aplikasi HTTP.

Format baris-status adalah sebagai berikut:

Baris-Status = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Setelah baris response, server HTTP mengirimkan header-header response ke client. Header ini memberikan informasi mengenai server serta mengenai akses lebih lanjut ke URI.

Header-response = Age | Location | Proxy-Authenticate | Public | Retry-After | Server | Vary | Warning | WWW-Authenticate

Keterangan mengenai header-response dapat dilihat pada tabel berikut.

Field Header Keterangan Age Perkiraan lama waktu sejak response atas URI diambil dari server asal. Header ini harus digunakan oleh cache HTTP/1.1. Location Digunakan untuk mengarahkan client ke URL lain. Contoh: Location: http://www.w3c.org/pub/WWW/People.html Proxy-Authenticate Field ini memungkinkan client untuk mengirimkan identitasnya untuk menggunakan proxy yang membutuhkan autentikasi. Public Memperlihatkan jenis metode yang didukung oleh server Retry-After Dapat digunakan bersama kode-status 503 untuk menunjukkan berapa lama layanan belum dapat diberikan. Contoh: Retry-After: Fri, 31 Mar 2006 23:59:59 GMT Server Berisi informasi mengenai server yang menangani request Contoh: Server: Apache/2.0.54 (Fedora) Vary Digunakan server untuk mengirimkan sinyal bahwa entity yang dikirim adalah hasil negosiasi yang ‘server driven’. URI dengan header ini harus tidak di-cache. Warning Digunakan untuk memberi informasi tambahan selain dari kode-status. WWW-Authenticate Dikirimkan beserta kode-status 401. Terdiri atas setidaknya satu challenge yang menentukan scheme autentikasi dan parameter- parameternya.

Contoh request responds antara client dan server Fedora Core 4 yang bekerja pada IP 192.168.0.1 adalah,

Request Response HEAD /index.html HTTP/1.1 HTTP/1.1 200 OK Host: 192.168.0.1 Date: Wed, 01 Mar 2006 04:25:51 GMT Connection: close Server: Apache/2.0.54 (Fedora) Last-Modified: Wed, 01 Mar 2006 04:25:26 GMT ETag: "c3de1-870-55447980" Accept-Ranges: bytes Content-Length: 2160 Connection: close Content-Type: text/html; charset=UTF-8 HEAD / HTTP/1.1 HTTP/1.1 400 Bad Request Date: Wed, 01 Mar 2006 04:21:37 GMT Server: Apache/2.0.54 (Fedora) Connection: close Content-Type: text/html; charset=iso-8859-1

Entity Setiap pesan HTTP baik request maupun response dapat menyertakan isi pesan atau entity tergantung dari apakah pesan tersebut memungkinkan untuk membawa entity. Entity HTTP terdiri atas header entity dan isi entity. Header entity berisi informasi mengenai isi entity atau mengenai resource yang ditunjuk oleh Request-URI.

Header-entity = Allow | Content-Base | Content-Encoding | Content-Language | Content-Length | Content-Location | Content-MD5 | Content-Range | Content-Type | ETag | Expires | Last-Modified | extension-header

Field Header Keterangan Allow Menunjukkan metode yang didukung oleh resource yang ditunjuk oleh Request-URI Content-Base Menentukan base URI yang digunakan untuk mengartikan URI relatif. Contoh: Content-Base: http://www.detik.com/ Content- Menentukan tipe media dan mekanisme decoding yang harus Encoding diberikan pada entity. Contoh: Content-Encoding: gzip Content- Menentukan bahasa yang hendak digunakan. Language Content-Length Menentukan panjang isi pesan dalam oktet Content- Menginformasikan lokasi resource dari isi pesan Location Content-MD5 Untuk memeriksa integritas isi entity Content-Range Digunakan untuk mengirimkan sebagian dari seluruh entity. Misal untuk mengirim 500 byte pertama dari 1234 byte: Content-Range: bytes 0-499/1234 Content-Type Menentukan tipe media isi entity yang dikirim ke penerima Etag Menentukan tag untuk entity yang bersangkutan. Digunakan untuk GET bersyarat. Expires Mengindikasikan waktu kadaluwarsa entity. Cache harus mengambil ke server asal jika waktu kadaluwarsa entity sudah terlewati. Last-Modified Mengindikasikan waktu terakhir perubahan entity.

Contoh request client yang sedang mengambil entity berbentuk file GIF

GET /status_03.gif HTTP/1.1 Accept: */* Referer: http://202.105.11.46 Accept-Language: en-us Accept-Encoding: gzip, deflate If-Modified-Since: Wed, 16 Apr 2003 00:06:10 GMT; length=195 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Host: 202.105.11.46 Connection: Keep-Alive Authorization: Basic YWRtaW46bjFtZDQ=

Contoh jawaban yang dikirim oleh server ke client dengan entity file gambar GIF yang terkirim bersama-nya.

HTTP/1.1 200 OK Server: Embedded HTTP Server 3.4.0 Content-Type: image/gif Content-Length: 195 Last-Modified: Tue, 16 Apr 2003 00:06:10 GMT Connection: close

GIF89a..".... [...... \...... ?...... A...... ZAD.kj..... |Q...... 3....,...... "...H`'.di.h.....b.....v...... %....#2.Y,....)M...kU[.z.....+.>..z.n....|....;

Cache HTTP Salah satu cara untuk mempercepat response HTTP di jaringan adalah dengan menggunakan cache. Dalam protokol HTTP dimungkinkan dalam sebuah rantai request/response terdapat beberapa proxy yang dapat bertindak sebagai server cache. Spesifikasi protokol HTTP juga menyertakan elemen- elemen agar cache dapat dilakukan sebaik mungkin. Tujuan adanya cache adalah mencegah pengiriman request dan menghilangkan kebutuhan untuk mengirim response lengkap dari server. Cache mencegah pengiriman request ke server asal dengan menggunakan mekanisme kadaluwarsa sehingga memperpendek rantai request/response dan waktu round-trip. Menghilangkan kebutuhan untuk mengirim response lengkap dari server asal dengan menggunakan mekanisme validasi berarti mengurangi kebutuhan bandwidth.

Isu utama dalam cache adalah kinerja, yang diukur dalam kecepatan waktu response, dan benarnya response yang dihasilkan cache. Cache harus memberi response yang paling ‘up-to-date’ atas sebuah request, yaitu response yang telah divalidasi dengan server asal; atau masih ‘cukup segar’; atau memberikan peringatan jika ‘kesegaran’ cache dilanggar; atau response 304 (Not Modified), 305 (Proxy Redirect), atau error yang sesuai.

Mekanisme waktu kadaluarsa dalam cache HTTP/1.1 dilakukan dengan menggunakan pendekatan heuristik. Cache menghitung umur entry URI dalam cache dan memperkirakan apakah entry tersebut sudah kadaluwarsa. Cache HTTP/1.1 menggunakan header Age dalam berkomunikasi antar cache untuk menginformasikan selang waktu sejak sebuah entri diambil dari server asal. Dengan cara ini cache dapat menghitung umur sebuah entri yang diperolehnya dari cache lain.

Jika entri dalam cache dianggap tidak ‘segar’ lagi maka cache perlu melakukan validasi ke server asal atau server cache lain yang memiliki entri cache yang masih baru. Cache mem-validasi entri dengan mengirimkan request bersyarat ke server. Jika entri tersebut tidak berubah maka server akan mengeluarkan kode-status seperti 304 (Not Modified). Jika ternyata entri berubah, server akan mengirimkan isi pesan entri tersebut secara lengkap.

Cache menggunakan header ETag dan sebagai alat memvalidasi entri URI yang utama. ETag disebut sebagai pemvalidasi kuat (strong validator) karena ETag berubah setiap kali isi pesan berubah. Parameter lain yang dapat yang digunakan sebagai alat pemvalidasi adalah waktu modifikasi terakhir. Parameter ini menunjukkan waktu terakhir entity tersebut berubah sampai hitungan detik. Parameter ini disebut sebagai pemvalidasi lemah (weak validator) karena nilainya tidak selalu berubah walaupun entity berubah (entity dapat saja berubah dua kali dalam satu detik). Dalam beberapa kasus server tidak ingin menggunakan ETag sebagai pemvalidasi kuat tersebut karena entity tidak berubah secara signifikan.

Mekanisme validasi dan waktu kadaluwarsa juga dapat diatur oleh server asal atau client melalui header Cache-Control. Header Cache-Control yang terdapat dalam pesan HTTP akan menyebabkan cache mengikuti mekanisme validasi dan kadaluwarsa yang sesuai dengan header tersebut. Client dapat memaksa cache untuk memvalidasi entri ke server asal dengan header

Cache-Control: max-age=0 atau memaksa agar mengambil entri terbaru dari server asal dengan header

Cache-Control: no-cache

Server juga dapat memaksa agar cache HTTP/1.1 selalu memvalidasi sebuah request ke server asal dengan header

Cache-Control: must-revalidate yang dikirim beserta response atas request tersebut.

Untuk melihat bagaimana cache HTTP bekerja, di bawah ini diperlihatkan contoh request dari client melalui server proxy squid yang bekerja pada 192.168.0.1 (yc0mlc.ampr.org) port 3128. Kali pertama, client meminta URL http://www.detik.com/ melalui server cache yc0mlc.ampr.org. Isi request dari client adalah,

GET http://www.detik.com/ HTTP/1.1 Host: www.detik.com Connection: close

Header dari response server cache yang MISS adalah seperti berikut:

HTTP/1.0 200 OK Date: Wed, 01 Mar 2006 07:00:50 GMT Server: Apache/2.0.55 (Trustix Secure Linux/Linux) PHP/5.0.4 Last-Modified: Mon, 30 Jan 2006 02:51:15 GMT ETag: "13e324-235-8533cec0" Accept-Ranges: bytes Content-Length: 565 Content-Type: text/html; charset=ISO-8859-1 X-Cache: MISS from yc0mlc.ampr.org Proxy-Connection: close

Dari response yang diberikan oleh server yc0mlc.ampr.org terlihat bahwa server tersebut tidak menyimpan URL yang diminta client. Hal ini terlihat melalui header X-Cache: MISS.

Beberapa saat kemudian client kembali melakukan request atas URL yang sama. Server proxy memberikan response dan kali ini server tersebut menjawab dengan menyatakan bahwa URL tersebut tersimpan dalam cache melalui header X-Cache: HIT.

HTTP/1.0 200 OK Date: Wed, 01 Mar 2006 07:00:50 GMT Server: Apache/2.0.55 (Trustix Secure Linux/Linux) PHP/5.0.4 Last-Modified: Mon, 30 Jan 2006 02:51:15 GMT ETag: "13e324-235-8533cec0" Accept-Ranges: bytes Content-Length: 565 Content-Type: text/html; charset=ISO-8859-1 Age: 206 X-Cache: HIT from yc0mlc.ampr.org Proxy-Connection: close

Setelah selang beberapa waktu client kembali meminta URL yang sama, dan kali ini client memaksa agar server cache melakukan validasi ke server asal dengan menggunakan header Cache- Control. Request dari client adalah seperti berikut:

GET http://www.detik.com/ HTTP/1.1 Host: www.detik.com Cache-Control: max-age=0 Connection: close

Karena client memaksa server cache untuk mem-validasi URL ke server asal, maka server cache melakukan request bersyarat ke server asal tersebut. Alat validasi yang digunakan oleh server cache adalah tanggal perubahan terakhir URL, seperti request berikut:

GET / HTTP/1.0 Host: www.detik.com Via: 1.1 yc0mlc.ampr.org:3128 (squid/2.5.STABLE6) X-Forwarded-For: 192.168.0.22 Cache-Control: max-age=0 Connection: keep-alive

Setelah mendapat response dari server asal, server cache memberikan response ke client seperti berikut:

HTTP/1.0 200 OK Date: Wed, 01 Mar 2006 07:00:50 GMT Server: Apache/2.0.55 (Trustix Secure Linux/Linux) PHP/5.0.4 Last-Modified: Mon, 30 Jan 2006 02:51:15 GMT ETag: "13e324-235-8533cec0" Accept-Ranges: bytes Content-Length: 565 Content-Type: text/html; charset=ISO-8859-1 X-Cache: HIT from yc0mlc.ampr.org Proxy-Connection: close

Response yang dikeluarkan server cache menunjukkan bahwa URL tersebut tidak berasal dari cache yang disimpan server, melainkan langsung dari server asal walaupun tanggal URL terakhir diubah serta ETag tetap sama dengan response sebelumnya. File Sharing / Network Neighbourhood Bagi mereka yang mengunakan jaringan lokal, salah satu aplikasi yang sangat bermanfaat adalah Neighbourhood yang memungkinkan pengguna untuk share file, share printer, share resource komputer dengan komputer lain yang ada di jaringan lokal. Bagian ini akan membahas lebih dalam tentang mekanisme / protocol komunikasi yang digunakan di network neighbourhood. Sejarah Singkat SAMBA Diawali oleh IBM dan Sytee yang mengembangkan sebuah sistem NetBIOS (Network Basic Input/Output System). NetBIOS ini merupakan perangkat lunak yang menjadi perantara antara program dan perangkat keras network. Pengalamatan dalam NetBIOS menggunakan nama 16 bit yang sekarang dikenal dengan NetBIOS Name. Di dalam lingkungan Windows NT, disebut dengan Computer Name.

Microsoft kemudian menambahkan sebuah feature berupa I/O redirection, sehingga sebuah sumber daya lokal (printer, harddisk) dapat diakses oleh komputer lain, yang masih berada dalam satu jaringan lokal. Bagi pengguna LAN manager atau MS-DOS Client, tentu anda kenal dekat dengan perintah

Net use drive:\\computer name\share name atau pengguna Windows dengan perintah

Map Network Drive

Kedua perintah ini akan membuat sebuah sumber daya remote di komputer lain seolah-olah berada di komputer kita.

Microsoft menyebut penambahan feature ini sebagai NetBEUI. Hal ini kemudian disalahartikan bahwa NetBEUI merupakan protokol standar dalam lingkungan jaringan Microsoft. Padahal nama dari I/O Redirection dari NetBEUI adalah SMB (Server Message Block) atau menurut istilah Microsoft CIFS (Common Internet File System). Keterangan lengkap mengenai protokol SMB ini bisa dibaca di RFC 1001 (ftp://ftp.rfc-editor.org/in-notes/rfc1001.txt) dan 1002 (ftp://ftp.rfc- editor.org/in-notes/rfc1002.txt).

Dalam protokol standar LAN Manager dan Windows (NetBUI atau SMB atau CIFS), hal terpenting yang menjadi urat nadinya adalah kemampuan file atau print sharing, serta kemampuan browsing. Dengan munculnya NT, ditambahkan dua feature tambahan yakni authentication dan authorization untuk setiap servis yang akan diakses. Jadi jika kita bicara tentang NetBEUI, sebenarnya ada 2 komponen yang terdapat didalamnya yakni:

• NetBIOS sebagai penggenal komputer yang satu dengan lainnya. • I/O Redirection sebagai fasilitas untuk memberikan share dan mengakses shared resource komputer lain.

Di Linux, dikembangkan Samba untuk menjalankan dua proses tersebut di atas transport protocol TCP/IP. Di jaringan berbasis TCP/IP, semua mekanisme aplikasi jaringan harus berjalan di atas TCP/IP. Mekanisme protokol NetBIOS di atas TCP/IP di dokumentasikan dalam dua RFC, yaitu, RFC 1001 dan 1002. Hal ini sering di sebut sebagai NetBIOS yang berjalan di atas TCP/IP, atau NBT (NetBIOS over TCP/IP). Perangkat lunak Samba sendiri merupakan kumpulan program yang mengimplementasikan protokol Server Message Block (SMB) untuk UNIX. Protokol ini juga kerap disebut Common Internet File System (CIFS), LanManager atau protokol NetBIOS.

Samba dikembangkan pertama kali oleh Andrew Tridgell, yang kini menjadi kepala pengembangan tim Samba. Semua berawal ketika pada 1991 ia mendapat sebuah utilitas bernama Digital Pathworks, yang merupakan satu utilitas MS-DOS untuk melakukan mounting ke server Digital UNIX. Sayangnya saat itu Tridgell tidak bisa melakukan hal yang sama ke mesin Solaris. Kemudian ia berpikir untuk mengembangkan sebuah protokol yang bisa melakukan fungsi SMB di UNIX. Ia melihat bahwa dokumentasi dari IBM tentang SMB cukup lengkap, dan mulai mengembangkan SMB untuk UNIX.

Andrew Tridgell mengawali idenya dari upaya untuk mencoba mengakses file dimesin Windows istrinya dari mesin UNIX miliknya tahun 1991. Pada 1992, Tridgell pun menemukan satu varian baru dari UNIX yang dikembangkan seorang Finlandia, Linus Torvalds, dan bernama Linux. Varian ini memiliki kelebihan dalam keterbukaan kode asal (source code), serta dikembangkan oleh ribuan orang, maka Tridgell memilih untuk menggunakan Linux. Masih di tahun yang sama, pada saat Torvalds bersama dengan Tridgell inilah terjadi satu 'Tragedi Penguin', kejadian yang menyebabkan logo dari Linux adalah Penguin. Yaitu saat Torvalds dikejar dan dipatuk oleh seekor Penguin di sebuah Kebun Binatang di Canberra. Pada saat itu Torvalds tengah mengunjungi Tridgell.

Perkembangan Samba selanjutnya dibentuk Tim Samba yang bekerja di rumah Tridgell di Canberra, dan disponsori oleh Australia National Univerity, tempat ia mendapatkan gelar Ph.D. Saat ini Samba dikembangkan sebagai bagian dari Open Source Software (OSS) dan didistribusikan di bawah lisensi GNU General Public License (GPL) (http://www.gnu.org).

Samba dapat menjembatani kompleksitas berbagai platform sistem operasi Linux (UNIX) dengan mesin Windows yang dijalankan dalam suatu jaringan. Samba memungkinkan server Unix ataupun Linux untuk berkomunikasi dengan protokol dari produk Microsoft Windows dalam satu jaringan, sehingga dapat:

• Menghubungkan setiap mesin Linux(Unix) dengan mesin Windows • Menempatkan mesin Linux/Unix sebagai PDC (Primary Domain Controller) sebagaimana yang dilakukan NT dalam jaringan Microsoft Windows.

Oleh sebab itu kita dapat menggunakan client Windows dalam server Linux/Unix dengan layanan seperti:

• Dapat saling berbagi satu atau lebih filesistem (file sharing). • Berbagi fasilitas seperti printer yang terinstal baik pada server maupun client-nya (printer sharing). • Membantu clients browsing di Network Neighborhood. • Membantu otorisasi tiap clients untuk dapat logging ke Windows domain. • Membantu atau memberikan dengan WINS name server resolution.

Untuk mengikuti perkembangan terakhir Samba, dapat dilihat di http://www.Samba.org. Mailing list Samba terbuka bagi setiap orang yang ingin bergabung dengan Tim Samba. Mengenal SMB/CIFS dan NetBIOS Sebetulnya jaringan yang dibangun dengan SMB tidak berbeda jauh dengan jaringan yang dibangun dengan TCP/IP lainnya. SMB/CIFS merupakan protokol yang digunakan mesin Windows untuk berkomunikasi dengan server Samba dan begitu sebaliknya. SMB protokol digunakan untuk operasi file & printer seperti:

• membuka dan menutup file. • membuat dan menghapus direktori. • membaca dan menghapus file. • mencari file. • proses antrian file dalam print spool.

Tiap operasi tersebut dapat diencode ke dalam pesan SMB dan ditransmisikan ke dan dari server. SMB Format Richard sharpe, anggota team SAMBA mendefinisikan SMB sebagai protokol "request-response". Client mengirim SMB request ke server, dan server mengirim SMB response ke client. Informasi lebih jauh lainnya dapat dilihat pada alamat http://www.samba.org/cifs/docs/what-is-smb.html. Pada dasarnya, format SMB terdiri dari string header dan command (perintah). Mari kita lihat lebih dekat format tersebut. Variasi SMB Protokol SMB selalu bertambah dengan perintah-perintah baru. Setiap versi baru yang muncul selalu kompatibel dengan versi sebelumnya. Ini memungkinkan suatu LAN untuk memiliki berbagai client dan server yang menjalankan berbagai versi SMB pada suatu waktu. Tabel dibawah memberikan gambaran beberapa versi protokol SMB. ID string digunakan sebagai pendefinisian level protokol yang digunakan untuk berkomunikasi oleh client server.

Tabel: SMB Protocol Dialects Protocol Name ID String Used By Core PC NETWORK PROGRAM 1.0 Core Plus MICROSOFT NETWORKS 1.03 DOS LAN Manager 1.0 MICROSOFT NETWORKS 3.0 LAN Manager 1.0 LANMAN1.0 LAN Manager 2.0 LM1.2X002 LAN Manager 2.1 LANMAN2.1 NT LAN Manager 1.0 NT LM 0.12 LAN Manager 2.1? Windows for Workgroups 3.1a NT LAN Manager 1.0? NT LM 0.12 NT LAN Manager 1.0? Samba NT LAN Manager 1.0 CIFS 1.0

Samba menerapkan spesifikasi NT LM 0.12 untuk NT LAN Manager 1.0 compatible dengan berbagai varian smb. Spesifikasi CIFS adalah Lan manager 0.12 dengan beberapa penambahan spesifik. Referensi: http://samba.anu.edu.au/cifs/docs/what-is-smb.html Format Header SMB Tabel dibawah menunjukan format header SMB. Jika clientt pertama kali mencoba menyambungkan diri (koneksi) ke server, maka client belum diberi nilai TID (tree identifier). Bila hubungan / koneksi telah berhasil dilakukan maka null TID (xFFFF) ditempatkan di header field. Field header SMB terlihat pada table berikut:

Field Size (bytes) Description 0xFF 'SMB' 1 Protocol identifier COM 1 Command code, from 0x00 to 0xFF RCLS 1 Error class REH 1 Reserved ERR 2 Error code REB 1 Reserved RES 14 Reserved TID 2 Tree identifier; a unique ID for a resource in use by client PID 2 Caller process ID UID 2 User identifier MID 2 Multiplex identifier; used to route requests inside a process

Format perintah SMB Header berisi byte-byte yang merupakan perintah SMB atau balasan. Masing-masing perintah, seperti untuk Open File (SMBopen) atau Get Print Queue (SMBsplretq), mempunyai paremeter dan data sendiri. Seperti SMB header fields, tidak semua perintah perlu digunakan, tergantung pada perintah yang dibutuhkan. Contohnya perintah Get Server Attributes (SMBdskattr) akan menset WCT dan BCC menjadi nol. Segmen perintah tersebut dapat dilihat pada tabel berikut.

Tabel: SMB Command Contents Field Size (Bytes) Description WCT 1 Word count VWV Variable Parameter words (size given by WCT) BCC 2 Parameter byte count DATA Variable Data (size given by BCC) Interaksi SMB client dan server SMB digunakan dalam interaksi request dan responds antara client server. Pada dasarnya format protocol yang digunakan baik untuk request maupun responds adalah sama / tidak berbeda jauh. Setiap message akan terdiri dari bagian header yang besarnya tetap, di ikuti oleh bagian parameter dan data yang besarnya bervariasi.

Sesudah terhubung pada level NetBIOS, client siap untuk mengirimkan request ke server. Akan tetapi client dan server harus saling mengidentifikasi varian protocol mana yang mereka saling mengerti & akan digunakan. Client mengirimkan negprot SMB ke server, berisi daftar protocol dialek yang dimengerti client. Server akan meresponds dengan index dari dialek yang akan dia gunakan, atau 0xFFFF jika tidak ada dialek yang dapat di terima.

Dialek yang lebih baru dari protokol Core dan CorePlus akan membutuhkan informasi tambahan dalam negprot response untuk menunjukan kemampuan mereka (besar buffer max, canonical file names, etc).

Jika protokol SMB telah terhubung, client akan meneruskan untuk login ke server jika dibutuhkan. Client dapat melakukannya menggunakan sesssetupX SMB. Responds dari server akan memberitahukan apakah username / password yang dimasukan telah benar atau salah. Aspek / hal yang paling penting dari responds adalah UID dari login user. UID ini harus dikirimkan dengan semua transaksi SMB yang di lakukan terhadap server tersebut. Jika client telah logon, maka client dalam melanjutkan untuk melihat tree dari folder.

Client mengirim tcon or tconX SMB untuk memberitahukan nama share yang akan di hubungi. Server akan meresponds dengan TID yang akan digunakan oleh client untuk hubungan selanjutnya dengan share tersebut.

Setelah tersambung ke tree, client sekarang dapat membuka file dengan open SMB, di lanjurkan dengan membaca-nya dengan read SMB, menulis-nya dengan write SMB, dan menutupnya dengan close SMB. Mengenal Lebih Lanjut NetBIOS dan WINS Sebelum kita membahas bagaimana integrasi antara Samba-Linux dengan Windows, ada baiknya kita lihat cara kerja NetBIOS. Protokol ini merupakan non-routable protokol yang bersifat broadcast based. Non-routable berarti protokol ini tidak memiliki kemampuan menyeberang ke segmen network lain, sedang broadcast based artinya komputer yang menggunakan protokol ini selalu mengirimkan pesan ke seluruh jaringan, memberitahukan jika sebuah komputer sedang online.

Dalam skenario sederhana, saat sebuah komputer dinyalakan dalam suatu domain, maka komputer tersebut mengirim secara broadcast kepada seluruh komputer yang ada dalam jaringan dan mendeklarasikan keberadaan dirinya dengan nama dari NetBIOS. Proses ini disebut dengan name registration. Nama ini yang kemudian akan muncul bila kita browsing di network neighborhood.

Pada saat yang sama dengan name registration mesin di jaringan, komputer yang baru online tersebut juga melaksanakan name resolution. Name resolution adalah proses menterjemahkan nama NetBIOS kedalam nomor IP tertentu. Kedua proses tersebut bekerja berdasarkan standardisasi RFC 1001 dan RFC 1002 yang dibuat oleh IETF.

Pada tahun 1987, Internet Engineering Task Force (IETF) mengeluarkan dokumen standarisasi RFC 1001 dan 1002. Dokumen RFC 1001 & 1002 berisikan garis besar tentang bagaimana NetBIOS dapat digabungkan dengan jaringan berbasis TCP/UDP. Standarisasi ini kemudian dikenal dengan NetBIOS over TCP/IP atau disingkat dengan NBT. Standarisasi tersebut yang membahas layanan jaringan sebagai berikut:

• Name service, layanan untuk penamaan group, user dan komputer ke jaringan yang dapat diterjemahkan menjadi IP address yang dikenal oleh mesin (name registration dan name resolution), seperti yang dikenal dengan DNS pada internet. Ia bertanggungjawab memastikan tidak terjadi duplikasi nama (disebut juga nama NetBIOS).

Data communication services, yakni: • Support. Menyediakan transmisi tanpa koneksi yang tidak menjamin suksesnya pengiriman paket. Metoda datagram ini digunakan oleh Naming Service. • Sessions Support. Memungkinkan pengenalan & monitoring paket dapat dilakukan yang ditransmisikan di sebuah jaringan circuit virtual. Dalam modus connection oriented (virtual circuit) yang reliabel ini, NetBIOS menjamin pengiriman pesan hingga 64Kbyte. Metoda ini digunakan sewaktu membuat koneksi jaringan di Network Neighbourhood atau lewat perintah command-line NET USE.

Keduanya merupakan protokol komunikasi sekunder yang digunakan untuk pengiriman dan meneruskan data antar mesin (dari NetBIOS) pada jaringan. Telah disebutkan diawal bahwa NetBIOS dikembangkan oleh IBM, NetBIOS menyediakan media transformasi tingkat rendah (pada TCP/IP) untuk berkomunikasi dengan komputer lain.

Dalam proses file dan print sharing di NetBIOS, sebetulnya ada dua (2) proses yang berjalan, yaitu:

• Mailslots • Named Pipes

Mailslot adalah proses unidirectional communication, yang memungkinkan setiap kita membuka icon Network Neighborhood di Desktop, kita dapat melihat komputer mana saja yang sedang on- line. Analogi untuk keadaan ini sama seperti kalau satu komputer on-line dia akan terus mengabarkan berita ke teman-temannya dalam satu domain, "Halo saya Workstation satu, di node 5. Hubungi saya, ya?"

Sedang Named Pipes adalah proses komunikasi dua arah (bidirectional communication). Proses ini terjadi pada saat kita mengakses sebuah komputer, kemudian kita melihat resource apa yang bisa dibuka di komputer tersebut. Pada saat kita berhasil masuk ke komputer tersebut dan menggunakan resource-nya, maka terjadilah Named Pipes.

Ke dua proses ini mampu dilakukan juga dengan sangat baik oleh Samba. Sebuah Samba server dapat memberi akses pada sebuah komputer yang menjalankan Windows atau LAN Manager, atau MS-DOS Client untuk menggunakan filenya, atau sebaliknya. Samba juga dapat mengakses direktori yang di-share pada mesin Windows.

Dengan penambahan beberapa feature baru, NetBIOS berubah menjadi NetBIOS Extended User Interface (NetBEUI), yang di rancang untuk local area networks (LAN) skala kecil, dan masing- masing komputer mempunyai sebutan /nama sendiri (max. 15 karakter).

Protokol NetBEUI sangat terkenal dengan aplikasi jaringannya, termasuk yang bekerja pada Workgroups di Windows dan Novell. Karena protokol jaringan yang merupakan pilihan untuk mengembangkan komunitas Internet menggunakan TCP/IP dan UDP/IP, maka implementasi NetBEUI pada protokol TCP/IP menjadi penting.

Dengan berkembangnya TCP/IP, maka NT 4.0 menambahkan satu feature yang disebut Windows Socket (Winsock.dll). Gunanya agar protokol NetBEUI yang tidak bisa routing, bisa dijalankan di atas protokol yang bisa melakukan routing seperti TCP/IP. Para pengguna Novell Netware tentu familiar dengan istilah "IPX encapsulated with TCP/IP", seperti itulah proses NetBEUI yang berjalan di atas TCP/IP. Feature ini yang kemudian hari di standarkan oleh RFC 1001, yang disebut sebagai NBT. Kemudian ada juga penambahan feature berupa WINS (Windows Internet Name Service). WINS (Windows Internet Name Service) Mempunyai banyak server di jaringan tidak akan bermanfaat banyak jika pengguna tidak dapat menemukan server tersebut. Tentunya kita dapat saja mengkonfigurasi client untuk mengetahui server di lingkungannya, tapi ini tidak menolong jika ada server baru atau jika server lama di non- aktifkan.

Untuk memecahkan masalah ini, mekanisme browsing di usulkan. Sebuah server membroadcast informasi tentang keberadaannya. Client akan memonitor broadcast ini dan membuat browse list. Dalam lingkungan NetBEUI hal tersebut sebetulnya cukup, akan tetapi di lingkungan TCP/IP akan menjadi masalah jika tidak dalam satu subnet.

Microsoft mengusulkan browse servers dan Windows Internet Name Service (WINS) untuk menjawab hal ini. WINS itu sendiri tidak lain adalah penerapan NetBIOS Name Service (NBNS) oleh Microsoft, yang melakukan proses Name Resolution dan Browsing. Kedua proses ini dalam Samba dijalankan oleh nmbd. Memang, WINS = NBNS, merupakan servis di mana NetBIOS Name dipetakan ke IP address, mirip seperti proses DNS (Domain Name Service) yang memetakan IP adress ke hostname di Internet.

Jika dalam domain ada server WINS, maka semua komputer dalam domain tersebut tidak menerima atau mengirim pesan secara broadcast. Tiap komputer yang akan online, dia harus melaporkan hostname, address dan workgroup atau mendaftarkan nama NetBIOS-nya ke server WINS. Server WINS akan menyimpan nama semua mesin yang telah mendaftarkan namanya dan membantu user saat browsing di network neighborhood.

WINS server yang sedang aktif disebut primary WINS Server. Kita dapat menginstal primary dan sekondary WINS Server, sebagai backup bagi primary WINS server bila mati atau gagal beroperasi/tidak dapat diakses.

Dalam keluarga sistem operasi Windows, hanya Windows NT yang dapat menyediakan server WINS, baik itu NT Workstation maupun NT Server. Samba hanya akan berfungsi sebagai primary WINS Server, bukan sebagai secondary WINS Server. Jadi dengan mengaktifkan WINS di Samba, kita sudah menjalankan proses NBNS. Tipe Node Strategi apa yang anda gunakan pada client dari jaringan anda pada saat melakukan dan menyelesaikan masalah name registration? masing-masing mesin pada jaringan NBT mempunyai cara untuk mengatasi masalah tersebut dengan beberapa metode seperti : b-node, p-node, m-node dan h-node. Tabel: Tipe NetBIOS Node Role Value b-node menggunakan registrasi broadcast dan resolusi saja. p-node menggunakan registrasi poin-to-point dan resolusi saja. m-node menggunakan NBNS server jika broadcast gagal. h-node (hybrid) menggunakan NBNS server untuk registrasi dan resolusi; menggunakan broadcast jika NBNS server tidak merespon atau tidak beroperasi. Share, Universal Naming Convention (UNC) dan IP Addressing SMB memberikan satu level hirarki dari resource yang di share atau “share” setiap komputer di jaringan. Nama komputer dan nama share dibutuhkan untuk mengakses resource yang di share. Share name kira-kira equivalen dengan direktori tempat file. Nama komputer di samba dapat berupa NetBIOS name, IP address atau hostname yang dapat di resolve menjadi IP address. smbd memberikan akses ke directory dan printer yang di share. Akses ke directory & printer yang di share melalui smbd dapat di kontrol menggunakan username & password. nmbd digunakan untuk browse network neighborhood. nmbd digunakan untuk membroadcast informasi nama NetBIOS ke semua komputer yang ada di jarngan. Program nmbd akan bekerja sama dengan server Windows Internet Naming Service (WINS) yang biasanya jalan di komputer Windows NT. Untuk jaringan yang kecil, sebetulnya tidak terlalu dibutuhkan nmbd.

Universal Naming Convention (UNC) adalah konvensi nama yang digunakan oleh Microsoft. UNC memungkinkan sebuah nama file dengan informasi komputer tempat fil tersebut berada bersama subdirektori-nya. Path di Windows akan berbentuk \dir1\dir2\filename.txt. Dengan UNC, maka akan bentuk \\computer1\share1\dir1\dir2\filename.txt. Di samba, penulisan slash berbeda, menjadi //computer1/share1/dir1/dir2/filename.txt. Memang tidak akan berjalan di Windows, tapi samba dapat mengakses resource yang ada di Windows.

Penggunaan Samba di Linux Samba seperti juga open source project yang lain seperti Apache Web Server, dapat di peroleh di CD-ROM distribusi Linux. Versi terbaru Samba dapat di ambil / di download dari Web Samba http://www.samba.org.

Pada dasarnya ada beberapa komponen / software di Samba, yaitu:

• smbd & nmbd yang berupa server. • Berbagai software client, seperti, smbmount, smbumount, smbclient dan masih banyak lagi adalah berbagai tool yang dapat digunakan sebagai client jaringan.

Instalasi Samba di Linux Instalasi samba cukup sederhana sekali dapat dilakukan menggunakan perintah

apt-get install samba atau jika ingin lebih lengkap dapat menggunakan

apt-get install samba smbclient

Konfigurasi Samba di Linux File konfigurasi samba terdapat di /etc/samba/smb.conf. Tidak banyak yang perlu di set untuk memperkenalkan mesin SERVER di workgroup TEST ke jaringan lokal. Yang perlu di set hanya:

[global] # workgroup = NT-Domain-Name or Workgroup-Name workgroup = TEST # server string is the equivalent of the NT Description field server string = Samba Server netbios name = SERVER

Biasanya di bagian bawah dari file konfigurasi terdapat contoh teknik men-share sebuah folder. Sebagai contoh, kita akan menshare folder /home/public menjadi share PUBLIC di jaringan dan menginginkan semua orang agar dapat menulis di folder tersebut. Konfigurasinya adalah:

[public] path = /home/public public = yes only guest = no writable = yes printable = no

Agar pengguna dapat mengakses dengan mudah jangan lupa mengubah owner dari folder /home/public/ tersebut menjadi nobody.nobody melalui perintah

# chown nobody.nobody /home/public/

Akan lebih aman lagi jika semua file di folder /home/public di set agar milik nobody.nobody melalui

# chown –Rf nobody.nobody /home/public/

Bagi anda yang sulit untuk mengkonfigurasi file konfigurasi, dapat menggunakan interface grafis dari SWAT atau Webmin. Menggunakan Samba Menggunakan samba untuk network neighborhood juga tidak terlalu sukar. Sebetulnya, ada beberapa client software yang grafis, seperti, LinNeighborhood, Gnomba, dsb. Berikut ini, contoh software client di shell / text yang saya sering gunakan.

Mengkaitkan sebuah folder “share1” di “komputer1” ke folder /mnt/data di komputer samba dapat dilakukan menggunakan perintah:

smbmount //komputer1/share1 /mnt/data -o username=admin,password=pass atau mount -t cifs //komputer1/share1 /mnt/data -o username=admin,password=pass atau mount -t smbfs //komputer1/share1 /mnt/data -o username=admin,password=pass dengan memasukan username (contoh admin) dan password (contoh pass), maka folder share1 sekarang dapat diakse secara lokal di folder /mnt/data komputer kita. Tentunya folder /mnt/data harus kita buat dulu sebelum proses sharing ini dilakukan. Proses mengcopy file seperti hal-nya kita mengcopy file di sistem operasi.

Bagi mereka yang terbiasa menggunakan FTP, dapat menggunakan perintah smbclient untuk mengakses folder “share1” di “komputer”

smbclient //komputer1/share1 Password:

Hasilnya kira-kira Domain=[TEST] OS=[Unix] Server=[Samba 3.0.14a-2] smb: \>

Selanjutnya kita dapat menggunakan perintah FTP biasa, seperti, put, dir, get dsb., untuk melakukan operasi tranfer file dll. Pemrogramman Jaringan Kemampuan untuk membuat aplikasi jaringan menjadi sangat penting dengan berkembang pesatnya Internet. Ilmu yang perlu di kuasai adalah kemampuan untuk melakukan network programming. Kebanyakan pelajaran programming yang diberikan di kampus tidak menekankan kemampuan untuk melakukan network programming. Network programming meliputi pembuatan program komputer yang memungkinkan proses komunikasi antar komputer melalui jaringan komputer.

Pembahasan lebih lengkap tentang network programming membutuhkan beberapa buah buku, oleh karenanya tidak akan di bahas terlalu dalam pada kesempatan ini. Network Programming Menggunakan nc nc adalah perintah yang menjalankan netcat. netcat adalah tool di Unix yang dapat membaca dan menuliskan data melalui jaringan, menggunakan protokol TCP atau UDP. netcat dirancang agar menjadi tool "back-end" yang dapat digunakan secara langsung atau di gunakan oleh program / script lain.

Selain itu, netcat tool untuk debugging dan explorasi jaringan yang mempunyai banyak fitur, karena netcat mampu untuk membuat berbagai sambungan yang kita butuhkan dan mempunyai beberapa kemampuan built-in yang menarik.

Penggunaan secara umum termasuk: • TCP proxy sederhana. • Shell-script based HTTP client dan server. • Network daemon untuk percobaan. • ProxyCommand Sock atau HTTP untuk SSH.

Pemakaian nc:

nc [-46bCDdhklnrStUuvZz] [-I length] [-i interval] [-O length] [-P proxy_username] [-p source_port] [-q seconds] [-s source] [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]

Client / Server model menggunakan nc dapat dibuat sangat sederhana sekali. Kita dapat melakukannya dengan membuka dua buah console yang berbeda di satu komputer, atau menggunakan dua komputer dalam jaringan. Kita dapat menjalankan nc sebagai sebuah server untuk mendengarkan pada port tertentu untuk sambungan, contoh:

nc -l 1234 nc akan medengarkan port 1234. Pada console yang lain, sambungkan ke mesin yang sedang menjalankan server pada port 1234 menggunakan perintah:

nc 127.0.0.1 1234

Kirim data menggunakan perintah nc 127.0.0.1 1234 < filetest.txt atau mengetik data / text yang akan di kirim langsung melalui keyboard. IP address 127.0.0.1 dapat diganti dengan IP address komputer yang dituju.

Network Programming menggunakan Python Python adalah salah satu bahasa pemrogramming yang relatif sederhana. Python mempunyai kemampuan untuk melakukan pemrogramman jaringan. Untuk menulis Internet server, kita menggunakan fungsi soket yang tersedia di soket modul untuk membuat objek socket. Sebuah objek socket kemudian digunakan untuk memanggil fungsi-fungsi lain untuk setup server socket. Selanjutnya memanggil bind (hostname, port) berfungsi untuk menentukan port untuk layanan pada host yang diberikan. Setelah itu, call metoda untuk menerima objek yang kembali. Metode ini menunggu sampai klien terhubung ke port yang anda tentukan, dan kemudian mengembalikan objek koneksi yang merepresentasikan koneksi ke klien. Bentuk code server.py yang dibuat cukup sederhana kira-kira sebagai berikut,

#!/usr/bin/python # This is server.py file import socket # Import socket module

s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service. s.bind((host, port)) # Bind to the port

s.listen(5) # Now wait for client connection. while True: c, addr = s.accept() # Establish connection with client. print 'Got connection from', addr c.send('Thank you for connecting') c.close() # Close the connection

Untuk berbicara ke server sederhana yang kita buat di atas, kita dapat membuat client sederhana yang akan membuka hubungan ke server. Mari kita menulis sebuah program klien yang sangat sederhana yang akan membuka koneksi ke port 12345 dan host yang ditentukan. Hal ini sangat sederhana untuk membuat klien soket menggunakan fungsi soket modul Python. socket.connect (hosname, port) membuka sambungan TCP ke nama host pada port. Setelah anda memiliki socket yang terbuka, anda dapat membaca dari socket itu seperti objek IO lainnya. Setelah selesai, ingatlah untuk menutupnya, seperti anda akan menutup file.

Kode berikut client.py adalah klien yang sangat sederhana yang menghubungkan ke host dan port tertentu, membaca data yang tersedia dari soket, dan kemudian exit -

#!/usr/bin/python # This is client.py file import socket # Import socket module

s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service.

s.connect((host, port)) print s.recv(1024) s.close # Close the socket when done

Jalankan server.py di background kemudian jalankan client.py untuk melihat hasilnya. # Following would start a server in background. $ python server.py &

Setelah server berjalan, jalankan client sebagai berikut:

$ python client.py

Hasilnya kira-kira

Got connection from ('127.0.0.1', 48437) Thank you for connecting

Ringkasan Aplikasi merupakan protokol level atas dalam lapisan protokol TCP/IP. Beberapa aplikasi yang banyak digunakan adalah E-mail menggunakan POP3, SMTP, Web menggunakan HTTP dan file sharing menggunakan SMB.

Aplikasi-aplikasi jaringan umumnya bersifat client-server. Artinya, dalam setiap operasinya, selalu ada mesin yang bertindak sebagai server, yang tugasnya sebagai penyedia data (HTTP) atau layanan (SMTP). Komunikasi antara client dan server inilah yang diatur oleh protokol aplikasi tersebut. Ketiga protokol yang dijelaskan di atas menggunakan sistem request-response, cara yang paling umum digunakan dalam hubungan client-server. Setiap kali client mengirimkan request, server selalu terlebih dahulu memberikan baris status agar client dapat menentukan apa yang selanjutnya dilakukan terhadap response tersebut.

Perkembangan berikutnya dari SMTP dan HTTP adalah penggunaan connection caching, yaitu mengirimkan beberapa set data (mail untuk SMTP, URI untuk HTTP) sekaligus dalam satu kali hubungan TCP. Dengan menggunakan connection caching terbukti kecepatan pengiriman data lebih cepat dibandingkan tanpa connection caching. Lebih Lanjut Masih banyak aplikasi jaringan yang belum di bahas dalam kesempatan ini, terutama dengan berkembangnya Android menjadikan aplikasi yang berbasis geospasial dan massa yang besar menjadi menarik. Beberapa contoh aplikasi yang belum di bahas, seperti,

• Aplikasi multimedia, seperti streaming di Internet. Pembahasan lebih dalam dapat di baca di buku “Hacking Streaming” diterbitkan oleh Elexmedia. • Aplikasi telepon, seperti Voice over Internet Protocol (VoIP) dengan protocol Session Initiatio Protocol (SIP). Pembahasan lebih dalam dulu pernah diterbitkan di buku “VoIP Cikal Bakal Telepon Rakyat” oleh Elexmedia. Sayang buku ini sudah tidak di cetak lagi. Mungkin harus di tulis ulang agar bisa di terbutkan kembali. • Aplikasi belajar di atas Internet, menggunakan moodle untuk e-learning. • Aplikasi Chatting, seperti Whatsapp, Telegram dsb. • Aplikasi Game, ini merupakan ilmu tersendiri yang menggabungkan teknik grafis / multimedia dengan server. • Aplikasi Geospasial, seperti pemesanan Gojek, Grab dll. • Aplikasi untuk data yang sangat besar, seperti Hadoop (Big Data). • Analisa menggunakan teknik data mining, big data, graph data dll.

Dan tentunya masih banyak lagi, yang tidak mungkin di bahas secara mendalam dalam buku ini. BAB 12: Domain Name System

DNS Domain & Mapping Setiap network interface yang terhubung ke jaringan TCP/IP pasti memiliki IP address yang unik. IP versi 4 32 bit, apalagi IP versi 6 128 bit, bukan sesuatu yang mudah diingat. Manusia lebih mudah mengingat nama / hostname daripada angka / nomor.

Aplikasi komputer sebenarnya tidak memerlukan hostname. Setiap host di internet tetap menggunakan IP address untuk berhubungan dengan host lain. Hostname justru diperlukan oleh manusia untuk mempermudah berselancar di jaringan komputer.

Sebagai contoh, coba ketikkan kedua URL berikut pada browser anda.

http://www.yahoo.com http://68.142.197.66 http://68.142.197.68

URL ini akan menghasilkan halaman web yang sama, yaitu www.yahoo.com. perbedaanya hanyalah saat anda mengetikkan www.yahoo.com, komputer anda terlebih dahulu mencari IP address dari komputer host dengan nama www.yahoo.com.

Dengan panjang IP address versi 4 yang 32 bit, apalagi IP v6, dijamin pengguna sukar untuk mengingat nomor / IP address dari setiap mesin. Pengguna / manusia akan lebih mudah mengingat nama atau hostname (di dunia Internet). Untuk memudahkan manusia, maka umumnya mesin / server di Internet akan mempunyai hostname untuk mudahkan manusia. Untuk keperluan routing maka hostname harus di translasi balik ke alamat numerik (IP address).

Di awal perkembangan ARPANET, setiap host memaintain file yang bernama hosts yang berisi semua host, IP addressnya, dan aliasnya. Tapi dengan semakin besarnya jaringan, mekanisme maintenance file hosts menjadi tidak mencukupi untuk perkembangan jaringan.

Perlu dicatat bahwa file hosts masih ditemukan di system unix, biasanya untuk penamaan mesin- mesin di jaringan lokal untuk mengurangi traffic DNS. File tersebut biasanya akan ditemukan di direktori /etc.

Untuk menangani banyaknya nama baru di jaringan, Domain Name System (DNS) kemudian di buat. DNS pada dasarnya sebuah database yang terdistribusi yang berisi informasi hostname dan IP address dari semua domain yang ada di Internet. Selalu ada satu authoritative name server untuk setiap domain yang membawa semua informasi DNS yang berhubungan dengan domain tersebut. Biasanya sebuah domain mempunyai minimal sebuah backup secondary name server yang tentang domain tersebut, tentu saja mempunyai lebih dari satu buah backup name server sangat di halalkan.

Dalam bahasa awam, DNS kira-kira mirip dengan addressbook di handphone yang kita gunakan. Addressbook pada dasarnya menyimpan daftar nama dan nomor HP orang tertentu. Manusia biasanya lebih mudah mengingat nama, sementara device sebetulnya bekerja dengan nomor. Internet Domain Name dan Struktur-nya Internet hostname menggunakan struktur adress yang bertingkat / berhirarki terdiri atas top-level domain, subdomain dan hostname. Top-level domain name dan IP network address dialokasikan dan di maintain oleh Internet Assigned Numbers Authority (IANA) (http://www.iana.org/) dan sekarang lebih banyak di manage oleh Internet Corporation For Assigned Names and Numbers (ICANN) (http://www.icann.org/) yang bertanggung jawab atas semua koordinasi dan managemen dari DNS. Domain administrator bertanggung jawab atas hostname dan alokasi address di dalam domain-nya.

Gambar 61: Struktur Domain

Hirarki penamaan Internet lebih mudah di mengerti jika hostname di baca dari kanan ke kiri. Semua hostname di akhiri dengan top-level domain name. Sebagai contoh : osiris.alexandria.jalawave.net.

• Tanda “.” paling kanan menunjukkan Root Domain • Net merupakan Top Level Domain • Jalawave merupakan domain level dua (second level domain) • Alexandria merupakan domain level tiga (third level domain) • Osiris merupakan nama host/komputer yang bersangkutan.

Sesuai konvensi, label yang menunjukkan domain ditulis dari kiri ke kanan, dipisahkan dengan tanda titik, dengan domain yang paling jauh dari root ditulis terlebih dahulu. Penulisan secara lengkap seperti diatas, mulai dari nama host hingga tanda titik yang melambangkan root disebut sebagai Fully Qualified Domain Name (FQDN).

Top level domain digunakan untuk menunjukan jenis perusahaan, instansi, lembaga, atau negara tempat komputer ini berada. Top level domain (TLD) ini dapat dibagi menjadi 3 jenis, yaitu: • TLD generik (generic domain) • TLD negara (country domain) • TLD arpa.

Generic top-level domains (sebagian terbatas hanya untuk Amerika Serikat) termasuk .com (organisasi komersial), .edu (institusi pendidikan), gov (pemerintah Amerika Serikat), .mil (militer Amerika Serikat), .org (organisasi non-profit), .net (network provider), dan int (organisasi international. Daftar lengkap Generic Top Level Domain gTLD dapat dilihat di http://www.iana.org/gtld/gtld.htm.

Top-level domain yang lain menggunakan kode negara dua huruf, sepeti au (Australia), ca (Canada), de (Jerman), es (Spanyol), fr (Perancis), jp (Jepang), mx (Mexico), id (Indonesia), in (India) and us (United States). Daftar lengkap top level domain masing-masing negara dapat dilihat di Country Code Top Level Domain ccTLD (http://www.iana.org/cctld/cctld-whois.htm), termasuk kita dapat melihat siapa penanggung jawab domain Indonesia (.id).

Masing-masing negara menentukan sendiri bagaimana subdomain-nya. Di Indonesia, penetapan sublevel domain, sampai level ke dua adalah sebagai berikut,

• Sublevel Kedua Keterangan • id Tergantung setoran :) ... • go.id Sub domain untuk lembaga pemerintah • mil.id Sub domain untuk militer • co.id Sub domain untuk lembaga komersial • ac.id Institusi akademik • sch.id Institusi sekolah • net.id Penyedia jasa network • or.id LSM dan lembaga non komersial • web.id Perorangan • desa.id Desa

Untuk penamaan third level domain dan seterusnya, hal ini diserahkan pada pengelola jaringan yang bersangkutan. Misalkan anda pengelola jaringan komputer di “Universitas Atas Angin”, anda dapat menggunakan domain atasangin.ac.id, angin.ac.id dan sebagainya, sepanjang domain ini belum dimiliki oleh universitas lain.

Selain memetakan nama host ke IP address, DNS juga memiliki fasilitas reverse mapping. Reverse mapping ialah proses memetakan IP address ke domain-name. Reverse mapping juga digunakan untuk menghasilkan keluaran yang lebih manusiawi, mudah dibaca dan diinterpretasikan, misalnya untuk pembacaan log-file. Secondary level domain untuk reverse mapping adalah:

in-addr.arpa Untuk IP versi 4 ipv6.arpa Untuk IP versi 6 ipv6.int Untuk IP versi 6

Saat suatu organisasi bergabung ke Internet dan mendapatkan otoritas untuk nama domain tertentu, dia juga mendapat otoritas untuk namespace in-addr.arpa atau ipv6.int, yang sesuai dengan IP address yang dimiliknya. Masalah Penamaan Sebelum di definisikannya DNS, file HOSTS.TXT digunakan untuk memetakan IP address dengan hostname / alias. Cara ini sekarang tidak digunakan di Internet karena jumlah mesin yang sudah mencapai jutaan.

Akan tetapi pada hari ini file HOSTS.TXT masih digunakan. Fungsi file HOSTS.TXT terutama untuk penamaan mesin-mesin di jaringan lokal sehingga tidak perlu DNS untuk melihat IP address- nya. Lokasi HOSTS.TXT tergantung sistem operasi yang digunakan. Pada sistem operasi Linux, biasanya terdapat di /etc/hosts.txt

Contoh isi file HOSTS.TXT dari domain aku.com adalah

192.168.210.1 router.aku.com router 192.168.210.2 dns.aku.com dns 192.168.210.3 mail2.aku.com www ftp mail2 dns2 192.168.210.4 mail.aku.com mail 192.168.210.5 pc1.aku.com pc1

Setiap line berisi tiga kolom: IP address, hostname dan kadang-kadang di beri alias / nama lain yang memudahkan pengguna. Sebagai contoh, sebuah komputer di LAN yang ingin membuka hubungan FTP ke lokal FTP server dapat melakukan sambungan ke 192.168.210.3, ftp.aku.com, ftp, www, mail2, atau dns2.

Dengan semakin banyaknya jumlah mesin di Internet, tidak mungkin HOSTS.TXT digunakan untuk melakukan mapping hostname ke IP address untuk semua mesin di Internet. Domain Name System (DNS) Tahun 1984, mengusulkan sistem database terdistribusi yang dinamakan DNS (Domain Name System). Sistem inilah yang digunakan hingga sekarang. Selain untuk memetakan IP address dan Nama Host, DNS juga digunakan sebagai sarana bantu penyampaian e-mail (e-mail routing).

Domain Name System (DNS) adalah sebuah database terdistribusi yang berisi nama dan / atau address dari setiap mesin yang dapat di akses melalui Internet. DNS adalah salah satu kunci perkembangan yang memungkinkan Internet berkembang seperti sekarang ini. Tidak seperti file HOSTS.TXT yang harus di maintain satu persatu di setiap mesin, file DNS di maintain oleh ribuan mesin di jaringan Internet, masing-masing bertanggung jawab terhadap bagian domain / nama-nya (biasanya di sebut zone). DNS memberikan mekanisme sehingga back-up database dapat di identifikasi jika salah satu database mati. DNS data juga di update secara automatis, sehingga informasi di sebuah name server tidak harus ketinggalan jaman.

Pada saat sebuah TCP/IP software di install di sebuah mesin, IP address dari name server di masukan ke parameter yang harus di konfigurasikan. Biasanya kita dapat memasukan sampai tiga (3) name server. Untuk lebih jelasnya, mari kita perhatikan skenario penggunaan DNS dari sebuah mesin di Universitas Bas (baz.edu) yang ingin menghubungi mesin www.aku.com.

• Mesin Baz akan mencek file HOSTS.TXT di mesin-nya. Tentunya, server WWW milik aku.com tidak akan di temukan di situ. • Mesin Baz akan cek ke primary DNS server di Universitas Baz. Sayang, DNS server di Baz hanya bertanggung jawab untuk zone baz.edu, dia tidak akan mempunyai mempunyai informasi tentang WWW aku.com. DNS Baz.edu akan meneruskan permintaan / pertanyaan tentang WWW aku.com. • Pertanyaan di teruskan sampai ke name server yang paling tinggi di Internet, biasanya di kenal sebagai rootserver. Database pada root server berisi nama dari setiap subdomain dalam naungan top-level domain, dan name server-nya. Name server pada tingkatan yang tinggi ini akan mencek DNS file .com dulu, dia akan menemukan data dari aku.com dan DNS server yang membawa informasi tentang aku.com • Informasi DNS server aku.com akan di kirimkan ke Baz DNS server. • DNZ Baz akan menanyakan ke DNS server dari aku.com, yang kemudian akan menjawab IP address dari WWW server aku.com (192.168.210.3).

Proses permohonan DNS dapat di lihat menggunakan beberapa peralatan / tool TCP/IP yang tersedia di sistem operasi. Di Windows biasanya kita dapat melakukannya dari DOS dan menggunakan perintah NSLOOKUP. Di Linux / Unix, biasanya kita menggunakan dig yang merupakan software pengganti NSLOOKUP yang telah cukup tua umurnya.

Seperti yang kita bayangkan, proses ini akan memakan waktu dan akan terasa sebagai delay sedikit pada waktu kita melalui browsing Web. Setiap server di rangkaian akan menyimpan informasi terakhir di cache database dari hostname dan IP address yang sering di lihat untuk mempercepat proses dan responds. Kita dapat dengan mudah membuat server Linux kita sebagai caching DNS server di jaringan LAN di rumah.

Konsep Zone Keseluruhan domain name space, baik yang biasa (forward) maupun yang reverse mapping, tidak dikelola oleh satu server. Pengelolaannya dilakukan secara terdistribusi di banyak server DNS. Untuk itu, domain name space diatas dibagi kedalam zone zone. sebuah zone meliputi seluruh host dibawah domain tertentu, kecuali yang didelegasikan ke zona lain. Gambar 62: Konsep zona di Domain Name

Zona ini bisa berupa second level domain (mit.edu) , third level domain (itb.ac.id), forth level domain (ee.itb.ac.id) dan seterusnya. Sebuah domain bisa saja membagi zona nya menjadi zona zona yang lebih kecil. Misalnya, universitas bisa membagi zonanya kedalam fakultas atau jurusan (misalnya ee.itb.ac.id = electrical engineering ITB), sedangkan perusahaan bisa membagi zonanya mengikuti kantor cabang atau divisi internal perusahaan tersebut (research.ibm.com).

Saat administrator jaringan memutuskan untuk membentuk zona baru, maka harus disediakan Name Server untuk zona tersebut. Nama dan IP address dari seluruh komputer di zona ini harus diisikan kedalam Name Server tersebut. Name server inilah nanti yang akan menjawab setiap pertanyaan tentang zona yang bersangkutan.

Jika jumlah komputer di zona yang bersangkutan sedikit, maka tugas administrator DNS menjadi ringan. Jika jumlah komputer sudah terlalu banyak, maka sebaiknya dilakukan pembentukan zona baru serta pendelegasian domain.

Jika pada suatu domain ingin dibentuk zona baru, maka perlu ditugaskan sebuah Primary Name Server dan satu atau lebih Secondary Name Server untuk menangani zona baru tersebuti. Dengan demikian, Server DNS induk telah memberikan authority pada name server yang bersangkutan untuk menangani zona tersebut. Kedua jenis server ini pun menjadi Name Server yang authoritative untuk zona baru tersebut.

Sebagai konsekwensinya, data data zona yang terdelegasi pada Name Server domain induk hanya berisi pointer/penunjuk ke sejumlah name-server yang authoritative untuk zona ini, bukan berisi data/informasi dari zona yang didelegasikan. Dengan demikian, bila suatu saat terdapat pertanyaan terhadap data-data tersebut, server akan menjawab memberikan daftar name-server yang dapat dan “lebih patut” ditanyai.

Kedua jenis Name Server diatas , yaitu primary dan secondary, memiliki tugas yang sama, yaitu menjawab setiap pertanyaan (query) tentang zona yang bersangkutan. Penugasan lebih dari satu name server ini bertujuan untuk mengatur pembagian beban serta redundansi. Jika satu name server mengalami masalah, masih ada name server yang lain yang bertanggung jawab terhadap suatu zona.

Perbedaan dari Primary Name Server dan Secondary Name Server ialah pada proses mendapatkan informasi zona. Primary server mendapatkan data ini dengan membaca file di hardisk lokalnya, sedangkan secondary server mendapatkan data dengan mereplikasi (mengcopy) data yang ada di primary server. Melalui cara ini, maka proses pembaruan data DNS menjadi mudah. Data hanya perlu di perbarui di primary server saja. Secondary server akan memperbarui datanya melalui proses replikasi ini. Data di primary server disebut Zona File, sedangkan proses ini pembaruan data pada secondary server disebut sebagai Zona Transfer. Komponen DNS Untuk memahami cara kerja DNS, maka kita terlebih dulu harus mengetahui komponen komponennya.

Gambar 63: Komponen DNS

Resolver ialah bagian dari program aplikasi yang berfungsi menjawab pertanyaan program aplikasi tentang domain. Resolver akan menjawab pertanyaan dengan dua cara, yaitu melihat isi cache nya (dengan asumsi bahwa pertanyaan ini sudah pernah ditanyakan dan jawabannya tersimpan di cache), dan bertanya kepada Server DNS serta menginterpretasikan hasilnya.

Program aplikasi Internet di komputer lokal berinteraksi dengan Server DNS melalui resolver ini. Ketika anda mengetikkan sebuah URL (misalkan http://www.itb.ac.id) di web browser, browser anda akan terlebih dulu bertanya kepada resolver di komputer anda, berapa IP address dari www.itb.ac.id. Jika resolver mengetahui data tersebut, dia akan memberitahu browser. Jika tidak, resolver akan mengontak Server DNS yang menjadi defaultnya. Jika informasi ini pada zona file Server DNS, ia akan segera menjawab dan browser pun mendapat informasi yang benar. Bagaimana jika Name Server tidak mengetahui jawabnya (atau name server tidak authoritative untuk zona tersebut)? Name server ini akan berusaha mencari jawabnya, dengan bertanya kepada Name Server lain yang mengetahuinya (yang authoritative).

Pertanyaan berikutnya, bagaimana Name Server mengetahui server mana yang bisa dan berhak (mempunyai authoritas) menjawab pertanyaannya ? Name Server akan melakukan proses yang dikenal sebagai name resolution. Ia akan menelusuri petunjuk petunjuk tertentu dari server lain untuk menemukan jawaban atas pertanyaan tersebut.

Gambar 64: Proses Resolver

Untuk mengetahui IP address www.itb.ac.id, name server kita terlebih dahulu mengontak root server. Root server ini ialah sekumpulan Server DNS yang berada pada hirarki tertinggi. Root server tentu saja tidak memiliki informasi IP address host www.itb.ac.id ini. Ia hanya akan memberikan referensi, bahwa untuk mencari nama host dengan domain id, hendaknya server kita menghubungi name server yang authoritative untuk domain id (indonesia) ini. Ketika name server id dihubungi, dia pun akan melakukan hal yang sama. Dia hanya akan menjawab dengan memberikan nama name server yang bertanggung jawab atas domain ac.id. Pertanyaan ke Name Server untuk domain ac.id ditanya akhirnya menghasilkan referensi bahwa seharusnya pertanyaan ini diberikan ke name server untuk domain itb.ac.id. Name server inilah yang akhirnya memberikan jawaban sebenarnya atas pertanyaan di atas.

Dalam mencari jawaban atas query (pertanyaan) dari resolver di atas, Name Server melakukan proses iteratif (iterative query). Dalam proses iteratif ini, name server kita menelusuri name server lain satu-persatu, berdasarkan referensi referensi yang diberikan oleh masing-masing name server lain tersebut.

Sebaliknya resolver pada ilustrasi diatas melakukan query yang bersifat rekursif (recursive query) pada name server. Resolver memaksa Name Server untuk mencari seluruh jawaban, untuk kemudian memberikan hasilnya kepadanya. Resolver menolak untuk menerima jawaban yang berupa referensi referensi name server lain, yang seharusnya berhak untuk ditanyai. Resolver dapat pula meng-query name server secara iteratif. Jika hal ini dilakukan, name server hanya akan melihat database lokal atau cache miliknya. Jika data yang dimaksud tidak ada, name server akan “menyerah”. Jika data tersebut terdapat di database lokalnya, dia akan memberikan jawabannya. Jika data tersebut ada di cache filenya , dia akan menjawab sambil memberitahukan bahwa jawaban ini bersifat non authoritative (bukan berasal dari server yang authoritative, melainkan dari cache).

Waktu yang diperlukan bagi proses resolusi diatas relatif lama, karena berkaitan dengan proses query ke name server authoritative (yang bisa jadi berada di tempat yang jauh). Untuk mempercepat proses ini, dilakukan satu mekanisme yang dikenal sebagai caching. Ketika suatu name-server melakukan proses resolution dari satu referensi ke referensi yang lain hingga ditemukan jawabannya, ia “mempelajari” korelasi antara alamat-alamat server yang pernah dihubunginya. Alamat ini disimpan (dalam batas waktu tertentu – Time to Live TTL) untuk kemudian digunakan kembali jika diperlukan. Dengan mengingat data tersebut, Name Server dapat mempercepat proses untuk query berurut, baik pada domain-name yang sama atau domain-name yang berkorelasi dengan sebelumnya.

Misalnya name-server kita pernah melakukan resolusi address eecs.berkeley.edu, dan dalam proses tersebut name-server meng-cache address name-server eecs.berkeley.edu dan berkeley edu. Sekarang jika kita meng-query untuk baobab.cs.berkeley.edu, name-server kita akan mem-bypass query ke , karena ia telah mengenali bahwa berkeley.edu yang telah ia ketahui berkorelasi penuh dengan data yang diminta. Name-server ini akan memulai resolution dengan query pada name-server berkeley.edu. Dengan cara ini waktu untuk resolution telah direduksi dan aplikasi dapat berjalan lebih cepat. Software DNS Server Software DNS server sangat bervariasi tergantung sistem operasi yang digunakan. Di Windows NT/2000/2003 server biasanya di kenal sebagai DNS. Di Linux / Unix software yang paling baik adalah BIND (Berkeley Internet Name Daemon) yang dapat di ambil secara gratis dari http://www.isc.org/index.pl?/sw/bind/. Belakangan, mulai dikembangkan juga DNS di Linux yang mampu untuk menangani DNS skala besar menggunakan database, yaitu, PowerDNS.

Teknik instalasi BIND relatif sederhana dapat menggunakan perintah berikut,

# apt-get install bind9

File konfigurasi BIND yang penting adalah named.conf dan database dari DNS yang berbentuk file text, tergantung jenis Linux yang anda gunakan maka lokasi file named.conf akan berbeda. Pada

Debian /etc/bind/named.conf Fedora Core /etc/named.conf

Database DNS yang berbentuk file text dapat di temui di

Debian /etc/bind/ Fedora Core /var/named/chroot/var/named/

Bagi anda yang tidak mau pusing untuk mengkonfigurasi DNS, sangat di sarankan untuk menginstall Webmin di server anda. Webmin dapat di ambil di http://www.webmin.com. Instalasinya relatif mudah menggunakan setup.sh dari folde source Webmin. Mengakses Webmin dapat dilakukan menggunakan Web pada alamat http://ipserver-anda:10000 atau https://ipserver- anda:10000 dengan menggunakan password admin yang anda set sebelumnya pada saat setup. Konfigurasi DNS biasanya ada di bagian Server di sub-bagian BIND.

Bagi yang mempunyai cukup nyali untuk mengedit secara manual, isi dari file named.conf lumayan rumit, tapi sebagian besar sudah di sediakan oleh distro / sistem operasi yang kita gunakan. Kita praktis tidak perlu bersusah payah lagi untuk mengisi file named.conf. Di Isi file named.conf yang penting diperhatikan khususnya untuk mengkonfigurasi DNS aku.com adalah adanya entry sebagai berikut

zone "aku.com" { type master; file "/var/named/aku.com.hosts"; };

zone “210.168.192.in-addr.arpa“ { type master; file "/var/named/210.168.192.in-addr.arpa"; };

Yang memberitahukan bahwa DNS yang kita pegang membawa informasi utama (master) tentang aku.com di file /var/named/chroot/var/named/aku.com.hosts. Di samping itu, reverse DNS aku.com di letakan di file /var/named/chroot/var/named/210.168.192.in-addr.arpa.

Jika zone aku.com mempunya lebih dari satu DNS Server, misalnya, mempunyai secondary DNS Server dengan IP address 192.168.210.3. Maka untuk mengijinkan secondary DNS server mentransfer informasi dari primary DNS server, perlu di buat entry zone yang agak berbeda sedikit.

zone "aku.com" { type master; allow-transfer { 192.168.210.3; }; also-notify { 192.168.210.3; }; file "/var/named/aku.com.hosts"; };

Jika ada lebih dari satu secondary server, dapat ditulis dengan di pisahkan dengan ';'.

Selain master zone entry untuk domain yang kita managed, biasanya ada beberapa entry tambahan yang berhubungan dengan localhost dan root server.

Konfigurasi Zona File & Konsep Resource Record Zona file merupakan file yang berisi informasi yang berkaitan dengan suatu domain. Dalam zona file, tersedia satu set informasi untuk tiap tiap domain. Set informasi untuk satu domain bisa berupa IP address, nama alias dari domain/host tersebut, nama Name Server yang bertanggung jawab untuk domain tersebut dan sebagainya. Masing masing informasi dalam kumpulan informasi ini disebut sebagai Resource Record (RR).

Spesifikasi standard Resource Record (RR) terdapat dalam RFC1035. Format standard dari resource record ialah sebagai berikut:

{name} {ttl} addr-class Record Type Record Specific data

Kolom pertama dari catatan DNS selalu IP address atau hostname. Jika ini tidak ada, maka hostname / IP address dari record / catatan yang sebelumnya yang akan digunakan. Perhatikan juga bahwa semua hostname dan IP address selalu di akhiri dengan “dot” (.). Hal ini menunjukan bahwa hostname atau IP address tersebut adalah hostname / IP address absolut, bukan relatif.

Absolut hostname, biasanya di sebut sebagai Fully Qualified Domain Name (FQDN), relatif terhadap root. Sementara relatif hostname akan relatif terhadap domain default-nya yang belum tentu root. Contoh www.detik.com. adalah FQDN, sementara www adalah relatif terhadap domain di atasnya, yang mungkin saja kompas.com atau yang lain.

Kolom pertama hostname / IP address, dapat di ikuti (optional) oleh nilai Time-to-Live (TTL), yang menunjukan lama waktu bahwa informasi di kolom ini di anggap valid.

Kolom selanjutnya menunjukan kelas / tipe alamat (addr-class). Dalam DNS hari ini, kita biasanya menemukan kode “IN” yang menunjukan bahwa mesin ini adalah mesin Internet. Kolom ini tidak dibuang karena alasan sejarah dan kompatibilitas dengan sistem yang tua.

Kemudian di lanjutkan dengan kolom yang menunjukan tipe dari Resource Record (RR). Di lanjutkan dengan parameter yang spesifik untuk RR.

Resource record yang digunakan dalam DNS ialah sebagai berikut:

Start of Authority Record (SOA)

Fungsi menunjukan name server yang mempunyai authoritas untuk sebuah domain / zone dan beberapa informasi administratif lainnya. Untuk setiap zone hanya mempunyai satu (1) buah Source of Authority (SOA). SOA biasanya dideklarasikan pada awal zona file.

Format [zone] IN SOA origin contact ( serial refresh retry expire minimum )

Komponen SOA record terdiri dari :

Zone Komponen ini mendefenisikan nama dari zone. Dalam bahasa awam, zone kira-kira equivalen dengan domain. Pada file named.conf kita perlu mendefinisikan zone tersebut dan menset tipe sebagai master. Origin Menunjukan hostname dari server utama (primary server) untuk zone / domain yang di deinisikan. Hostname origin harus ditulis dalam Fully Qualified Domain Dame (FQDN).

Contact Menunjukan e-mail address administrator yang bertanggung jawab terhadap zone / domain. Untuk e-mail address penanggung jawab [email protected], ditulis menjadi dnsowner.aku.com dengan menggantu tanda “@” menjadi “.”. Serial Merupakan nomor seri dari zona file. Serial number ini harus bertambah setiap ada perubahan data pada zona file. Serial number ini digunakan secondary server untuk memeriksa adanya zona file pada primary server. Bbila serial number di primary server lebih besar dari serial number yang terdapat pada zona file di secondary server, maka secondary server akan melakukan full zona transfer dari primary server. Bila tidak ada perubahan serial number maka secondary server berasumsi bahwa tidak perubahan zona file pada primary server.

Sebaiknya format serial number yang digunakan adalah : YYYYMMddhh (YYYY=tahun, MM=bulan, dd=tanggal, hh=jam) . Artinya bahwa setiap ada perubahan pada zona file maka serial number diganti dengan angka-angka tahun, bulan, tanggal, jam dan menit tanggal perubahan. Contoh: jika perubahan dilakukan tanggal 9 Bulan Februari Tahun 2006 jam 02:00 WIB, maka serial number yang digunakan ialah 2006020902. Dengan cara ini maka setiap ada perubahan maka serial number pasti bertambah besar. Refresh Komponen ini mendeklarasikan selang waktu (dalam detik) yang diperlukan oleh secondary server untuk memeriksa perubahan zona file pada primary server. Pada setiap selang waktu yang telah ditentukan, secondary server akan memeriksa terhadap serial number untuk mengetahui apakah ada perubahan zona file. Selang waktu ini dipilih berdasarkan dinamika perubahan zona file antar Server DNS. Biasanya perubahan zona file hanya bersifat harian, maka sebaiknya selang waktu dapat dipilih 1 hari (24jam x 3600 detik). Retry Komponen ini menentukan berapa lama (dalam detik) secondary server menunggu untuk mengulang pengecekan terhadap primary server apabila primary server tidak memberikan respon pada saat proses refresh. Jangan menggunakan nilai retry yang terlalu kecil karena pengulangan dalam waktu singkat tidak menghasilkan apa-apa karena ada kemungkinan primary server sedang down. Sebaiknya gunakan retry sekitar 1 jam lebih. Expire Komponen ini menentukan berapa lama (dalam detik) zona file dipertahankan pada secondary server apabila secondary server tidak dapat melakukan zona refresh. Apabila setelah masa expire, secondary server tidak dapat melakukan zona refresh maka secondary server akan menghapus file tersebut dari zona file. Sebaiknya nilai komponen ini cukup besar dan untuk link yang kurang reliable sebaiknya sekitar 6 bulan ataupun 1 tahun. Minimum Komponen ini menentukan nilai default time to live (TTL) untuk semua resource record pada zona file. Sebaiknya nilai ini dibuat sebesar mungkin, karena jarang sekali perubahan pada hostname begitu hostname tersebut diberi IP address dan MX record.

Berikut ini ialah contoh penulisan SOA didalam zona file aku.com.hosts , yang berada di Server DNS dns.aku.com

aku.com. IN SOA dns.aku.com. dnsowner.aku.com. ( 2006020902 ; serial # (berformat tanggal) 10800 ; refresh (3 jam) 3600 ; retry (1 jam) 604800 ; expire (1 minggu) 86400) ; TTL (1 hari) Name Server Record(NS) Fungsi Menunjukan name server yang mempunyai authoritas untuk domain name tertentu. Authoritative server untuk suatu zona sebaiknya lebih dari satu sebagai tindakan preventif apabila primary master server tidak bisa diakses oleh secondary server. Format [domain] IN NS server

Komponen Name Server Record

Domain Authoritative server untuk domain ini adalah Server DNS yang tertulis pada komponen server. Kadang kali domain tidak perlu di tulis, karena ikut dengan Resource Record (RR) sebelumnya yaitu biasanya SOA. Server Hostname dari komputer yang merupakan authoritative Server DNS untuk domain yang tercantum pada komponen domain. Komponen ini ditulis secara FQDN.

NS records berisi alamat dari name server yang membawa domain aku.com. Dalam hal ini ada dua name server yang membawa informasi domain aku.com, yaitu, dns.aku.com dan dns2.aku.com. Dari catatan SOA, primary DNS adalah dns.aku.com, jadi secondary DNS adalah yang lainnya.

Berikut ini adalah contoh penulisan Standard Resource Record SOA dan NS untuk domain aku.com.

aku.com. IN SOA dns.aku.com. dnsowner.aku.com. ( 2006020902 ; serial # (berformat tanggal) 10800 ; refresh (3 jam) 3600 ; retry (1 jam) 604800 ; expire (1 minggu) 86400) ; TTL (1 hari)

; Name Server (NS) record aku.com. IN NS dns.aku.com. IN NS dns2.aku.com.

Address Record (A) Fungsi Melakukan pemetaan antara hostname ke IP address.

Format [host] IN A address

Komponen Address Record

Host Nama host yang hostnya seperti yang tercantum pada komponen address, hostname ditulis relatif terhadap domain dari host tersebut. Misalkan address record dari mail.aku.com. dapat ditulis pada zona file aku.com.hosts cukup mail saja. Tentunya anda dapat saja menulis secara lengkap. Address adalah IP address untuk host dan ditulis dalam bentuk dotted-decimal.

Jika suatu host yang bersifat multihoming, yaitu host yang terhubung ke beberapa network dengan menggunakan lebih dari satu network interface maka record address host tersebut dapat lebih dari satu. Berikut ini diberikan contoh penulisan Standard Resource Record SOA, NS dan A untuk domain aku.com.

aku.com. IN SOA dns.aku.com. dnsowner.aku.com. ( 2006020902 ; serial # (berformat tanggal) 10800 ; refresh (3 jam) 3600 ; retry (1 jam) 604800 ; expire (1 minggu) 86400) ; TTL (1 hari)

; Name Server (NS) record aku.com. IN NS dns.aku.com. IN NS dns2.aku.com.

; Address (A) record router IN A 192.168.210.1 dns IN A 192.168.210.2 mail2 IN A 192.168.210.3 dns2 IN A 192.168.210.3 mail IN A 192.168.210.4 pc1 IN A 192.168.210.5

Jika mail merupakan mesin multihoming dan mempunyai lebih dari satu (1) network interface, misalnya tiga (3) buah Interface dengan IP address yang berbeda, misalnya, 192.168.210.4, 44.132.100.2, 202.100.34.244 maka entry address record router dapat ditulis sebagai berikut

; Address (A) record mesin multihoming mail IN A 192.168.210.4 IN A 44.132.100.2 IN A 202.100.34.244

Mail Exchanger Record (MX) Fungsi MX record digunakan untuk mengarahkan mail untuk suatu host ataupun suatu domain ke host yang berfungsi sebagai mail server. MX record sangat berguna untuk suatu domain yang tidak menjalankan mail server. Mail yang ditujukan untuk domain ini akan diarahkan ke host yang menjalankan mail servern yang biasanya terdapat di ISP.

Format [name] IN MX preference host

Komponen Mail Exchanger Record

Name Hostname ataupun domain tujuan pengiriman mail. Bila tujuan pengiriman adalah suatu domain pada suatu zona file, maka bagian ini cukup dikosongkan. Preference Menentukan tingkat prioritas mail exchanger yang akan digunakan untuk me-redirect mail ke [name]. Sebuah host ataupun suatu domain dapat memiliki beberapa mail exchanger. Mail exchanger yang digunakan pertama kali adalah mail exchanger dengan prioritas tertinggi dan apabila mail exchanger ini gagal dihubungi maka digunakan prioritas berikutnya dan demikian seterusnya. Mail exchanger dengan preference terendah merupakan mail exchanger dengan prioritas tertinggi. Apabila suatu host tidak mempunyai MX record maka remote host akan berusaha mengirimkan mail langsung ke host tujuan. Hal ini tidak disarankan, karena ada kemungkinan suatu host tidak dapat diakses karena link terputus ataupun sedang dalam kondisi perawatan. Sebaiknya setiap domain yang digunakan untuk e-mail mempunyai MX Record. Host Adalah hostname dari mail exchanger yang digunakan untuk mengarahkan mail ke host ataupun domain yang didefenisikan pada field name.

Berikut ini adalah contoh suatu zona file yang mempunyai MX record untuk domain dan MX record untuk host.

aku.com. IN SOA dns.aku.com. dnsowner.aku.com. ( 2006020902 ; serial # (berformat tanggal) 10800 ; refresh (3 jam) 3600 ; retry (1 jam) 604800 ; expire (1 minggu) 86400) ; TTL (1 hari)

; Name Server (NS) record aku.com. IN NS dns.aku.com. IN NS dns2.aku.com.

; Address (A) record mail2 IN A 192.168.210.3 mail IN A 192.168.210.4

; Mail Exchange (MX) record aku.com. IN MX 20 mail.aku.com. IN MX 40 mail2.aku.com.

Cara bekerja MX record kira-kira sebagai berikut, jika seorang pengguna remote mengirimkan e- mail ke [email protected], mail server remote akan melihat MX record dari domain aku.com. Mail server remote akan berusaha untuk membuka hubungan Simple Mail Transfer Protocol (SMTP) dengan mail server aku.com yang mempunyai nilai preferensi yang paling rendah; dalam hal ini mail.aku.com. Jika mail.aku.com tidak beroperasi atau tidak dapat dihubungi, maka mail server remote akan mencoba mail server aku.com selanjutnya; dalam hal ini adalah mail2.aku.com. Hal ini akan dilakukan terus dalam proses pengiriman mail.

Selang pemilihan preference MX Record biasanya dibuat berselisih 10 angka. Selisih ini dibuat sedemikian rupa agar apabila ada penambahan mail server, dapat dilakukan penyisipan pada MX record yang telah ada sebelumnya.

Banyak admin jaringan yang belum mengerti konsep MX dalam proses pengiriman e-mail. Saya sangat sarankan untuk membaca & merenungkan konsep ini pada saat anda memperoleh tugas untuk membuat mail server. Tanpa MX yang benar maka server postfix yang kita buat tidak akan menerima e-mail dari Internet.

Canonical Name Record (CNAME)

Fungsi memberikan mekanisme alias bagi sebuah nama mesin, sehingga sebuah IP address dapat memiliki beberapa nama / hostname. Walaupun sebenarnya sangat mungkin untuk menggunakan A-record untuk mekanisme alias ini, tapi lebih mudah bagi mata untuk mencek jika menggunakan CNAME-record.

Format [nickname] IN CNAME host

Komponen CNAME record:

Nickname Adalah alias name untuk host yang tercantum pada host. Host Hostname yang alias name-nya tercantum pada nickname. Hostname harus ditulis secara FQDN dan tidak dianjurkan berupa alias name (karena mengakibatkan looping).

Sebuah A record dapat mempunyai banyak CNAME record. Tapi tidak sebaliknya, sebuah CNAME record tidak boleh mempunyai banyak A record. Kita harus berhati-hati dalam menggunakan CNAME record, karena ada program mail server yang akan tidak beres jalannya jika kita menggunakan MX hostname dari CNAME record dan bukan A record. Akan lebih aman jika semua MX host yang digunakan menggunakan A record masing- masing, dan tidak CNAME record meskipun menunjuk pada mesin yang sama.

Misalkan kita ingin membuat www.aku.com. dan ftp.aku.com. sebagai nama alias dari mail2.aku.com. dapat dilakukan sebagai contoh CNAME record berikut,

; Aliases dalam Canonical Name (CNAME) record ftp.aku.com. IN CNAME mail2.aku.com. www.aku.com IN CNAME mail2.aku.com.

Jika pada suatu saat kita ingin memindahkan web tersebut ke mesin lain, kita cukup mengaliaskan nama server tersebut dengan nama yang sudah dikenal orang sebelumnya. Dengan demikian, orang yang menggunakan nama lama masih tetap bisa mengakses host tujuan.

PTR Record Fungsi Melakukan pemetaan dari IP address ke hostname. Catatan ini digunakan untuk melihat hostname terbalik (terbalik), dengan di ketahui IP address kita dapat mengetahui hostname- nya.

Format [octet] IN PTR hostname

Komponen PTR record:

Octet Adalah octet terakhir dari IP address pada hostname yang bersangkutan. Host Hostname dari IP address yang bersangkutan. Hostname ini harus ditulis secara FQDN.

Proses pencarian database yang terbalik (reverse lookup), dalam hal ini di ketahui IP address-nya dan pemohon ingin mengetahui hostname-nya, dalam di lakukan menggunakan database DNS untuk IP address domain. Record dan format-nya pada dasarnya tidak berbeda jauh dengan DNS server biasa, hanya saja disini digunakan PTR record dan tidak menggunakan A record. PTR record berisi nama hostname dari IP address yang ada di kolom pertama PTR record.

File 210.168.192.in-addr.arpa berisi file untuk proses reverse lookup bagi domain aku.com. Isi file 210.168.192.in-addr.arpa tampak pada contoh berikut,

; Start of Authority (SOA) record 210.168.192.in-addr.arpa. IN SOA dns.aku.com. dnsowner.aku.com. (2006020902 ;serial#(berformat tanggal) 10800 ; refresh (3 jam) 3600 ; retry (1 jam) 604800 ; expire (1 minggu) 86400) ; minimum TTL (1 hari)

; Name Server (NS) record 210.168.192.in-addr.arpa. IN NS dns.aku.com. IN NS dns2.aku.com.

; Address di arahkan ke nama PTR untuk reverse lookup 1.210.168.192.in-addr.arpa. IN PTR router.aku.com. 2.210.168.192.in-addr.arpa. IN PTR dns.aku.com. 3.210.168.192.in-addr.arpa. IN PTR mail2.aku.com. 4.210.168.192.in-addr.arpa. IN PTR mail.aku.com. 5.210.168.192.in-addr.arpa. IN PTR pc1.aku.com.

Kadang kala, konfigurasi untuk localhost juga dimasukan kedalam DNS server. Untuk memudahkan pencarian baik forward maupun reverse DNS dari address localhost, zona file ini berisi data IP localhost melalui loopback interface (127.0.0.1). Tampak konfigurasi localhost biasanya di letakan di /var/named/chroot/var/named. File forward localhost yang dibutuhkan yang biasanya di simpan dalam localhost.zone.

$TTL 86400 @ IN SOA @ root ( 42 ; serial (d. adams) 3H ; refresh (3 jam) 15M ; retry (15 bulan) 1W ; expiry (1 minggu) 1D ) ; minimum (1 hari)

IN NS @ IN A 127.0.0.1 ; AAAA record untuk IPv6 IN AAAA ::1

Sedang contoh entry untuk reverse DNS adalah sebagai berikut,

$TTL 86400 @ IN SOA localhost. root.localhost. ( 2006020900 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum

IN NS localhost. 1 IN PTR localhost. Contoh file zone aku.com yang tersimpan di file aku.com.hosts yang mungkin terletak di /var/named/chroot/var/named/ adalah sebagai berikut.

aku.com. IN SOA dns.aku.com. dnsowner.aku.com. ( 2006020902 ; serial # (berformat tanggal) 10800 ; refresh (3 jam) 3600 ; retry (1 jam) 604800 ; expire (1 minggu) 86400) ; TTL (1 hari)

; Name Server (NS) record aku.com. IN NS dns.aku.com. IN NS dns2.aku.com.

; Mail Exchange (MX) record aku.com. IN MX 20 mail.aku.com. IN MX 40 mail2.aku.com.

; Address (A) record localhost.aku.com. IN A 127.0.0.1

router.aku.com. IN A 192.168.210.1 dns.aku.com. IN A 192.168.210.2 mail2.aku.com. IN A 192.168.210.3 dns2.aku.com. IN A 192.168.210.3 mail.aku.com. IN A 192.168.210.4 pc1.aku.com. IN A 192.168.210.5

; Aliases dalam Canonical Name (CNAME) record ftp.aku.com. IN CNAME mail2.aku.com. www.aku.com IN CNAME mail2.aku.com.

Root Domain / DNS Jika hostname yang dicari tidak ada datanya di name server lokal, permohonan akan di teruskan ke name server yang lebih tinggi. Informasi tentang name server yang paling tinggi di Internet, biasanya di sebut sebagai top level DNS server, biasanya tersimpan di file named.cache / named.ca / named.root di folder tempat semua file DNS berada.

Biasanya distro Linux / bind sudah menyiapkan isi file named.ca / named.cache yang kita butuhkan. Tapi bagi mereka yang ingin memperoleh file named.ca yang terbaru, dapat mengambilnya di Internet Network Information Center (InterNIC) pada alamat http://www.internic.net/zones/named.root

Sebuah "." menunjukan root domain, sedang "3600000" menunjukan nilai TTL yang harus expire sesudah kira-kira enam (6) minggu (3.6 juta detik).

Pada hari ini ada lebih dari tiga belas root servers (http://www.root-servers.org) di seluruh dunia. Sebagian besar memang berada di US, sisanya Jepang dan Eropa. Root server ini yang memaintain autoritas berbagai name server di seluruh Internet.

; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . " ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.cache ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; ; last update: October 20, 2016 ; related version of root zone: 2016102001 ; ; formerly NS.INTERNIC.NET ; . 3600000 NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e::2:30 ; ; FORMERLY NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:84::b ; ; FORMERLY C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2::c ; ; FORMERLY TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13 D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2d::d ; ; FORMERLY NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 E.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:a8::e ; ; FORMERLY NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f ; ; FORMERLY NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 G.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:12::d0d ; ; FORMERLY AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 198.97.190.53 H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::53 ; ; FORMERLY NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fe::53 ; ; OPERATED BY VERISIGN, INC. ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:c27::2:30 ; ; OPERATED BY RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1 ; ; OPERATED BY ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:9f::42 ; ; OPERATED BY WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35 ; End of file

Di bawah top level domain, di delegasikan tanggung jawab masing-masing negara seperti Indonesia .id, Jepang .jp ke Country Code Top Level Domain (ccTLD). Informasi tentang ccTLD Indonesia dapat dilihat di http://www.iana.org/root-whois/id.htm. Mengapa Kita Perlu Memelihara DNS Kita Sendiri? Sebetulnya sebagian besar ISP akan bersedia memaintain DNS untuk kita, oleh karena itu mengapa orang DNS manager perlu memaintain DNS-nya sendiri? Jawab yang paling masuk akal adalah tidak semua ISP bersedia memelihara DNS untuk anda, kadang kala, anda perlu melakukannya sendiri.

Sebuah jaringan kemungkinan akan menjalankan DNS-nya sendiri, terutama untuk memperoleh kontrol yang baik untuk menjamin keakuratan database. Hal ini akan sangat terasa jika jaringan kita banyak perubahan, perubahan hostname, perubahan IP address, dan ISP kita tidak bisa mengikuti perubahan yang terjadi. Isu lain adalah reverse DNS, beberapa ISP hanya mau menyimpan reverse DNS untuk server, tapi tidak untuk mesin biasa. Konsekuensinya, jika ada servis yang memerlukan reverse DNS untuk authentikasi, maka tidak mungkin dilakukan. Masalah lain yang akan terjadi adalah jika jaringan kita semakin besar dan kompleks, ISP tempat kita tersambung kemungkinan tidak sanggup untuk memenuhi kebutuhan kita.

Sebetulnya menjalankan DNS server tidak terlalu sulit, tapi kita harus secara teliti membuat file-file database-nya. File DNS harus di update jika ada nama system atau IP address yang berubah. Serial number harus di tambahkan / di ubah jika ada perubahan di file DNS. File named.ca harus di update secara periodik dari InterNIC. Zone transfer, prosedur untuk mengcopykan data DNS antara primary dari secondary harus di atur.

Semua prosedur ini tidak terlalu sulit, tapi harus di rencanakan dengan baik. Tulisan ini menggunakan referensi DNS yang sederhana dan kecil di sebuah LAN. Tentunya konfigurasi yang kompleks juga mungkin terjadi. Ada beberapa RFC yang mungkin akan membantu kita dalam mempelajari latar belakang DNS, yaitu:

• RFC 1591 Domain Name System Structure and Delegation • RFC 1035 Domain Names - Implementation and Specification • RFC 1034 Domain Names - Concepts and Facilities • RFC 974 Mail Routing and the Domain System

Ada beberapa RFC yang memberitahukan tentang berbagai kesalahan dalam konfigurasi DNS maupun tool DNS, seperti: • RFC1912 Common DNS Operational and Configuration Errors • RFC 1713 Tools for DNS Debugging • RFC 1536 Common DNS Implementation Errors and Suggested Fixes

Keterangan tambahan tentang DNS dapat di peroleh dari buku P. Albitz dan C.Liu (dari O'Reilly & Associates) dan buku "Setting up Your own DNS" (http://www.garykessler.net/library/dns.html) oleh G. Kessler. Di samping itu, IANA memaintain daftar DNS parameters (http://www.iana.org/assignments/dns-parameters).

Catatan tambahan, IP versi 6 (IPv6) akan menggunakan address 128-bit yang sangat berbeda dengan arsitektur IP versi 4. IPv6 dan strukturnya di jelaskan di RFC 1883 dan RFC 1884. RFC 1886 menjelaskan extension pada DNS server untuk memenuhi kebutuhan IPv6 terutama adanya AAAA resource record dan IP6.INT atau IPV6.ARPA address domain. Menjalankan Server DNS Setelah menyiapkan file konfigurasi (/etc/named.conf) dan zone file, maka tahap selanjutnya adalah menjalankan Server DNS tersebut. Implementasi BIND menggunakan name-server daemon yand disebut named (dibaca name-d). Ada beberapa cara untuk menjalankan daemon tersebut, yaitu:

named [-4] [-6] [-c config-file] [-d debug-level] [-f ] [-g] [-n #cpus] [-p port] [-v] dengan: -4 Menggunakan IPv4 saja, walaupun mesin mempunyai kemampuan IPv6. -6 Menggunakan IPv6 saja, walaupun mesin mempunyai kemampuan IPv4. -c config-file Gunakan config-file sebagai file konfigurasi selain default /etc/named.conf. Gunakan path absolut sebagai config-file. -d debug-level Set tingkat informasi yang dikeluarkan untuk debugging / melihat kesalahan yang ada. Semakin tinggi angka, semakin banyak informasi yang di tampilkan. -f Jalankan server di foreground, tidak sebagai daemon di background. -g Jalankan server di foreground, dan paksa semua error di log ke stderr. -n #cpu Buka thread #cpu untuk mengambil keuntungan maksimal dari multiple CPU. Jika tidak diberikan, named akan mencoba menentukan sendiri jumlah CPU yang ada di mesin, dan membuat thread per CPU. Jika named tidak berhasil menentukan jumlah CPU, maka thread untuk sebuah CPU saja yang akan dibuat. -p port Port tempat mendengarkan permohonan. Jika tidak diberikan, nilai defaultnya adalah 53. -v Laporkan nomor versi pada saat keluar (exit).

Perintah berikut akan menjalankan named dengan menggunakan nilai default:

# named

Bila ingin menggunakan file konfigurasi konfigurasi tertentu, misalnya, /etc/named.conf , maka dapat digunakan perintah:

# named -c named.conf Atau bisa menggunakan perintah,

# service named start # service named restart

Jika anda ingin mengoperasikan named secara automatis pada saat mesin di booting, maka kita dapat memasukannya dalam

# chkconfig named on Atau # chkconfig named off

Untuk mematikan named dari waktu start. Menkonfigurasi Resolver Resolver adalah program yang mengirim pertanyaan (query) terhadap Server DNS untuk mendapatkan informasi tentang suatu host. Dalam sistem operasi UNIX resolver dimplementasikan dalam suatu library (bukan dalam suatu program khusus untuk client). Untuk menggunakan resolver user cukup mengkonfigurasi file /etc/resolv.conf. File ini berisi informasi tentang domain dan Server DNS untuk domain tersebut. Berikut ini adalah salah satu contoh file /etc/resolv.conf.

; ; Contoh file /etc/resolv.conf ; search aku.com nameserver 202.46.3.178 nameserver 202.155.30.227 nameserver 202.155.30.227 nameserver 202.158.20.1 nameserver 202.159.32.2 nameserver 202.158.40.1 nameserver 202.159.33.2

Biasanya kita cukup menggunakan sekitar tiga (3) buah name server untuk membantu proses resolve DNS. IP address yang ditulis di atas adalah IP address yang beroperasi di Internet Indonesia rata-rata milik ISP besar di Indonesia yang dapat kita gunakan sebagai resolver. Memelihara Server DNS Setelah Server DNS diaktifkan, ia perlu dipelihara dan dirawat. Ada beberapa hal yang harus dilakukan untuk memelihara Server DNS, antara lain: 1. Setiap melakukan perubahan pada zona file jangan lupa menambah serial number pada SOA Record. Karena apabila serial number tidak diubah maka secondary server tidak akan melakukan zona transfer ke primary server. 2. Sebaiknya format serial number yang digunakan adalah : YYYYMMddhhmm (YYYY=tahun, MM=bulan, dd=tanggal, hh=jam, mm=menit). Artinya bahwa setiap ada perubahan pada zona file maka serial number diganti dengan angka-angka tahun, bulan, tanggal, jam dan menit tanggal perubahan. Dengan cara ini maka setiap ada perubahan maka serial number pasti bertambah besar. 3. Untuk kehandalan system sebaiknya selain primary server juga digunakan beberapa secondary server. Sehingga apabila primary server mengalami kegagalan maka pemakai dapat menggunakan secondary server sebagai name server. 4. Usahakan melakukan koordinasi dengan administrator yang menangani primary server dari berbagai domain yang saling terhubung. 5. Untuk mendapatkan file named.ca release terakhir dapat di ambil melalui Web ke http://www.internic.net/zones/named.root.

Tips konfigurasi dan Utilitas DNS Menjalankan name server bukanlah hal yang mudah. Banyak hal yang harus dilakukan , dan sangat mudah terjadi kesalahan. Karenanya, diperlukan kehati-hatian yang cukup tinggi dalam menginstalasi name server agar ia berjalan dengan baik. Pada bagian ini akan diberikan beberapa tips dalam mengatasi kesalahan konfigurasi Server DNS serta tools yang dilakukan untuk mendebug Server DNS. Sebagian informasi ini diambil dari RFC 1912 yang membahas hal diatas.

Tips dalam mengkonfigurasi DNS.

Penamaan host Dalam penamaannya, sebuah domain terdiri dari beberapa kata /label yang dipisahkan oleh tanda titik. Ada beberapa aturan yang harus diikuti dalam memilih nama host atau domain , agar dalam pengoperasian DNS anda tidak masalah, yaitu:

• Karakter yang digunakan hanya boleh terdiri dari huruf dan angka yang tercantum kode ASCII, serta tanda “-“(dash). Label ini tidak boleh semuanya terdiri dari angka, dan hanya boleh berakhir dengan angka atau huruf. • Penggunaan tanda underscore( “_” )sebaiknya dihindari. Hal ini perlu dilakukan mengingat terdapat implementasi TCP/IP yang menolak nama host yang mengandung tanda underscore ini . • Karena aturan nama host ini juga dipakai untuk pengiriman email, maka aturan yang valid untuk penamaan host untuk pengiriman email (RFC 822) juga berlaku untuk penamaan host • Jangan memilih nama host yang bisa menimbulkan interpretasi yang salah bagi library penerjemah hostname (misalnya fungsi inet_ntoa() di sistem operasi unix). Misalkan anda menggunakan nama host 0xe. Nama ini valid menurut aturan penamaan host. Namun Jika anda mengetikkan telnet 0xe, maka perintah telnet diatas akan di interpretasikan oleh fungsi inet_ntoa() diatas sebagai telnet 0.0.0.14, karena 0xe merupakan penulisan dari E (=14) heksadesimal.

Glue record dan bahayanya. Glue record ialah Address record yang diasosiasikan dengan NS record tertentu. Contoh dari glue record adalah sebagai berikut.

aku.com IN NS dns.aku.com. IN NS dns2.aku.com. dns.aku.com. IN A 192.168.210.2 dns2.aku.com. IN A 192.168.210.3

Pada contoh diatas, IN A record disebut sebagai glue record. Fungsinya ialah menunjukkan IP address name server yang digunakan oleh domain yang didelegasikan.

Ada beberapa hal yang perlu diperhatikan dalam menuliskan glue record ini, yaitu:

• Glue records hanya diperlukan oleh zona file forward. Glue record tidak diperlukan dalam zona file untuk reverse domain. • Jika name server yang bersangkutan adalah multihomed (memiliki lebih dari satu IP address), maka kedua buah IP address tersebut harus dituliskan dalam glue record. Hal ini dilakukan untuk menghindari inkonsistensi cache. • Jangan biasakan untuk selalu membuat glue record tiap kali kita membuat NS record. Satu glue record sudah cukup. Glue record yang terduplikasi akan menjadi masalah pada saat anda melakukan penggantian IP address name server anda. IP yang lama akan tetap muncul karena anda lupa bahwa dibagian lain zona file atau di zona file yang lain masih terdapat record dengan IP address yang lama. Hal ini akan semakin menjadi masalah jika data yang salah tersebut dipropagasikan bolak balik antara primary dan secondary server. Untuk menanggulangi hal ini, kedua server harus dimatikan, dihapus file backup DNS nya dan semua Server DNS tersebut di restart lagi.

Inkonsistensi record (antara PTR dengan A) Setiap server yang terhubung ke Internet harus nama / hostname. Sebagian besar service di Internet menggunakan DNS untuk memeriksa layak tidaknya ia memberikan service kepada anda. Cukup banyak service di Internet yang menolak memberikan service jika host anda tidak terdaftar secara benar pada Server DNS. Contohnya ialah FTP server & IRC server yang menolak memberikan service jika host anda memiliki forward dan reverse address yang berbeda.

Karenanya, pastikan PTR record dan A record di Server DNS anda sesuai. Untuk setiap IP address, harus terdapat PTR record yang cocok dalam domain in-addr.arpa. jika host tersebut multihomed (memiliki lebih dari satu IP address), seluruh IP addres nya harus memiliki PTR record.

Selain itu PTR record harus menunjuk kembali ke A record yang sah, dan tidak menunjuk ke CNAME record.

Kesalahan penggunaan CNAME untuk MX dan NS Record CNAME sebaiknya hanya digunakan mengeneralisasi nama server (www untuk web server, ftp untuk ftp server dan sebagainya). Record CNAME sama sekali tidak diperbolehkan untuk digunakan bersama sama resource record yang lain.

Sebagai contoh, jika sudah didefinisikan bahwa mail.aku.com alias dari pop.aku.com, tidak boleh ada MX record, NS record atau record apapun untuk nama pop.aku.com (nama alias mail.aku.com). Jangan sekali kali melakukan praktek seperti yang ditunjukkan dibawah ini :

aku.com. IN MX 10 mail mail IN CNAME pop pop IN A 192.168.210.100 hal diatas hanya akan memperberat kerja server dan resolver karena untuk me-resolve host mail.aku.com akan diperlukan dua kali pemrosesan.

Yang lebih berbahaya ialah menggunakan record NS bersama-sama dengan CNAME, sebagaimana ditunjukkan oleh contoh dibawah ini

aku.com. IN NS dns IN NS home IN CNAME dns dns IN A 192.168.210.1 Contoh diatas menunjukkan cara yang salah untuk membuat nama domain menjadi nama host, sehingga membuat misalnya telnet aku.com = telnet dns.aku.com. Karena CNAME tidak diperbolehkan digunakan bersama-sama record yang lain, implementasi Server DNS, dalam hal ini BIND, akan menolak membaca record lain setelah melihat NS record menunjuk ke CNAME. Dengan demikian, seluruh resource record yang lain, ternasuk IN NS dan IN A akan ditolak, sehingga seluruh nama host dalam zona file akan menjadi sia-sia.

Jika anda ingin agar nama domain menjadi nama host, lakukanlah dengan cara berikut ini.

aku.com. IN NS dns IN NS home IN A 192.168.210.1 dns IN A 192.168.210.1

Satu hal lagi yang perlu diperhatikan, jangan lupa untuk menghapus CNAME yang diasosiasikan dengan hostname tertentu bila anda menghapus host tersebut dari zona file.

Lame delegation Setiap domain diharuskan untuk paling tidak memiliki primary server dan satu secondary server. Secondary server ini sebaiknya berada diluar network anda. Jika secondary server ini tidak langsung berada dibawah tanggung jawab anda, lakukan pemeriksaan isinya secara periodik untuk memastikan mereka mendapatkan data yang terbaru hasil zona transfer. Jika secondary server ini kita beri pertanyaan, ia harus memberikan jawaban yang authoritative. Jika jawaban yang diberikan tidak authoritative, hal ini termasuk kasus Lame Delegation.

Lame Delegation ialah kasus dimana kita sudah mendelegasikan suatu server untuk menjadi primary atau secondary server, namun server yang bersangkutan tidak melakukan tugasnya dalam menyediakan name service untuk zona yang bersangkutan.

aku.com. IN NS dns.aku.com. IN NS ns.isp.net.id. IN NS ns.isp2.net.id.

Sepeti contoh diatas, jika pada named.conf kita sudah menuliskan hal seperti diatas, namun secondary server ns.isp.net.id. dan ns.isp2.net.id. belum siap, belum melakukan zona transfer, atau belum di set sebagai secondary, maka akan terjadi lame delegation. Banyak hal akan terjadi sebagai akibat dari lame delegation. Dari mulai trafik tambahan ke primary server, nama host yang tidak dapat di resolve, hingga mentalnya e-mail ke host tujuan. Bagaimana Kita Mencek IP address sebuah Domain? Bagi anda yang masih menggunakan Windows, dapat menggunakan perintah nslookup di DOS Windows. Nslookup tidak lagi digunakan di Linux, perintah yang digunakan adalah dig. Ada beberapa tool lain yang juga sangat bermanfaat, seperti host dan whois. Beberapa contoh penggunaannya adalah sebagai berikut.

$ dig www.tokopedia.co.id

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> www.tokopedia.co.id ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37815 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;www.tokopedia.co.id. IN A

;; ANSWER SECTION: www.tokopedia.co.id. 60 IN A 216.146.46.10 www.tokopedia.co.id. 60 IN A 216.146.46.11

;; Query time: 28 msec ;; SERVER: 103.43.46.100#53(103.43.46.100) ;; WHEN: Tue Jan 10 13:19:29 WIB 2017 ;; MSG SIZE rcvd: 69

Terlihat bahwa IP address Web www.tokopedia.co.id adalah 216.146.46.10.

Menggunakan perintah host, kita akan memperoleh informasi yang lebih sederhana tapi bermanfaat, seperti:

$ host itb.ac.id

itb.ac.id has address 167.205.1.35 itb.ac.id mail is handled by 10 mail.itb.ac.id. itb.ac.id mail is handled by 20 mx2.itb.ac.id.

Dengan menggunakan dig, kita dapat mengevaluasi / melihat Authoritive Name Server sebuah domain, misalnya,

$ dig NS presidenri.go.id

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> NS presidenri.go.id ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42738 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;presidenri.go.id. IN NS

;; ANSWER SECTION: presidenri.go.id. 38400 IN NS ns4.ksp.go.id. presidenri.go.id. 38400 IN NS ns3.ksp.go.id.

;; Query time: 20 msec ;; SERVER: 103.43.46.100#53(103.43.46.100) ;; WHEN: Tue Jan 10 13:09:47 WIB 2017 ;; MSG SIZE rcvd: 74

Kita juga dapat mengevaluasi Mail Exchange Server untuk sebuah domain, misalnya,

$ dig MX pandi.or.id

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> MX pandi.or.id ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8062 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;pandi.or.id. IN MX

;; ANSWER SECTION: pandi.or.id. 86400 IN MX 10 mx2.pandi.or.id. ;; Query time: 2 msec ;; SERVER: 103.43.46.100#53(103.43.46.100) ;; WHEN: Tue Jan 10 13:21:34 WIB 2017 ;; MSG SIZE rcvd: 49

Akan menarik jika kita melihat isi keluaran whois yang berisi informasi, siapa penanggung jawab administratif, penanggung jawab teknis dari sebuah domain.

$ whois teleponrakyat.id

Domain ID:PANDI-DO533735 Domain Name:TELEPONRAKYAT.ID Created On:26-Nov-2014 08:40:58 UTC Last Updated On:26-Oct-2015 10:42:02 UTC Expiration Date:26-Nov-2017 23:59:59 UTC Status:ok Registrant ID:08mardi2 Registrant Name:marcelus ardiwinata Registrant Organization:qmall Registrant Street1:Berita Satu Plaza 5th fl Registrant Street2:Jaan Jend Gatot Subroto Kav 35-36 jakarta12950 Registrant Street3:-empty- Registrant City:Jakarta Registrant State/Province:DKI Jakarta Registrant Postal Code:12950 Registrant Country:ID Registrant Phone:+62.811891636 Registrant FAX:+62.00000000 . . di potong karena terlalu panjang . Name Server:PNS1.ASIA.CLOUDNS.NET Name Server:NS1.ASIA.CLOUDNS.NET Name Server:NS2.ASIA.CLOUDNS.NET DNSSEC:Unsigned

Sementara melalui perintah whois IP address host, dalam hal ini 203.130.196.114, kita dapat melihat di mesin mana sebetulnya host tersebut di hosting.

$ whois 167.205.0.0

# # ARIN WHOIS data and services are subject to the Terms of Use # available at: https://www.arin.net/whois_tou.html # # If you see inaccuracies in the results, please report at # https://www.arin.net/public/whoisinaccuracy/index.xhtml #

# # The following results may also be obtained via: # https://whois.arin.net/rest/nets;q=167.205.0.0? showDetails=true&showARIN=false&showNonArinTopLevelNet=false&ext=netref2 #

NetRange: 167.205.0.0 - 167.205.255.255 CIDR: 167.205.0.0/16 NetName: APNIC-ERX-167-205-0-0 NetHandle: NET-167-205-0-0-1 Parent: NET167 (NET-167-0-0-0-0) NetType: Early Registrations, Transferred to APNIC OriginAS: Organization: Asia Pacific Network Information Centre (APNIC) RegDate: 2003-07-23 Updated: 2009-10-08

OrgName: Asia Pacific Network Information Centre OrgId: APNIC Address: PO Box 3646 City: South Brisbane StateProv: QLD PostalCode: 4101 Country: AU RegDate: Updated: 2012-01-24 Ref: https://whois.arin.net/rest/org/APNIC

inetnum: 167.205.0.0 - 167.205.127.255 netname: ITB-NET descr: Institut Teknologi Bandung Jl. Ganesha 10 Bandung 40132 INDONESIA . . di buang karena terlalu panjang

Cara Memperoleh Domain Sendiri? Ada banyak perusahaan di Internet yang dapat memberikan registrasi DNS. Daftar lengkap perusahaan registrar yang ada di Internet dapat dilihat di http://www.icann.org/registrars/accredited- list.html. Anda dapat menggunakan jasa mereka untuk mengetahui apakah nama yang kita inginkan tersedia atau tidak. Anda kemudian dapat membeli domain tersebut menggunakan kartu kredit dan Web browser. Semoga kartu kredit dari Indonesia masih di terima dan di akui di dunia Internasional.

Dalam proses registrasi, biasanya anda akan ditanyakan dua nama primary DNS server untuk domain yang anda buat. Informasi ini akan menolong root DNS server untuk mengetahui dengan pasti informasi yang dibutuhkan untuk memperoleh IP address dari Web site anda.

Jika anda belum mempunyai nama dan / atau IP address dari primary DNS server, kita tidak perlu kuatir karena kita dapat melakukannya di belakangan, sesudah anda melakukan hal di bawah ini. Apakah static atau dynamic DNS?

Jika anda tidak mempunyai IP address public yang statik, maka kemungkinan besar anda memperoleh IP address secara dynamic dari DHCP ISP anda. Kemungkinan besar anda menginginkan servis dynamic DNS.

Jika anda memperoleh static IP address public, maka mekanisme static DNS yang perlu digunakan.

Sebagian besar teknik yang di terangkan di sini adalah untuk static DNS. Teknik membuat server Dynamic DNS lebih rumit daripada static DNS, tetapi sudah banyak servis di Internet untuk dynamic DNS. Sebagian dari servis tersebut adalah gratis. Ringkasan DNS digunakan untuk mempermudah penggunaan Internet, dengan memetakan IP address ke nama host. Agar data nama host dapat di distribusikan dibanyak server, format data yang digunakan harus mencerminkan terdistribusinya data tersebut. Untuk itu digunakan format tree dengan masing masing node nya disebut domain. Penulisan nama host secara lengkap disebut sebagai Full Qualified Domain Name (FQDN)

DNS terdiri dari beberapa komponen yaitu server, resolver , dan cache. Server berfungsi menyediakan jawaban atas pertanyaan domain, resolver berfungsi mencari jawaban berdasarkan pertanyaan domain dari aplikasi, dan cache berfungsi menyimpan sementara data hasil query untuk menghemat waktu proses name resolution

Software server DNS yang paling banyak digunakan ialah BIND. Dalam menjalankan BIND diperlukan konfigurasi atas named.conf dan zona file. Named.conf ialah file yang diperlukan untuk menginisialisasi operasi server DNS. Sedangkan zona file berisi data nama domain dari jaringan tertentu.

Untuk keperluan redundansi, server DNS untuk satu domain dapat lebih dari satu. Server utama dinamai primary server, sedangkan yang lain disebut secondary server. Zona file cukup diletakkan di primary server. Secondary server akan mengambil data ini dari primary server melalui proses yang disebut zona transfer.

Selain memetakan nama host ke IP address, DNS juga mampu melakukan hal sebaliknya. Proses pemetaan ini disebut reverse mapping, sedangkan data nya disebut sebagai reverse domain. Seluruh informasi reverse domain ini diletakkan dibawah domain in-addr.arpa BAB 13: Kinerja Jaringan

Jaringan komputer terbangun dari banyak peralatan yang saling terhubung satu sama lain sehingga informasi dapat di share antar mereka. Jadi, pengiriman data dari satu tempat ke tempat lain menjadi penting artinya. Salah satu karakteristik yang paling penting dalam proses pengiriman data adalah kecepatan pengiriman data tersebut. Kecepatan adalah salah satu dari berbagai isu kompleks yang perlu di perhatikan dalam kinerja jaringan secara keseluruhan.

Menyeimbangkan Kinerja Jaringan Dengan Karakteristik Kunci Bukan Kinerja Jika kita ingin membangun jaringan dengan kinerja yang tinggi, kita harus mengetahui karakteristik kunci yang bukan kinerja jaringan, tapi sangat berpengaruh kepada kinerja jaringan. Beberapa diantaranya adalah,

• Biaya disain dan implementasi – Tentunya kita umumnya mempunyai uang yang dibatasi. Biaya adalah salah satu kunci utama yang membatasi kinerja. Biasanya, semakin cepat jaringan semakin besar biayanya. Memang tidak selalu demikian, tapi biasanya demikian. • Kualitas – kualitas sebuah jaringan sesuai dengan kualitas komponen yang digunakan dan bagaimana cara menginstal-nya. Kualitas memang lebih sering berkaitan dengan budget. • Standarisasi – protokol / peralatan jaringan dapat di rancang untuk memenuhi standard yang di akui bersama, atau non-standard atau menggunakan produk proprietary. Rancangan yang standard biasanya lebih di sukai agar lebih mudah untuk interoperabilitas, upgrade, support dan training. • Reliabilitas – jaringan komputer kecepatan tinggi belum tentu tidak reliable. Memang lebih sukar dan lebih mahal membuat jaringan komputer kecepatan tinggi yang reliable di bandingkan dengan jaringan yang lambat. • Kemudahan Expansi dan Upgrade – salah satu hal yang penting dalam perencanaan jaringan adalah kemungkinan untuk di expansi / upgrade. Jaringan high-performance biasanya jauh lebih sukar untuk di upgrade dan lebih mahal untuk di expand. • Kemudahan administrasi dan maintenance – pada jaringan yang high-performance pekerjaan untuk mengadmini dan maintenance jauh lebih banyak daripada jaringan yang lambat. • Ruang dan Tetek Bengek – mengimplementasikan jaringan kecepatan tinggi akan dibatasi oleh akses kita pada lokasi fisik yang ada. Contoh klasik dalam pilihan wire dan wireless di rumah / kantor, memang wire lebih cepat tapi apakah kita ingin memasang semua kabel? • Dalam bahasa sederhana – ada rupa ada harga. Semakin bagus jaringan yang akan kita buat semakin mahal harganya.

Konsep: Kinerja memang menjadi salah satu karakteristik utama dalam sebuah jaringan, tapi ada banyak karakteristik lain yang perlu di perhatikan. Dalam banyak hal, biaya, kualitas, reliabilitas, expandibilitas, kemudahan perawatan, dan banyak karakteristik lain yang harus di perhitungkan berlawanan dengan kinerja jaringan. Semakin cepat jaringan yang ingin kita bangun, semakin sulit untuk menjamin karakteristik lainnya agar tetep pada tingkat yang tinggi. Mengukur Kinerja Ada beberapa hal yang biasanya digunakan untuk melihat berbagai aspek dari kinerja jaringan. Beberapa diantara mirip satu sama lain, kita sering melihat-nya – dalam banyak hal, sering menyalah gunakan bahkan sering meng-abuse. Oleh karena itu ada baiknya kita melihat masing- masing parameter tersebut, dan membahas bagaimana masing-masing parameter ini digunakan dan apa arti masing-masing.

Sebetulnya yang kita hadapi bukan sekedar kinerja semata, kita harus mengerti realitas dari berbagai tingkatan kinerja. Tergantung pada aplikasi yang kita gunakan, cara data dikirim melalui jaringan mungkin lebih penting daripada sekedar kecepatan pengiriman data tersebut. Terutama aplikasi multimedia yang membutuhkan kinerja real-time, mungkin akan lebih membutuhkan kecepatan yang konsisten / steady (konstan) daripada sekedar cepat. Oleh karena itu, sekedar kecepatan tinggi belum tentu di perlukan, dan masalah ini biasanya tidak di pahami dengan baik.

Terminologi Pengukuran Kinerja Ada beberapa terminologi yang paling sering digunakan dalam mengukur kinerja jaringan, beberapa diantaranya adalah

Kecepatan Kecepatan ini tentunya dapat berarti macam-macam. Salah satu yang paling banyak digunakan adalah untuk menunjukan kecepatan rata-rata dari sebuah teknologi jaringan tertentu. Contoh, Fast Ethernet mempunyai kecepatan rata-rata 100 megabit per detik, oleh karenanya sering disebut sebagai 100Mbit Ethernet, atau di beri kode “100BASE-TX”.

Kecepatan adalah “Nomor Ajaib Kinerja” di jaringan komputer – tidak mengherankan jika kemudian dibuat sebagai label dari peralatan. Masalahnya kebanyakan orang akan berfikiran bahwa kecepatan tersebut adalah “kecepatan jaringan”. Terus terang, kecepatan tersebut adalah kecepatan maksimum yang secara teori dapat di capai. Tidak ada teknologi jaringan yang dapat bekerja pada kecepatan penuh, kebanyakan akan bekerja pada kecepatan yang lebih rendah karena berbagai faktor di dunia nyata.

Tingkat kecepatan seperti “100 Mbps Ethernet” sering kali di sebut sebagai “throughput” dari teknologi, meskipun kecepatan maksimum teoritis dari sebuah teknologi kira-kira hampir sama dengan bandwidth daripada throughput, dan kedua-nya tidak sama. Bandwidth Bandwidth adalah terminologi yang banyak digunakan dan biasanya mengacu pada kapasitas membawa data dari sebuah jaringan atau media transmisi data. Bandwidth mengindikasikan banyaknya data maksimum yang dapat di kirimkan dari satu tempat ke tempat lain pada satuan waktu tertentu. Dalam dunia radio, bandwidth mengindikasikan lebar band dari frekuensi yang digunakan untuk membawa data. Pengertian bit & Byte Salah satu unit pengukuran kinerja jaringan yang penting biasanya di representasikan dalan bentuk bit dan Bytes. Biasanya, bit di singkat “b kecil” sedang Byte di singkat “B besar”. Satu B (Byte) adalah delapan (8) b (bit) itu yang penting kita dasari bersama.

Jika kita melihat kecepatan jaringan biasanya semua di representasikan dalam bit per detik. Jadi jika kecepatan modem 56k maksudnya 56.000 bit per detik. Kecepatan Ethernet LAN 100Mbps maksudnya 100 juta bit per detik. Yang sering membingungkan adalah kecepatan transfer dari Web atau FTP, biasanya di berikan dalam Byte per detik (Bps) kadang juga dalam bit per detik (bps). Hati-hati dengan “B besar” dan “b kecil”. Kita harus menyadari bahwa satuan Bps adalah delapan kali dari bps. Throughput Throughput lebih mengacu pada kinerja peralatan pada saat mengirimkan / mentransfer data dalam satuan waktu tertentu. Throughput dapat berubah-ubah tergantung kondisi jaringan.

Anda adalah orang yang beruntung jika berhasil memperoleh throughput dalam dunia nyata yang menyamai throughput teoritis. Kebanyakan selalu ada perbedaan, mungkin kecil bedanya tapi tidak jarang sangat besar bedanya. Tapi selalu akan berbeda.

Perbedaan tersebut terjadi umumnya karena tiga (3) hal yang mendasar, yaitu,

• Network Overhead – tidak seluruh paket digunakan untuk mengirimkan data. Sebagian digunakan untuk protokol komunikasi. Ini merupakan overhead dari jaringan. • Keterbatasan kinerja karena faktor luar – virus, spammer, banjir paket karena serangan cracker merupakan faktor yang menyebabkan kinerja jaringan jatuh. • Masalah konfigurasi jaringan – kesalahan routing, kesalahan setting semua akan menyebabkan kinerja jaringan menjadi kacau.

Quality of Service (QoS) Seperti di jelaskan sebelumnya, ada banyak aspek yang dapat digunakan untuk mengukur kinerja jaringan. Salah satu konsep yang penting adalah konsep latency, yang mengukur berapa lama waktu yang dibutuhkan untuk mengirim data melalui sebuah jaringan. Latency adalah salah satu parameter penting di jaringan yang di kenal dengan quality of service atau QoS.

Fungsi utama teknologi jaringan adalah berusaha untuk memompa data dari satu tempat ke tempat lain secepat-cepatnya. Sebagai contoh, di Internet, teknologi packet switching di rancang untuk mengirimkan paket dari titik “A” ke titik “B” dengan cara apapun yang paling efektif, tanpa si pengguna perlu tahu route yang digunakan. Bahkan bisa jadi paket-paket yang dikirim akan melalui jalur yang berbeda.

Bagi kebanyakan aplikasi, seperti pengiriman file / message, cara di atas mungkin mencukupi. Akan tetapi, ada aplikasi yang melihat cara tersebut sebagai “kualitas sangat rendah”. Beberapa aplikasi mungkin tidak mementingkan seberapa cepat data di kirim akan tetapi lebih menuntut teknologi / protokol yang dapat memberikan “layanan yang berkualitas”. Beberapa fitur dari “quality of service” adalah sebagai berikut:

• Bandwidth Reservation: Kemampuan untuk mereservasu sebagian dari bandwidth di jaringan atau interface selama perioda waktu tertentu, sehingga ke dua mesin dapat memperoleh bandwidth yang dibutuhkan untuk operasi tertentu. Hal ini dapat digunakan untuk aplikasi multimedia dimana data dikirim secara real-time yang tidak boleh ada re- routing atau re-transmisi paket. Pola ini juga di sebut reservasi sumber daya (resource reservation). • Latency Management: Sebuah fitur yang membatasi latency pada proses transfer data antara dua mesin agar sesuai dengan nilai tertentu. • Traffic Prioritization: Di jaringan konvensional, “semua paket adalah sama”. Futir QoS yang bergunakan adalah kemampuan untuk menangani paket sehingga sambungan yang penting akan memperoleh prioritas yang lebih baik daripada sambungan yang tidak penting. • Traffic Shaping: Fitur ini menggunakan buffer dan limit yang membatasi traffic sebuah sambungan agar dalam nilai maximum yang diset sebelumnya. • Avoidance: Fitur QoS yang memonitor sambungan dalam sebuah jaringan, dan melakukan re-route data jika bagian jaringan tersebut mengalami congested / kemacetan.

Pada dasarnya, quality of service dalam konteks jaringan sama dengan quality of service di dunia nyata. Kalau di dunia restoran kira-kira berbedanya antara layanan “take-out” dengan “makan di tempat”, ke duanya sama-sama untuk membuat orang kenyang tapi beda kebutuhan. Beberapa aplikasi, seperti multimedia, suara, music dan video sangat tergantung waktu dan membutuhkan aliran informasi yang konstan di bandingkan dengan bandwidth.

Konsep kunci: quality of service sebetulnya lebih untuk menjelaskan bagaimana data dikirim antar mesin, daripada seberapa cepat data dikirim. Fitur Quality of Service mencari cara untuk memperoleh aliran data yang lebih dapat di prediksi daripada seberapa cepat. Fitur ini termasuk bandwidth reservation, latency minimums, traffic prioritization and shaping, dan congestion limitation. Quality of service lebih penting untuk aplikasi khusus, seperti, multimedia daripada aplikasi biasa seperti pengiriman file / berita.

Untuk mendukung kebutuhan quality of service, banyak teknologi baru di kembangkan untk menambahkan fitur quality of service di dalamnya. Hal ini termasuk kemampuan untuk mendukung pengiriman isochronous, dimana mesin mereserve sebagian bandwidth pada waktu tertentu untuk mendukung aplikasi yang harus mengirimkan data secara real-time. Salah satu teknologi yang memperoleh banyak perhatian karena fitur quality of service-nya adalah Asynchronous Transfer Mode (ATM). ATM di rancang untuk untuk mendukung fitur manajemen traffic yang biasanya tidak ada di teknologi jaringan yang umum digunakan seperti Ethernet.

Catatan: “Quality of Service” pada hari ini menjadi buzzword. Kata quality of service mengesankan “high performance”. Kita harus menggali lebih dalam daripada kata-kata “marketing” untuk mencari tahu fitur QoS apa yang di berikan. Bandwidth Manajemen Menggunakan HTB Mengatur Bandwidth mengalokasikan maksimum bandwidth untuk setiap user / komputer menjadi momok bagi banyak operator terutama untuk menjaga agar penggunaan bandwidth dapat maksimal untuk keperluan yang baik dengan keterbatasan yang ada.

Ada beberapa software open source untuk mengatur bandwidth ini. Ada dua (2) teknik manajemen bandwidth yang banyak digunakan di lapangan, yaitu, HTB dan CBQ. CBQ merupakan teknik yang paling lama, HTB lebih baru dari CBQ. Beberapa laporan / literatur menyebutkan bahwa HTB lebih baik dari CBQ hasilnya. Pada kesempatan ini, kita akan mencoba memfokuskan pada HTB.

Umumnya program pengatur bandwidth gratisan dapat di cari di SourceForge (http://www.sf.net). Pada kesempatan ini akan ditunjukan cara menginstalasi dan mengoperasikan software HTB. Yang anda butuhkan adalah script htb.init melalui URL http://sourceforge.net/projects/htbinit/. Belakangan ternyata ada script yang mungkin menarik untuk di coba yang membuat konfigurasi HTB menjadi lebih sederhana yaitu htb-gen yang bisa di ambil di http://www.praga.org.ar/dev/htb- gen/packages/htb-gen_0.8.4_all.deb

Scipt htb.init di turunkan dari cbq.init, sehingga memudahkan bagi mereka yang sudah biasa menggunakan CBQ untuk pindah ke HTB.

Beberapa langkah sederhana untuk menginstalasi htb.init adalah sebagai berikut Ambil file htb.init-* yang terbaru dari Source Forge

http://sourceforge.net/projects/htbinit/

Copy ke directory /sbin

# cp htb.init-v0.8.5 /sbin/ # mv /sbin/htb.init-v0.8.5 /sbin/htb.init

Buat directory htb di /etc/sysconfig

# mkdir /etc/sysconfig/htb

Buat Aturan untuk manajemen bandwidth di /etc/sysconfig/htb berbentuk file-file untuk masing- masing aturan yang nantinya akan di compile melalui perintah htb.init compile. Start htb # /sbin/htb.init compile # /sbin/htb.init start # echo /sbin/htb.init start -> /etc/rc.local Konfigurasi HTB Pada htb.init, setiap kelas traffic di jelaskan oleh sebuah file yang biasanya di telatkan di /etc/sysconfig/htb. Konvensi penamaan file berbeda dengan cbq.init. Prefix 'cbq-' di hilangkan di htb. Penamaan di ganti dengan nama interface supaya lebih mudah bagi manusia untuk membaca- nya maupun untuk memisahkan konfigurasi yang hanya disiplin antrian saja.

Pilihan disiplin antrian global biasanya di letakan di /etc/sysconfig/htb/ifname*;, dimana "ifname" adalah nama dari interface jaringan. File ini harus ada jika kita ingin HTB mensetup interface yang di maksud. Jika tidak ada option yang ingin di masukan tidak masalah, biarkan saja file tersebut kosong, tapi file harus ada. Pilihan kelas dari file menggunakan nama yang harus sesuai dengan format berikut,

/etc/sysconfig/htb/ifname[sid]-[clsid][description]

• [clsid] adalah class ID yang merupakan nomor hexadecimal range 0x2-0xFFFF, ditulis tanpa prefix “0x”. Jika ada beberapa class ID yang di batasi oleh “:”, maka [sid] yang terakhir dalam daftar merepresentasikan ID dari class di file konfigurasi. • [sid] yang mendahului [clsid] terakhir adalah class ID dari parent class. Untuk menjamin urutan, maka parent class selalui dibuat sebelum anak class-nya, disarankan untuk menyertakan semua [clsid] dari root class hingga leaf. • [description] adalah kalimat sembarang yang dapat kita tambahkan pada nama simbolik class agar dapat lebih terbaca.

Contoh nama yang valid adalah

eth0-2 root class dengan ID 2, pada interface eth0 eth0-2:3 child class dengan ID 3 dan parent 2, pada interface eth0 eth0-2:3:4 child class dengan ID 4 dan parent 3, pada interface eth0 eth1-2.root root class dengan ID 2, pada interface eth1 Ada banyak parameter yang dapat dimasukan ke file-file di atas. Detail dari parameter htb dapat dilihat pada http://luxik.cdi.cz/~devik/qos/htb. Beberapa format / perintah dari file aturan / rule di HTB terbagi dalam beberapa jenis parameter Parameter Disiplin Antrian Parameter disiplin antrian hanya berlaku pada disiplin antrian root htb dan harus dimasukan ke dalam file /etc/sysconfig/htb/[ifname]. File [ifname] harus ada jika kita ingin htb di operasikan di interface tersebut.

DEFAULT=[clsid] optional, default 0 DEFAULT=30

[clsid] adalah ID class default untuk traffic yang tidak berhasil di klasifikasi. Hati-hati htb.init akan menggunakan class ID default 0, yang artinya antrian FIFO akan berusaha mengirim paket pada kecepatan FULL / maksimum. Dengan mengubah DEFAULT akan menyebabkan prioritas paket menjadi lebih rendah.

R2Q=[number] optional, default 10 R2Q=100

Parameter R2Q memungkinkan kita untuk menset koefisien untuk menghitung nilai DRR (Deficit Round Robin). Nilai default 10 cukup baik untuk kecepatan 5-500Kbps dan harus di naikan untuk kecepatan tinggi.

DCACHE=yes|no optional, default "no";

Paramter ini akan mengakifkan "dequeue cache" yang akan mengurani keadilan dalam pemrosesan paket tapi memungkinkan htb untuk digunakan dalam jaringan yang sangat cepat. Parameter ini default-nya off. Paramater Class HTB Parameter class HTB harus di letakan di file /etc/sysconfig/htb/[ifname]-[clsid](:[clsid])*.*.

RATE="speed"|prate|pceil wajib RATE=5Mbit

Alokasi bandwidth ke sebuah class. Traffic yang lewat melalui class tertentu akan di bentuk sesuai dengan kecepatan yang diberikan. Anda dapat menggunakan Kbit, Mbit atau bps, Kbps, dan Mbps. Jika tidak di berikan unit-nya, maka bit/detik akan digunakan. Perlu di catat bahwa “bps” disini berarti “byte per detik” bukan bit per detik.

Nilai "prate" atau "pceil" akan mengambil nilai RATE atau CEIL dari class parent. Feature ini dibuat untuk membantu manusia agar file konfigurasi konsisten.

CEIL="speed"|prate|pceil optional, default $RATE CEIL=6MBit

Maksimum bandwith yang dapat digunakan oleh class. Beda antara CEIL dan RATE adalah besar bandwith yang dapat di pinjam, jika ada bandwidth yang sisa.

Default-nya, CEIL sama dengan RATE oleh karena itu class tidak dapat meminjam bandwidth dari parent. Jika kita ingin class bisa meminjam bandwidth yang tidak digunakan, kita harus memasukan nilai maksimum yang dapat digunakan, jika ada sisa. Pada saat beberapa class berkompetisi untuk menggunakan bandwidth yang tidak digunakan, setiap class akan di berikan share proporsional terhadap RATE class tersebut.

BURST="bytes" optional, default dihitung BURST=10Kb

CBURST="bytes" optional, default dihitung CBURST=2Kb

Parameter BURST dan CBURST mengatur jumlah data yang akan dikirim dari satu class pada maksimum kecepatan hardware sebelum berusaha memberikan servis ke class yang lain.

Jika CBURST kecil, dia akan mengatur pengiriman paket agar tidak melebihi kecepatan CEIL, kira- kira sama dengan cara PEAK bekerja di mekanisme TBF.

PRIO=5

Prioritas dari class traffic. Semakin besar nomor, semakin kecil prioritas. Class dengan prioritas tinggi biasanya akan di berikan prioritas lebih dulu untuk menggunakan kelebihan bandwidth. Prioritas 5 sudah cukup.

LEAF=none|sfq|pfifo|bfifo optional, default "none"

Memberitahukan script untuk menempelkan disiplin antrian yang spesifik untuk leaf ke class htb. Default-nya, tidak ada disiplin antrian leaf yang digunakan.

Jika kita ingin menjamin bahwa sharing bandwidth antara beberapa mesin di class yang sama, kita sebaiknya menggunakan LEAF=sfq untuk menempelkan SFQ sebagai disiplin antrian leaf ke sebuah class.

MTU="bytes" optional, default "1600"

Maksimum panjang paket yang akan di buat oleh htb. Nilai default harusnya cukup untuk berbagai hal, tentunya cukup untuk Ethernet. Parameter disiplin antrian SFQ Disiplin antrian SFQ merupakan cara paling murah untuk melakukan sharing bandwidth antara beberapa mesin. Disiplin ini bersifat stochastik (random), tidak betul-betul fair tapi cukup fairlah. Jika anda membutuhkan sesuatu yang betul-betul fair, sebaiknya menggunakan disiplin antrian WRR (weighted round robin) atau WFQ. Perlu di catat bahwa SFQ tidak melakukan shaping trafik – shaping dilakukan oleh class HTB yang menggunakan SFQ.

QUANTUM="bytes" optional, default not set

Paramter ini harus di set tidak lebih rendah dari MTU sambungan, untuk ethernet adalah 1500b, atau (dengan MAC header) 1514b.

PERTURB="seconds" optional, default "10"

Perioda yang digunakan oleh fungsi hash perturbation. Jika tidak di set, rekonfigurasi hash akan terjadi pada waktu yang mungkin tidak kita inginkan. Nilai defaul 10 detik biasanya cukup baik. Parameter Disiplin Antrian PFIFO/BFIFO Untuk antrian FIFO sederhana. Biasanya hanya satu parameter yang menentukan panjang-nya dalam byte atau paket.

LIMIT="packets"|"bytes" optional, qdisc default LIMIT=1000

Jumlah paket / byte di antrian yang dapat di tampung. Unit tergantung pada tipe antrian yang digunakan. Parameter Filter

RULE=[[saddr[/prefix]][:port[/mask]],][daddr[/prefix]][:port[/mask]]

Parameter ini akan membuat “u32” filter yang akan memilih traffic untuk setiap class. Anda dapat menggunakan multiple RULE per config.

Mask port sifatnya optional dan hanya digunakan bagi pengguna yang sudah mahir dan mengerti bagaimana cara kerja filter “u32” bekerja.

Beberapa contoh:

RULE=10.1.1.0/24:80 Pilih trafik menuju menuju jaringan 10.1.1.0/24 port 80

RULE=10.2.2.5 Pilih trafik menuju ke semua port pada sebuah mesin 10.2.2.5

RULE=10.2.2.5:20/0xfffe Pilih trafik menuju port 20 dan 21 pada mesin 10.2.2.5

RULE=:25,10.2.2.128/26:5000 Pilih trafik dari mana saja dengan source port 25 ke jaringan 10.2.2.128/26 port 5000

RULE=10.5.5.5:80 Pilih trafic dari Web server mesin 10.5.5.5 port 80 menuju mana saja.

REALM=[srealm,][drealm]

Parameter akan membentuk filter “route” yang akan mengklasifikasi trafik berdasarkan realm source / destination paket. Untuk informasi lebih lanjut tentang realm, silahkan membaca referensi IP command dari Alexey Kuznetsov (http://linux-ip.net/gl/ip-cref/) . Script HTB tidak mendefinisikan realm apapun, HTB script ini hanya akan membuat perintah “tc filter” untuk anda.

Realm dapat berbentuk nomor desimal atau kata yang mengacu pada realm biasanya bisa di baca di /etc/iproute2/rt_realms.

Contoh:

REALM=russia,internet Pilih trafik dari realm "russia" ke realm "internet"

REALM=freenet, Pilih trafik dari realm "freenet" REALM=10 Pilih trafik ke realm 10

MARK="mark"

Parameter ini akan membuat aturan filter “fw” yang akan memilih trafik untuk setiap class sesuai dengan “mark” firewall. Mark adalah nomor desimal yang ditandakan pada paket jika aturan firewall mengatakan demikian. Anda dapat menggunakan multiple MARK per config.

Perlu dicatat bahwa aturan untuk berbagai tipe filter dapat di gabungkan. Kita harus memperhatikan prioritas dari aturan filter, yang dapat di set menggunakan variabel PRIO_{RULE,MARK,REALM}.

Parameter Waktu

TIME=dowdow.../from-till;[rate[/burst][ceil[/cburst]] TIME=60123/18:00-06:00;256Kbit/10Kb,384Kbit TIME=18:00-06:00;256Kbit

Melalui parameter ini kita dapat membedakan bandwidth sebuah class dalam satu hari. Kita menggunakan multiple TIME, jika waktu-nya overlap, yang terakhir yang akan digunakan. Parameter "rate", "burst", "ceil" dan "cburst" mengacu pada parameter RATE, BURST, CEIL dan CBURST.

Kita juga dapat mengatur berdasarkan hari dalam satu minggu pada aturan TIME, Day of Week dalam angka, 0 berarti minggu, 1 berarti senin, dst. Untuk menspesify beberapa hari, kita perlu menulis angka-nya menjadi satu kesatuan.

Proses membuat aturan untuk di letakan di /etc/sysconfig/htb tidak terlalu sukar, hanya saja kita perlu membuat skenario yang spesifik di jaringan yang akan anda atur bandwidthnya. Contoh Konfigurasi Untuk membayangkan proses membuat file konfigurasi, kita lihat contoh topologi jaringan yang sering digunakan di RT/RW-net dengan ADSL Modem / router 3G tersambung ke Internet.Bayang kita kita mempunyai sambungan ke Internet menggunakan ADSL kecepatan uplink 64Kbps sementara kecepatan downlink 384Kbps.

Perlu di catat bahwa kita hanya dapat mengontrol trafic yang keluar dari device / interface saja. Kita tidak dapat mengontrol traffic yang masuk ke interface. Jika kita akan mengontrol trafic di kedua arah, sebaiknya HTB di implementasikan di ke dua interface tempat traffic keluar.

Traffic dari internet ke LAN akan keluar melalui eth0 dengan kecepatan maksimum sama dengan ADSL 384Kbps. Sementara traffic dari LAN ke Internet akan keluar dari eth1 dengan kecepatan maksimum 64Kbps.

Bayangkan jika kita ingin agar semua client di LAN memperoleh 28Kbit dari Internet. Sedangkan untuk trafik dari LAN ke Internet di ijinkan untuk sampai dengan 1Kbit untuk setiap client. Yang perlu di ketahui juga bahwa semua trafik akan melalui Linux proxy server yang menjalankan fungsi NAT, sehingga IP address LAN 192.168.0.0/24 akan berubah menjadi 192.168.1.100 pada saat masuk ke router ADSL. Proses bandwith manajemen di lakukan di PC Linux, kita perlu mensetup file konfigurasi HTB di kedua interface eth1(menuju ke Internet) dan eth0 (menuju LAN). File konfigurasi untuk mengatur / memanajed bandwidth di letakan di /etc/sysconfig/htb

File eth0 DEFAULT = 30 File eth0-2.root RATE = 384Kbit BURST = 15k File eth0-2:30.default RATE = 28Kbit CEIL = 384Kbit BURST = 15k LEAF = sfq File eth1 DEFAULT = 30 File eth1-2.default RATE = 64Kbit BURST = 15k File eth1-2:30.default RATE = 1Kbit CEIL = 64Kbit BURST = 15k LEAF = sfq

Kita dapat dengan mudah memberikan perlakuan / bandwidth khusus untuk sebuah workstation / PC agar beda dari yang lain. Misalnya PC / workstation 192.168.0.104 kita ingin berikan kecepatan ke Internet lebih tinggi menjadi 100Kbps dari Internet dan 10Kbps menuju Internet. Maka konfigurasi yang perlu ditambahkan adalah

File eth0-2:10.pc104 RATE = 100Kbit CEIL = 384Kbit BURST = 15k LEAF = sfq RULE = 192.168.0.104

File eth1-2:10.pc104 RATE = 10Kbit CEIL = 64Kbit BURST = 15k LEAF = sfq RULE = 192.168.0.104

Dengan menggunakan perintah rule kita dapat mengatur aplikasi per workstation misalnya kita memberikan prioritas lebih tinggi untuk game di bandingkan dengan Web dsb. Kita perlu mengetahui port dari masing-masing aplikasi yang akan kita konfigurasi bandwidth-nya. Setelah semua konfigurasi dibuat, yang perlu kita lakukan adalah

# /sbin/htb.init compile # /sbin/htb.init start # echo /sbin/htb.init start -> /etc/rc.local

Lakukan htb.init compile setiap kali kita mengubah / menambah aturan bandwidth.

Bagi anda yang tidak ingin pusing dengan HTB / CBQ yang harus di konfigurasi secara manual, saat ini implementasi bandwidth manajemen sudah dapat dilakukan menggunakan GUI (grafis / web), terutama di router seperti Mikrotik atau menggunakan sistem operasi OpenWRT yang bisa di download secara bebas bahkan bisa kita buat sendiri. BAB 14: Keamanan Jaringan

Dalam mempelajari keamanan jaringan, cara yang paling sederhana adalah mempelajari dulu teknik melakukan serangan di jaringan agar mempunyai gambaran bagaimana cara orang melakukan serangan. Setelah mengerti cara melakukan serangan, maka langkah selanjutnya adalah belajar cara mengamankan jaringan. Yang menjadi masalah adalah, untuk merusak / menyerang kita dapat saja cukup menggunakan satu cara saja untuk bisa merusak. Sialnya untuk bertahan / mempertahankan, kita harus dapat bertahan dari segala kemungkinan serangan.

Mempelajari teknik menyerang dapat menggunakan sistem operasi penetration testing, seperti, atau backtrack yang sudah menyiapkan semua aplikasi yang dibutuhkan secara lengkap. Juga ada beberapa forum yang bisa digunakan untuk belajar teknik serangan, seperti, • http://www.indonesianbacktrack.or.id/ • http://www.computersecuritystudent.com/

Serangan yang paling banyak menelan korban sebetulnya bukan serangan secara canggih, serangan yang banyak menelan korban lebih banyak serangan-serangan yang sederhana dengan cara menipu. Serangan jenis ini biasa kita sebut sebagai social engineering. Contoh serangan social engineering,

• Mengajak pacaran, kemudian minta pulsa / foto bugil dll. • Mengajak investasi – beberapa korban di Indonesia menderita kerugian hingga ratusan juta. • Mengajak kawin – beberapa korban di Indonesia menderita kerugian hingga ratusan juta.

Sementara untuk bertahan, sebetulnya tidak cukup hanya melakukan konfigurasi dari sisi jaringan saja, kita perlu melakukan pertahanan dari sisi manusia / pengguna. Untuk teknik bertahan yang mudah, sangat di sarankan untuk membaca dokumen yang ada di situs InternetSehat.id, ini di peruntukan bagi masyarakat awam agar bisa ber Internet secara aman, contoh,

• Jangan mengumbar / mengupload hal-hal yang sifatnya pribadi, seperti, nomor telepon, foto pribadi dll. • Jangan pernah percaya dengan orang yang tidak kita kenal di Internet, apalagi jika diminta melakukan hal-hal yang tidak wajar.

Berbagai cara bertahan di Internet ini perlu di ajarkan kepada anak-anak sejak dini, bahkan akan lebih baik lagi jika dimasukan ke kurikulum sekolah. Anatomi Serangan Dalam buku ini tidak akan di jelaskan secara detail berbagai teknik serangan yang variasinya sangat banyak. Buku ini hanya memberikan beberapa gambaran teknik serangan yang ada.

Serangan yang menyebabkan kerusakan, korupsi data dapat dilakukan dengan banyak cara. Data corporate akan rusak, hancur, dan / atau di curi jika tidak secara benar di proteksi. Tembusnya keamanan yang menjadikan korupsi data dan tercurinya data mungkin akan merugikan secara finansial sebuah perusahaan. Membangun kembali data / file yang rusak akan membutuhkan waktu dan uang belum termasuk kehilangan usaha pada saat perbaikan data.

Perlu disadari bahwa serangan seringkali tidak datang dari luar jaringan yang kita percaya. Statistik menunjukan lebih dari 50% aktifitas jaringan yang tidak baik berasal dari sumber internal. Berikut adalah sebagian daftar serangan yang sering terjadi pada sebuah sistem informasi. • Social Engineering • Viruses/Trojan Horses • Denial of Service (DoS) • IP Spoofing • Worm • Replay Attack • Pencurian Informasi Social Engineering Social Engineering adalah teknik yang digunakan penyerang untuk mengakses sistem atau informasi dengan cara mengeksploitasi instink manusia yang mendasar yang berusaha untuk membantu orang lain. Umumnya, social engineering berhasil dengan baik karena target sasaran kurang memberikan program sosialisasi untuk mengedukasi pegawai tentang kewajiban & tanggung jawab tentang hal yang berkaitan dengan keamanan.

Contoh, Unang seorang penyerang berpura-pura menjadi teknisi jaringan dan menelpon target Dewi seorang sekretaris perusahaan. Unang mengatakan kepada Dewi bahwa dia sedang memperbaiki jaringan dan membutuhkan username / password Dewi untuk memverifikasi bahwa masalah tersebut telah teratasi. Karena Dewi tidak pernah memperoleh pengarahan dan berusaha untuk membantu, maka Dewi akan memberikan username / password-nya kepada Unang. Virus/Trojan Horses Virus adalah program yang tidak baik yang dapat memasukan dirinya ke sistem operasi, atau program dan mengubahnya. Trojan adalah virus yang bersembunyi dalam software yang legal. Software di download atau di transfer ke server atau ke workstation dan jika di aktifkan, program tidak baik ini akan menjalankan programnya.

Firewall praktis tidak dapat memberikan proteksi terhadap serangan virus. Sebagian besar virus akan bersembunyi pada binary program lain sehingga sulit untuk di deteksi. Untuk bertahan terhadap serangan virus sebaiknya digunakan anti virus pada semua komputer.

Salah satu software anti virus gratis yang cukup baik adalah ClamAV yang dapat di ambil di Internet dan dapat mengupdate database virusnya secara automatis dari Internet. ClamAV dapat bekerja di Windows maupun di Linux. Denial of Service Serangan Denial of Service mempunyai objektif agar sebuah resource di jaringan, biasanya sebuah servis di sebuah server, di monopoli oleh penyerang dan membuat pengguna yang sah tidak dapat mengakses servis tersebut. Contoh dari serangan Denial of Service (DOS) adalah SYN attack.

Sebuah workstation pada jaringan TCP/IP mengawali permohonan servis ke server akan mengirimkan paket SYN ke server. Pada saat menerima paket SYN, server

Gambar 65: Konsep DOS akan mengalokasikan resource-nya untuk mengantisipasi sessi dan responds balik dari workstation untuk identifikasi lebih lanjut.

Pada saat SYN attack atau sering di kenal sebagai banjir SYN / SYN Flood, sebuah workstation musuh akan membangkitkan session tipuan dengan menggunakan IP address bohong. Server target akan mengalokasikan resource-nya untuk setiap permohonan sambil menunggu selesaikan proses awal sambungan TCP/IP. Sialnya, reply / balasan dari workstation musuh tidak pernah datang. Padahal, server telah mengalokasikan resource-nya untuk permohonan sambungan yang bohong dan harus menolak user yang sah karena resource telah habis. IP / ARP Spoofing IP spoofing dapat dilakukan jika seorang hacker menggunakan IP addess yang berhasil dia peroleh untuk mengakses ke jaringan yang di percaya. Seorang hacker dapat memperoleh IP address yang valid melalui berbagai cara termasuk sniffing / menyadap. Pada tingkat yang lebih tinggi, IP spoofing dapat dilakukan dengan memanipulasi tabel / protocol ARP atau di kenal dengan ARP spoofing.

Teknik ARP spoofing ini sering dilakukan di kampus, misalnya menggunakan aplikasi netcut yang pada dasarnya melakukan spoofing IP dari router di kampus sehingga semua komputer lain yang ada menyangka bahwa komputer kita adalah router tersebut. Akibatnya kita dapat dengan mudah mengatur bandwidth setiap komputer lain yang ada di kampus, dengan cara itu kita dapat mengatur agar komputer kita yang memperoleh bandwidth yang paling besar sementara komputer lain hanya di beri sedikit saja.

Dengan cara mengkonfigurasi Firewall untuk mengidentifikasi addess yang seharusnya di Internet dan IntraNet dapat menghalangi spoofing. Jangan pernah melalukan traffic antara resource internal (yang dipercaya) melalui Firewall. Worm Worm adalah istilah industri IT untuk sebuah program yang mandiri yang dapat mereplikasi dirinya di jaringan, dan menginfeksi setiap server dan workstation yang di aksesnya.

Worm pertama di dunia di luncurkan oleh Robert Tappan Morris, waktu itu berusia 22 tahun dan seorang mahasiswa MIT, pada tanggal 2 November 1988 pukul delapan malam. Pada dasarnya Robert Morris berusaha membuat sebuah agen autonomous dan semi-intelligent ke Internet untuk berjalan di Internet dan melaporkan kemana saja dia sudah berjalan. Kesalahan matematik dalam program menyebabkan Worm menjadi 14 kali lebih cepat berkembang dari yang di rancang, akibatkan setiap jam lebih dari 6000 komputer terinfeksi dan tidak beroperasi. Replay Attack Reply attack terjadi jika seorang hacker berhasil penangkap komunikasi antara dua pihak dan menjalankan ulang (reply) message yang ditangkapnya. Contoh, seorang hacker mungkin menangkap transaksi kartu kredit antara seorang konsumen dangan situs Web. Hacker dapat me- reply transaksi tersebut beberapa kali dan akan menyebabkan debit berulang kali pada kartu kredit si konsumen. Pencurian Informasi Pencurian Informasi dapat dilakukan melalui beberapa cara. Cara yang paling sederhana adalah dengan “menguping”jaringan menggunakan software sniffer dan mencatat trafik yang lewat dalam text yang jelas.Metoda lain dapat berupa serangan pada server jaringan dan membuang file atau berpura-pura sebagai “man in the middle” dan menangkap file yang di transfer ke user yang sah.

Sering kali informasi penting dikirimkan melalui saluran yang di enkripsi, seperti, HTTPS. Oleh karena itu penyerang harus melakukan setup yang lebih kompleks, misalnya dengan melakukan ARP spoofing dan https proxy agar dapat melakukan “Man in The Midlle attack” (MiTM) tersebut. Ini akan menjadi menyeramkan jika anda melakukan transaksi perbankan di hotspot yang gratisan (misalnya di starbuck), walaupun anda menggunakan https tetap bisa di serang menggunakan teknik MiTM.

Gambar 66: Man in The Middle Attack

Keamanan Jaringan Network security menjadi sebuah pengetahuan yang wajib di miliki bagi mereka yang ingin secara serius berkiprah di Internet. Sialnya, teknologi telah berkembang sedemikian kompleks sehingga menuntut profesional network security untuk mempelajari banyak hal untuk betul-betul mengerti keseluruhan konsep & teknologi network security. Untuk memudahkan proses belajar, ada baiknya memperhatikan baik-baik gambar yang terlampir yang berisi peta teknologi network security. Referensi yang sangat baik tentang hal ini terdapat di http://www.sans.org.

Gambar 67: Arsitektur Keamanan Jaringan Secara umum topologi jaringan komputer terdiri dari jaringan Internet publik yang menyebar ke seluruh dunia dan jaringan Intranet yang terdapat internal di perusahaan / institusi. Di antara InterNet dan IntraNet biasanya terdapat De-Militerized Zone (DMZ) yang di batasi oleh Filtering Router ke arah Internet, dan Firewall ke arah IntraNet. Pada De-Militerized Zone (DMZ) ini biasanya di pasang berbagai server, seperti, Mail Server, FTP Server, Web Server dan DNS Server.

Berdasarkan topologi jaringan di atas, kita dapat membagi teknologi network security tersebut menjadi empat (4) bagian besar, yaitu:

• Penetration testing • Certificate Authority / PKI • Vulnerability Testing • Managed Security Services

Mari kita lihat teknologi yang menjadi bagian dari ke empat (4) bagian ini, secara umum,

Penetration Testing, terdiri dari: • Active Content Monitoring / Filtering, biasanya di letakan di mail server di DMZ. • Intrusion Detection - Host Based, biasanya di letakan di server di IntraNet maupun DMZ. • Firewall, menjadi perantara IntraNet dengan DMZ dan InterNet.. • Intrusion Detection - Network Based, biasanya digunakan untuk memonitor IntraNet. • Authorization, di jalankan di IntraNet. • Air Gap Technology, di jalankan di De-Militerized Zone (DMZ). • Network Authentication, di operasikan di IntraNet. • Security Appliances, biasanya berbentuk hardware Firewall. • Security Services: Penetration Testing, perusahaan di luar yang memberikan servis kepada kita. • Authentication, dioperasikan di IntraNet.

Certificate Authority / PKI, merupakan pendukung teknologi yang lain & dapat dioperasikan di server di IntraNet, terdiri dari: • Certificate Authority, di IntraNet maupun InterNet. • File & Session Encryption, di operasikan di IntraNet • VPN & Cryptographic Communications, di mulai di De-Militerized Zone dan digunakan untuk menembus ke Internet menuju IntraNet yang lain. • Secure Web Servers, di operasikan di De-Militerized Zone (DMZ). • Single Sign On, di server. • Web Application Security, di Web server.

Vulnerability Testing, biasanya dilakukan oleh auditor atau security manager, antara lain adalah. • Vulnerability Scanners - Host Based, di operasikan di server IntraNet • Real-Time Security Awareness, Response & Threat Management, digunakan oleh security manager. • Vulnerability Scanners - Network Based, di operasikan di filtering router yang terhubung langsung ke InterNet.

Managed Security Services, merupakan bagian manajemen (non-teknis) pendukung network security. Isu yang ada antara lain adalah: • Enterprise Security Policy Implementation. • Managed Security Services. • Enterprise Security Administration. • Security Services: Policy Development. • Trusted Operating Systems, di install di semua komputer. • Anti D.D.O.D Tools.

Selanjutnya, mari kita lihat berbagai konsep yang ada dengan penjelasan lebih detail.

Penetration Testing

• Active Content Monitoring / Filtering. Pada saat anda tersambung ke Internet, anda mengambil resiko dari virus komputer, java / Active-X script jahat dll. Tool ini akan memeriksa semua content yang masuk ke jaringan / komputer, secara kontinu mengupdate library-nya. • Intrusion Detection - Host Based. Intrusion detection host based akan memonitor file log. Dia akan meresponds dengan alarm atau serangan balasan jika ada usaha user untuk mengakses data, file atau servis yang tidak di ijinkan. • Firewall. Firewall adalah sebuah sistem atau group dari beberapa sistem yang melaksanakan kebijakan akses control antara dua jaringan. • Intrusion Detection - Network Based. Network based intrusion detection akan memonitor jaringan dan akan meresponds dengan alarm pada saat dia mengidentifikasi adanya pola traffic yang tidak baik, seperti scanning, usaha denial of service maupun serangan lainnya. • Authorization. Authentication, bertanya "siapa anda?". Authorization, bertanya "apakah anda berhak?". Dengan mekanisme authorization setiap pengguna yang akan mengakses resource harus memohon ke authorization server untuk memperoleh ijin. • Air Gap Technology. Hardware/software jenis ini memungkinkan transfer data secara real- time antara Internet dengan back-end tanpa membuka lubang di firewall. Kadang solusi Air Gap mengharuskan secara fisik terjadi pemutusan sambungan ke jaringan luar. Air Gap memutuskan semua protokol jaringan, membatasi akses ke data di lapisan aplikasi saja, serta melakukan analisa content. • Network Authentication. Tool ini menggunakan beberapa pendekatan untuk memperbaiki kemampuan sistem untuk membedakan antara yang berhak dan yang tidak berhak memperoleh akses. • Security Appliances. Kombinasi hardware/software yang memberikan servis terbatas, seperti firewall, network load management dll. Karena sistem operasi-nya sangat terbatas, lebih mudah di manage & tidak menjadi sasaran serangan hacker seperti di general purpose UNIX atau Windows NT. • Security Services: Penetration Testing. Organisasi konsultan yang mensimulasikan serangan hacker di dunia nyata maupun serangan social engineering. Mereka biasanya memberikan advis bagaimana memperbaiki pertahanan. Biasanya mereka menggunakan network-based vulnerability scanning tools. • Authentication. Authentication adalah sebuah proses yang menentukan sesuatu atau seseorang adalah siapa atau apa. Cara paling sederhana dari proses authentikasi adalah logon password, sialnya sangat rentan untuk di curi. Cara lain untuk mengatasi ini adalah menggunakan token yang memungkinkan proses authentikasi lebih ketat lagi.

Certificate Authority / PKI

• Certificate Authority. Certificate Authority (CA) adalah organisasi yang memberikan dan memanage security credential dan public keys untuk enkripsi & dekripsi berita. Sertifikat yang di manage termasuk public keys yang memperkuat authentikasi, privacy & non- repudiation. • File & Session Encryption. Enkripsi adalah sebuah proses yang mana data di ubah bentuknya sehingga sulit di buka dan di mengerti oleh orang yang tidak mempunyai authoritas untuk itu. Algoritma komputer yang canggih digunakan dalam proses enkrip & dekrip pada saat di butuhkan. • VPN & Cryptographic Communications. (VPN) memungkinkan komunikasi aman melalui jaringan publik Internet. Hal ini sangat menghemat biaya untuk perusahaan dengan mobile worker atau cabang perusahaan, sehingga komunikasi dapat dilakukan tanpa perlu menggunakan jaringan telepon private yang mahal. • Secure Web Servers.Tool yang memungkinkan kita memberikan servis web dalam sebuah lingkungan yang di rekayasa supaya lubang keamanan-nya minimal. • Single Sign On. Paket software yang membantu pengguna agar dapat mengakses ke beberapa komputer tanpa perlu mengingat banyak password. Single Sign On pada dasarnya tidak mengubah proses di bawahnya, tapi menyembunyikan perbedaan yang ada melalui sebuah lapisan software tambahan. • Web Application Security. Web application security akan memproteksi aplikasi web dan resource yang ada dari ancaman di Internet, seperti, mencuri aset perusahaan, pencurian kartu kredit, deface situs dll. Hal ini dilakukan degangn mendeteksi / menghalangi teknik hacking pada wilayah ini.

Vulnerability Testing

• Vulnerability Scanners - Host Based. Tool untuk menchek setting dari system untuk menentukan apakah sesuai / konsisten dengan kebijakan keamanan perusahaan. Tool ini biasa digunakan oleh auditor. • Real-Time Security Awareness, Response & Threat Management. RTSA memungkinkan seorang security manager untuk melihat apa yang terjadi di perusahaan yang menggunakan banyak peralatan dari multiple vendor secara real-time melalui sebuah konsol. RTSA menolong mengurangi jumlah personel yang dibutuhkan untuk memonitor banyak peralatan. • Vulnerability Scanners - Network Based. Software yang dapat mensimulasikan tabiat penyerang dan mempelajari sampai sekitar 600 kemungkinan kelemahan sistem yang sedang di serang.

Managed Security Services

• Enterprise Security Policy Implementation. EPSI memungkinkan manager security untuk mengautomasi setiap langkah keamanan dari console pusat, mulai dari creating, editing, approving, publishing, distribution, education, compliance, reporting dan maintenance. Tool ini akan memaksa sosialisasi, menchek pengertian pegawai, mencatat kejadian, dan mengukur compliance, yang pada akhirnya akan menolong manajemen resiko IT tanpa memberikan banyak beban ke staff yang terbatas. • Managed Security Services. Vendor yang menawarkan managed security services berasumsi bahwa mereka akan memperoleh beberapa persen kerjaan sebagai outsource. Dengan cara tsb. administrator dapat mengerjakan kerjaan yang lain. • Enterprise Security Administration. Tool ini mengadministrasi security tingkat enterprise, memastikan bahwa semua user di sebuah enterprise memperoleh hak dan kewajiban yang sama. Sistem ini terutama sangat bermanfaat untuk memberikan akses bagi user baru, dan, yang penting, menghilangkan semua akses bagi pegawai yang sudah keluar. • Security Services: Policy Development. Konsultan yang membantu pengembangan kebijakan keamanan secara cepat. Mereka umumnya sudah mempunyai template agar kebijakan security dapat di implementasikan dengan cepat, sepertoi penggunaan e-mail yang baik, extranet hingga PKI. • Trusted Operating Systems. Karena semua mekanisme ke amanan sangat tergantung pada sistem operasi, teknologi trusted O/S memberikan mekanisme satu-satunya pada O/S untuk bertahan terhadap serangan. • Anti D.D.O.D Tools. Tool anti Ddos akan mengidentifikasi ketidak beresan penggunaan di jaringan. Jika terjadi ketidak beresan, tool akan berusaha mencek legitimasi akses dan merekomendasikan beberapa langkah preventif-nya.

Dalam buku ini akan sulit sekali menerangkan berbagai teknik pertahanan jaringan yang ada. Buku ini akan mencontohkan teknik pertahanan menggunakan firewall yang berupakan dasar dari pertahanan jaringan.

Firewall Alat yang paling dominan digunakan keamanan jaringan adalah Firewall. Firewall di ambil dari kata tembok api yang biasanya digunakan di bangunan agar dapat menghambat perambatan api kebakaran.

Lebih mudah mendeskripsikan yang bukan Firewall. Firewall bukan sekedar router, bukan sekedar host, ataupun sekumpulan sistem yang memberikan keamanan ke jaringan. Sebuah Firewall adalah pendekatan keamanan, yang membantu mengimplementasikan kebijakan keamanan yang lebih besar yang mendefinisikan servis dan akses yang diijinkan. Firewall mengimplementasikan kebijakan ini dalam bentuk konfigurasi jaringan, beberapa host dan router, dan berbagai tindakan keamanan seperti mekanisme authentikasi yang kompleks yang menggantikan password yang statik. Jadi tugas utama sebuah sistem Firewall adalah untuk mengontrol akses ke atau dari sebuah jaringan (atau site) yang di lindungi. Firewall mengimplementasikan kebijakan akses dengan cara memaksa hubungan melalui Firewall, sehingga dapat di pelajari dan di evaluasi.

Sebuah sistem Firewall dapat berupa router, personal komputer, host, atau sekumpulan host, yang di setup terutama untuk melindungi site atau subnet dari protokol dan servis yang serangan dari mesin di luar subnet. Sebuah Firewall biasanya diletakan sebagai gateway tingkat yang tinggi, seperti pada sambungan ke Internet. Firewall dapat pula diletakan pada gateway tingkat yang lebih rendah untuk melindungi sekumpulan kecil host atau subnet.

Firewall dapat dilihat sebagai router dengan kemampuan lebih untuk membatasi traffic, tidak hanya berdasarkan port atau IP address seperti router. Terutama, Firewall dapat mendeteksi usaha serangan pada protokol TCP/IP. iptables – Firewall di Linux Firewall di Linux telah tersedia dalam software iptables, biasanya secara default telah terinstall dan telah aktif, memang masih perlu di konfigurasi agar berjalan dengan baik. Perintah untuk mengaktifkannya adalah:

# chkconfig iptables on # service iptables start iptables - cara kerja secara umum Secara umum, pada saaat paket masuk ke firewall, paket tersebut akan melalui hardware dan dilalukan ke driver interface sebelum memasuki berbagai tahapan sebelum masuk ke kernel dan di teruskan ke aplikasi lokal yang dituju atau di forward ke mesin lain. Secara detail kira-kira yang terjadi sebagai berikut,

1. Paket di kabel / wireless (misalnya, Internet). 2. Paket masuk ke Internet (misalnya, eth0) 3. mangle PREROUTING, chain ini umumnya digunakan untuk mengubah Type Of Service (TOS) dll. 4. nat PREROUTING, chain ini biasanya digunakan untuk mengubah DNAT. Sebaiknya jangan melakukan proses filter di chain ini karena kemungkinan akan membypass beberapa hal. 5. Penentuan routing, apakah paket ditujukan ke mesin lokal kita atau di forward ke tujuan lainnya. 6. mangle INPUT. Pada titik ini chain INPUT mulai di proses. Kita dapat menggunakan chain ini untuk mengubah paket sesudah di routing sebelum paket dikirim ke proses di mesin kita. 7. filter INPUT, disini kita dapat melakukan filter terhadap semua traffic masuk yang ditujukan ke mesin lokal kita. Semua paket yang masuk akan di proses oleh chain ini, tidak peduli dari interface mana masuknya atau dari arah mana mereka masuk. 8. Aplikasi proses lokal (misalnya, program client / server).

Perhatikan dalam contoh di atas, perubahan / pemrosesan paket di lalukan ke chain INPUT bukan chain FORWARD.

Selanjutnya mari kita perhatikan tahapan proses sebuah paket outgoing ke jaringan komputer.

1. Aplikasi / proses lokal (misalnya, program server / client). 2. Penentuan routing. Source addres, outgoing interface dan berbagai informasi lainnya yang akan digunakan. 3. mangle OUTPUT. Disini kita akan mengubah paket. Sebaiknya jangan melakukan filter di chain OUTPUT karena kemungkinan akan menimbulkan effek sampingan. 4. nat OUTPUT. Chain ini akan digunakan untuk NAT outgoing paket dari Firewall kita. 5. filter OUTPUT. Disini dilakukan filter paket outgoing dari lokal host. 6. mangle POSTROUTING. Pada chain POSTROUTING kita dapat mengubah paket sebelum keluar dari mesin kita, tapi sesudah melewati penentuan routing. Chain ini akan di gunakan oleh paket yang melalui firewall maupun paket-paket yang dibuat oleh firewall itu sendiri. 7. nat POSTROUTING adalah dinama kita melakukan SNAT. Sebaiknya tidak dilakukan proses filter disini karena kemungkinan paket akan tembus walaupun telah kita set kebijakan default adalah DROP. 8. Paket mencapai interface (misalnya, eth1). 9. Paket dikirim ke kabel / wireless.

Dalam contoh selanjutnya kita lihat sebuah paket yang ditujukan ke mesin lain di jaringan lain. Paket akan melalui tahapan yang berbeda sebagai berikut,

1. Paket di kabel / wireless. 2. Paket mencapai Interface (misalnya, eth0). 3. mangle PREROUTING, chain ini umumnya digunakan untuk mengubah (mangle) Type Of Service (TOS) dll. 4. nat PREROUTING, chain ini biasanya digunakan untuk mengubah DNAT. Sebaiknya jangan melakukan proses filter di chain ini karena kemungkinan akan membypass beberapa hal. 5. Penentuan routing, apakah paket ditujukan ke mesin lokal kita atau di forward ke tujuan lainnya. 6. mangle FORWARD. Paket dikirim ke chain FORWARD ditabel ubah (mangle). Chain Ubah (mangle) FORWARD dapat digunakan untuk kebutuhan yang spesifik jika kita ingin mengubah paket sesudah penentuan routing yang awal, tapi sebelum penentuan routing akhir sebelum paket dikirim ke luar. 7. filter FORWARD. Hanya paket yang telah di routing yang akan masuk ke chain FORWARD. Hanya paket yang diforward yang akan dikirim ke sini, dan disini kita melakukan semua proses filter. Perlu dipahami bahwa paket yang akan di forward adalah dua arah, tidak satu arah. Jadi kita perlu memahani ini pada saat menulis rule. 8. mangle POSTROUTING. Pada chain POSTROUTING kita dapat mengubah paket sebelum keluar dari mesin kita, tapi sesudah melewati penentuan routing, tetapi paket masih berada di mesin. 9. nat POSTROUTING adalah dinama kita melakukan SNAT. Sebaiknya tidak dilakukan proses filter disini karena kemungkinan paket akan tembus walaupun telah kita set kebijakan default adalah DROP. Disini kita dapat melakukan Masquerading. 10. Paket mencapai interface (misalnya, eth1). 11. Paket dikirim ke kabel / wireless.

Seperti kita lihat bahwa cukup banyak step yang dilalui oleh sebuah paket. Paket dapat berhenti di chain iptables mana saja, atau dimana saja yang salah konfigurasi. Kita disini lebih tertarik untuk mengkonfigurasi iptables untuk agar beroperasi dengan baik. iptables – teknik membuat aturan Pada bagian ini akan dijelaskan beberapa teknik / perintah untuk membuat aturan firewall. Sebuah aturan dapat dijelaskan sebagai arah yang harus di ikuti oleh sebuah firewall pada saat memblok atau mengijinkan berbagai sambungan dan paket di sebuah chain yang spesifik. Setiap kalimat yang kita masukan ke chain selalu di anggap sebagai aturan.

Setiap aturan yang dibuat harus jelas kriteria dari paket yang di atur (jenis paket apa yang perlu kita perhatikan) dan akan di apakan. Jika semua kriteria – match, maka aturan akan melakukan instruksi target – atau jump. Biasanya kita akan menulis sendiri aturan dengan sintax yang kira-kira sebagai berikut,

# iptables [-t table] command [match] [target/jump]

Jika kita menginginkan tabel yang lain dari tabel standard, kita dapat memasukan spesifikasi tabel pada titik dimana [table] di definisikan. Default iptables akan menggunakan tabel filter untuk mendefinisikan semua perintah. Di samping itu, sebagian besar perintah adalah untuk melakukan filter.

Command biasanya akan ditulis pertama kali, atau langsung sesudah spesifikasi tabel. Kita menggunakan ‘command’ untuk memberitahukan iptables apa yang harus dilakukan, misalnya, untuk memasukan aturan, menambah aturan di akhir chain, atau untuk mendelete aturan.

Bagian ‘match’ di aturan dikirimkan ke kernel untuk melihat karakter yang spesifik dari paket. Apa yang membedakan paket yang akan kita atur dengan paket yang lain. Disini kita dapat menentukan IP address sumber dari paket, dari interface mana, dsb.

Akhirnya, kita menentukan target dari paket. Jika semua match di penuhi oleh paket, kita dapat memerintahkan kernal apa yang harus dilakukan oleh kernel, misalnya, membuang paket tersebut dan tidak akan di proses, atau mengirimkan reply yang spesifik ke pengirim dsb. iptables – tabel Pada pilihan –t kita dapat menentukan tabel mana yang akan digunakan. Default iptables akan menggunakan tabel filter. Beberapa tabel yang sering digunakan adalah:

• nat – tabel nat digunakan terutama untuk melakukan Network Address Translation (NAT). Paket yang di NAT akan berubah IP address-nya sesuai dengan aturan yang kita buat. Paket dalam sebuah aliran data akan melalui tabel nat ini satu kali. Jika paket pertama kali di ijinkan untuk lewat, maka paket selanjutnya akan secara automatis di NAT atau Masquaraded. Oleh karena itu, jangan melakukan proses filter di tabel nat ini. Pada chain PREROUTING perubahan paket dilakukan sesaat paket sampai ke firewall. Chain OUTPUT digunakan untuk mengubah paket yang di hasilkan secara lokal (misalnya, di firewall) sebelum paket masuk ke penentuan routing. Sedang pada chain POSTROUTING digunakan untuk mengubah paket sebelum meninggalkan firewall.

• mangle – tabel mangle digunakan untuk mengubah paket. Ada banyak hal yang dapat kita ubah, beberapa diantaranya kita dapat mengubah header dari paket. Contoh kita dapat mengubah TTL, TOS atau MARK. MARK tidak mengubah header paket, tapi menandai paket tersebut di kernel, biasanya digunakan untuk proses filter di firewall atau routing tingkat lanjut. Tabel mangle ini mempunyai lima chain di dalamnya, yaitu, PREROUTING, POSTROUTING, OUTPUT, INPUT, dan FORWARD. Magle tidak dapat digunakan untuk Network Address Translation atau Masquerading, karena tabel nat yang dirancang untuk melakukan hal ini.

• filter – tabel filter secara exclusive digunakan untuk memfilter paket. Contoh, kita dapat DROP, LOG, ACCEPT atau REJECT packet tanpa masalah, seperti yang dapat kita lakukan pada tabel lainnya. Ada tiga chain yang ada dalam tabel ini, yaitu FORWARD, INPUT, dan OUTPUT.

Kita harus benar-benar memahami fungsi masing-masing tabel dan chain di dalamnya, jangan sampai salah mengerti fungsi masing-masing karena akan sangat berbahaya dalam mengkonfigurasi firewall. iptables – command beberapa command iptables dan apa yang dapat kita lakukan dengan command tersebut.

• Command -A, --append Contoh iptables -A INPUT ... Penjelasan – perintah ini digunakan untuk menambahkan peraturan ke akhir dari chain. Jika tidak ada append selanjutnya, maka aturan ini akan di jalankan terakhir dari kumpulan aturan yang kita masukan.

• Command -D, --delete Contoh iptables -D INPUT --dport 80 -j DROP, iptables -D INPUT 1 Penjelasan – Perintah ini digunakan untuk men-delete aturan dari chain. Hal ini dapat dilakukan dengan memberikan seluruh aturan untk di match, atau memberikan nomor urut aturan di mulai dengan nomor 1 yang paling tinggi di chain.

• Command -R, --replace Contoh iptables -R INPUT 1 -s 192.168.0.1 -j DROP Penjelasan – Perintah ini akan menggantin isi dari entry yang lama dengan perintah yang kita berikan. Cara kerjanya tidak berbeda jauh dengan perintah –delete, hanya kita mengganti aturan yang di delete dengan aturan yang baru.

• Command -I, --insert Contoh iptables -I INPUT 1 --dport 80 -j ACCEPT Penjelasan – Menyelipkan aturan di dalam chain. Dalam contoh aturan yang kita buat akan di selipkan sebagai aturan pertama di chain INPUT.

• Command -L, --list Contoh iptables -L INPUT Penjelasan – Perintah ini akan memperlihatkan semua isi dari chain yang dimaksud. Dalam contoh akan di perlihatkan isi chain INPUT. Tentunya kita dapat saja memberikan perintah – L tanpa chain, sehingga isi semua chain akan di perlihatkan.

• Command -F, --flush Contoh iptables -F INPUT Penjelasan – Perintah ini akan membuang semua aturan dari chain tertentu. Jika perintah ini digunakan tanpa optoions, maka semua aturan yang ada di semua chain akan di hapus.

• Command -P, --policy Contoh iptables -P INPUT DROP Penjelasan - Perintah ini memberitahukan kernel untuk men-set kebijakan “default” yang akan digunakan pada sebuah chain. Perintah yang legal adalah DROP dan ACCEPT.

Beberapa Contoh Aplikasi iptables

Untuk melihat konfigurasi yang telah di set pada IP tables, dapat dilakukan menggunakan perintah

# iptables -L

Juga iptables belum di konfigurasi maka hasilnya adalah,

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain INPUT (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Tampak pada contoh, seluruh rantai (chain) INPUT, FORWARD dan OUTPUT mempunyai kebijakan ACCEPT untuk menerima semua paket dan tidak dilakukan perubahan apapun.

Untuk membuang semua peraturan yang ada di tabel iptables dapat dilakukan dengan menggunakan perintah.

# iptables -F Contoh Men-DROP aturan di iptables Misalkan kita ingin menambahkan sebuah aturan pada rantai aturan INPUT agar semua paket dari IP address 192.168.10.100 akan di buang (DROP). Maka perintah yang diberikan adalah,

# iptables -A INPUT -s 192.168.10.100 -j DROP

Untuk mencek apakah aturan yang diberikan masuk dengan benar ke rantai aturan firewall, maka dapat digunakan perintah

# iptables -L

Hasilnya kira-kira sebagai berikut,

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 192.168.10.100 anywhere

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Contoh Menerima Paket Untuk Aplikasi Spesifik. Untuk menerima sebuah paket yang spesifik menggunakan protokol TCP ke port tujuan 80, maka dapat digunakan perintah

# iptables -I INPUT -p TCP --dport 80 -j ACCEPT

Untuk mencek apakah perintah tersebut masuk dengan baik ke rantai aturan firewall dapat dilihat menggunakan perintah

# iptables -L

Hasilnya kira-kira sebagai berikut,

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:http

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Contoh Membatasi Banjir Paket Dari Internet Salah satu masalah yang sering terjadi di Internet adalah serangan virus atau DDOS yang menyebabkan banjirnya paket melalui saluran yang kita miliki. Untuk membatasi banjir paket kita perlu membatasi / melimit jumlah paket per detik yang dapat lewat. Cara yang dapat dilakukan adalah menggunakan perintah

# iptables -A INPUT -m limit --limit 3/second Untuk mencek apakah aturan tersebut masuk dengan baik ke iptables, kita dapat mencek-nya menggunakan perintah berikut

# iptables -L

Hasilnya kira-kira sebagai berikut,

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain INPUT (policy ACCEPT) target prot opt source destination all -- anywhere anywhere limit: avg 3/sec burst 5

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Contoh Mem-filter MAC Address Pada iptables Sering kali yang kita lakukan adalah mem-filter agar komputer tertentu saja yang dapat mengakses jaringan supaya tidak sembarangan orang dapat mengakses jaringan kita. Untuk itu, salah satu cara yang paling aman adalah mem-filter MAC address dari komputer yang dapat meng-akses jaringan. Caranya adalah sebagai berikut,

# iptables -I INPUT -m mac --mac-source 00:00:00:00:00:01 -j ACCEPT

Untuk mencek apakah aturan yang kita masukan ke iptables masuk dengan baik dapat dilakukan dengan perintah,

# iptables -L

Hasilnya kira-kira sebagai berikut,

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere MAC 00:00:00:00:00:01

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Sebuah script yang sering saya gunakan untuk membuat sebuah NAT di PC Router saya lampirkan berikut ini. Script ini hanya perlu di ubah informasi ethernet & NAT yang digunakan sebelum dapat digunakan di PC Router kita.

#!/bin/bash

# From: AHK # To: [email protected]

# Save this file and activate through # file_name start # and de-activate through # file_name stop

# This firewall-script can be used for workstation, laptop, router # or server that are not running network service (such as web server, ftp # server etc)

# change the parameter UPLINK with Interface device to the Internet. # In our case WLAN router with NIC eth0 connected to the Internet # and LAN connection with eth1. # if you use dial-up modem, you might use ppp0 as your UPLINK

UPLINK="eth1"

# if you run the gateway as router / forward IP packet between eth devices # please fill “yes”, if not, please fill “no”

ROUTER="no"

# Please change “192.168.120.114" to your static IP address UPLINK device. # For those who use dial-up or dynamic IP, please enter “dynamic”

# NAT="192.168.120.114"

NAT="dynamic"

# please list all network interfaces including eth devices # as well as dial-up interface such as ppp0

INTERFACES="lo eth0 eth1" if [ "$1" = "start" ] then echo "Activate Firewall ..... " /sbin/iptables -P INPUT DROP /sbin/iptables -A INPUT -i ! ${UPLINK} -j ACCEPT /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT /sbin/iptables -A INPUT -p tcp -i ${UPLINK} -j REJECT --reject-with tcp- reset /sbin/iptables -A INPUT -p udp -i ${UPLINK} -j REJECT --reject-with icmp- port-unreachable

# turn off ECN function if [ -e /proc/sys/net/ipv4/tcp_ecn ] then echo 0 > /proc/sys/net/ipv4/tcp_en fi

# turn off packet spoofing in all interfaces for x in ${INTERFACES} do echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter done if [ "$ROUTER" = "yes" ] then # Activate IP forwarding at router echo 1 > /proc/sys/net/ipv4/ip_forward if [ "$NAT" = "dynamic" ] then # Dynamic IP address, activate Masquerading echo "Activate Masquerading (Dynamic IP) ...." /sbin/iptables -t nat -A POSTROUTING -o ${UPLINK} -j MASQUERADE elif [ "$NAT" != "" ] then # Static IP address use source NAT echo "Activate SNAT (static IP) ...." /sbin/iptables -t nat -A POSTROUTING -o ${UPLINK} -j SNAT --to ${NAT} fi

fi

elif [ "$1" = "stop" ] then echo "Deactivate Firewall ..." /sbin/iptables -F INPUT /sbin/iptables -P INPUT ACCEPT # Turn off NAT or MASQUERADING /sbin/iptables -t nat -F POSTROUTING fi

Jika nama script tersebut adalah share.sh maka untuk menjalankan script tersebut cukup menggunakan perintah

# sh share.sh start untuk mematikan script dapat menggunakan perintah

# sh share.sh stop

Konfigirasi iptables Menggunakan Webmin Bagi anda yang merasa kesulitan untuk menggunakan shell / text mode untuk mengkonfigurasi iptables, kita dapat menggunakan interface grafik untuk mengkonfigurasi iptables menggunakan aplikasi webmin, yang dapay di download dari Internet. Instalasi Webmin sangat sederhana sekali. Source Code Webmin dapat di ambil secara bebas di alamat

http://www.webmin.com/download.html atau untuk webmin versi 1.831, bisa menggunakan perintah

wget http://prdownloads.sourceforge.net/webadmin/webmin-1.831.tar.gz

Agar Webmin dapat di jalankan menggunakan HTTPS, kita perlu menginstall SSLEAY. Gunakan perintah

apt-get install libnet-ssleay-perl

Copy, extract & setup Webmin

cp webmin-1.831.tar.gz /usr/local/src/ cd /usr/local/src tar zxvf webmin-1.831.tar.gz /usr/local/src/webmin-1.831/setup.sh

Selanjutnya jawab pertanyaan yang diberikan, jawabannya biasanya adalah

ENTER - ENTER - ENTER - 10000 admin password password y y

Setelah Webmin selesai di Instalasi, biasanya Webmin dapat diakses melalui Web

http://localhost:10000 atau https://localhost:10000

Perhatikan bahwa port yang digunakan tidak standard, tapi 10000.

Menu konfigurasi firewall terdapat pada menu Networking -> Linux Firewall. Jika anda baru pertama kali mengkonfigurasi Firewall, maka kita akan di tawari empat (4) pilihan, yaitu,

• Melakukan Network Address Translation (NAT) • Blok semua paket yang masuk. • Blok semua paket yang masuk kecuali SSH dan IDENT. • Blok semua paket yang masuk kecuali SSH, IDENT, ping dan aplikasi yang menggunakan port yang tinggi.

Yang paling sederhana yang perlu dipilih sebagai proxy server adalah melakukan proses Network Address Translation (NAT).

Topik Lanjut Masih banyak sekali topik-topik tentang network security yang perlu di bahas. Akan tetapi sulit untuk di tuangkan dalam sebuah buku TCP/IP. Insya Allah di lain kesempatan akan diusahakan agar topik-topik network security ini dapat di bahas dalam buku yang terpisah yang membahas lebih dalam. BAB 14: Manajemen dan Monitoring Jaringan

Manajemen jaringan adalah proses untuk mengatur dan mengelola jaringan komputer dari satu atau banyak organisasi. Berbagai layanan yang diberikan oleh manajer jaringan meliputi analisis kesalahan, manajemen kinerja, penyediaan jaringan dan perangkat jaringan, menjaga kualitas layanan dll. Software yang memungkinkan manajer jaringan untuk melakukan fungsi mereka disebut perangkat lunak manajemen jaringan.

Sebuah Network Management System (NMS) adalah kombinasi dari hardware dan software yang digunakan untuk memonitor dan mengatur jaringan. Setiap elemen jaringan di jaringan akan dikelola oleh sebuah elemen sistem manajemen. Monitoring jaringan adalah penggunaan sistem yang terus-menerus memonitor jaringan komputer untuk komponen yang me-lambat atau gagal dan yang memberitahukan administrator jaringan (melalui email, SMS atau alarm lainnya) dalam kasus pemadaman. Ini adalah bagian dari manajemen jaringan. Proses monitoring dan manajemen jaringan biasanya menggunakan protokol Simple Network Management Protocol (SNMP). Tujuan Manajemen Jaringan Dengan semakin berkembangnya web dan internet, jaringan komputer telah menjadi sangat besar dan kompleks, membuatnya tidak mungkin untuk dikelola secara manual. Oleh karenanya, suite perangkat lunak manajemen jaringan dikembangkan untuk membantu mengurangi beban mengelola kompleksitas dari perkembangan jaringan komputer. Perangkat lunak manajemen jaringan biasanya mengumpulkan informasi tentang perangkat jaringan (yang disebut node) menggunakan protokol seperti SNMP, ICMP, CDP dll Informasi ini kemudian disampaikan kepada administrator jaringan yang mudah untuk memahami dan cara yang mudah diakses untuk membantu mereka dengan cepat mengidentifikasi dan memulihkan masalah. Masalah yang timbul dalam jaringan dapat beragam seperti kesalahan jaringan, kemacetan kinerja, masalah kepatuhan dll. Beberapa perangkat lunak manajemen jaringan canggih dapat memperbaiki masalah jaringan secara otomatis. perangkat lunak manajemen jaringan juga dapat membantu tugas-tugas yang terlibat dalam penyediaan jaringan baru, seperti menginstal dan mengkonfigurasi node jaringan baru dll Mereka juga dapat membantu dengan pemeliharaan jaringan yang ada seperti upgrade perangkat lunak pada perangkat jaringan yang ada, menciptakan jaringan virtual baru dll. Fungsi Manajemen Jaringan • Provisioning: Fungsi ini memungkinkan manajer jaringan untuk penyediaan perangkat jaringan baru dalam lingkungan. Mengotomatisasi langkah ini mengurangi biaya dan menghilangkan kemungkinan kesalahan manusia.

• Pemetaan atau Discovery: Fungsi ini memungkinkan perangkat lunak untuk menemukan fitur dari jaringan target. Beberapa fitur yang biasanya ditemukan adalah: node dalam sebuah jaringan, konektivitas antara node ini, jenis pemasok dan kemampuan untuk node ini, karakteristik kinerja dll.

• Monitoring: Fungsi ini memungkinkan perangkat lunak manajemen jaringan untuk memonitor jaringan untuk masalah dan untuk menyarankan perbaikan. Perangkat lunak ini dapat polling perangkat berkala atau mendaftar diri untuk menerima pemberitahuan dari perangkat jaringan. Salah satu mekanisme untuk perangkat jaringan relawan informasi tentang itu sendiri adalah dengan mengirimkan SNMP trap. Pemantauan dapat mengungkapkan kesalahan dalam jaringan seperti gagal atau salah konfigurasi node, kemacetan kinerja, pelaku berbahaya, gangguan dll. Beberapa Software Manajemen Jaringan Ada beberapa software open source yang lumayan baik untuk digunakan manajemen jaringan, antara lain adalah,

• OpenNMS - Tool manajemen jaringan berbasis Java berfokus pada polling layanan, pengumpulan data dan event dan manajemen pemberitahuan. • NAGIOS - Nagios merupakan open source monitoring sistem komputer, jaringan pemantauan dan monitoring infrastruktur aplikasi perangkat lunak. Nagios menawarkan pemantauan dan layanan peringatan untuk server, switch, aplikasi, dan layanan. Ia mengingatkan pengguna bila ada sesuatu yang salah dan mengingatkan mereka untuk kedua kalinya ketika masalah telah diselesaikan. • Cacti - Cacti merupakan solusi jaringan grafik lengkap yang dirancang untuk memanfaatkan kekuatan penyimpanan data RRDTool dan fungsi grafik. Cacti menyediakan poller cepat, grafik template yang canggih, beberapa metode akuisisi data, dan manajemen pengguna fitur yang tidak biasa. Semua ini dibungkus dengan intuitif, mudah digunakan antarmuka yang masuk akal untuk instalasi LAN berukuran sampai dengan jaringan yang kompleks dengan ratusan perangkat. • Icinga - Icinga adalah sistem komputer dan aplikasi pemantauan jaringan open source. Ini pada awalnya diciptakan sebagai turunan dari aplikasi monitoring sistem nagios pada tahun 2009. Icinga berusaha untuk mengatasi kelambatan dalam proses pengembangan nagios , serta menambahkan fitur baru seperti Web modern 2.0 pada gaya antarmuka pengguna, konektor tambahan database (untuk MySQL, Oracle, dan PostgreSQL), dan REST API yang memungkinkan administrator mengintegrasikan berbagai ekstensi tanpa modifikasi rumit dari inti Icinga. • NeDi - NeDi mungkin tidak terkenal seperti aplikasi network manajemen lainnya, tapi NeDi adalah solusi yang bagus untuk melacak perangkat di dalam jaringan. Ini terus berjalan melalui infrastruktur jaringan dan katalog perangkat, mencatat segala sesuatu yang dinemukan. NeDi dapat menyediakan lokasi perangkat apapun, serta sejarah lokasi perangkat tersebut. NeDi dapat digunakan untuk mencari perangkat yang dicuri atau hilang dengan memberitahu anda jika perangkat tersebut muncul kembali pada jaringan. Ia bahkan bisa menampilkan semua koneksi yang dikenal dan ditemukan pada peta, yang menunjukkan bagaimana setiap interkoneksi jaringan ditata, sampai ke tingkat port fisik. • Observium - Observium menggabungkan sistem dan jaringan monitoring dengan kinerja trending. Ini menggunakan discovery statis dan otomatis untuk mengidentifikasi server dan perangkat jaringan, memanfaatkan berbagai metode pemantauan, dan dapat dikonfigurasi untuk melacak metrik apa saja yang tersedia. Web UI sangat bersih, dipikirkan dengan baik, dan mudah dinavigasi. • Zabbix - Zabbix memonitor server dan jaringan dengan tool yang banyak. Ada agen Zabbix untuk sistem operasi, atau anda dapat menggunakan cek pasif atau eksternal, termasuk SNMP untuk memonitor host dan perangkat jaringan. Anda juga akan menemukan fasilitas peringatan yang extensif dan notifikasi, dan Web UI sangat disesuaikan yang dapat disesuaikan dengan berbagai display. Selain itu, Zabbix memiliki alat khusus yang memantau tumpukan aplikasi Web dan hypervisors virtualisasi. Zabbix juga dapat menghasilkan diagram interkoneksi logis yang merinci bagaimana objek tertentu yang dipantau saling berhubungan. Peta ini dapat disesuaikan, dan peta dapat dibuat untuk kelompok perangkat dan host yang dipantau.

Pada kesempatan ini, tidak mungkin kita membahas seluruh aplikasi open source yang ada. Disini akan dibahas beberapa contoh saja. Simple Network Management Protocol (SNMP) Simple Network Management Protocol (SNMP) adalah "protokol standar Internet untuk mengelola perangkat pada jaringan IP". Perangkat yang biasanya mendukung SNMP termasuk router, switch, server, workstation, printer, rak modem dan banyak lagi. SNMP banyak digunakan dalam sistem manajemen jaringan untuk memonitor perangkat jaringan terpasang untuk kondisi yang menjamin perhatian administratif. SNMP adalah komponen dari Internet Protocol Suite seperti yang didefinisikan oleh Internet Engineering Task Force (IETF). Ini terdiri dari satu set standar untuk manajemen jaringan, termasuk protokol layer aplikasi, skema database, dan satu set objek data.

SNMP mengekspos pengelolaan data dalam bentuk variabel pada sistem yang dikelola, yang menggambarkan konfigurasi sistem. Variabel ini kemudian dapat ditanya / di-query (dan kadang- kadang diatur) oleh aplikasi pengelola. Menggunakan SNMPv3 Meskipun SNMPv3 tidak membuat perubahan pada protokol selain dari penambahan keamanan kriptografi, terlihat jauh berbeda karena konvensi baru tekstual, konsep, dan terminologi. SNMPv3 terutama menambahkan peningkatan keamanan dan konfigurasi remote untuk SNMP.

SNMPv3 terutama menambahkan peningkatan keamanan dan konfigurasi remote untuk SNMP. Keamanan telah menjadi kelemahan terbesar dari SNMP sejak awal. Otentikasi di SNMP Versi 1 dan 2 tidak lebih dari sebuah password (community string) dikirim dalam bentuk teks antara manajer dan agent. Setiap SNMPv3 berisi parameter keamanan yang dikodekan sebagai string oktet. Arti dari parameter keamanan ini tergantung pada model keamanan yang digunakan.

SNMPv3 menyediakan fitur keamanan penting:

• Confidentiality -- - Enkripsi paket untuk mencegah mengintai oleh sumber yang tidak sah. • Integrity -- integritas pesan untuk memastikan bahwa paket belum dirusak saat transit termasuk opsi mekanisme perlindungan replay. • Authentication -- untuk memverifikasi bahwa tersebut berasal dari sumber yang valid. Install SNMP server & client di Ubuntu Instalasi menggunakan perintah

sudo apt-get install snmpd snmp Konfigurasi SNMPv3 Backup file /etc/snmp/snmpd.conf menjadi /etc/snmp/snmpd.conf.org

mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.original

Buat file kosong /etc/snmp/snmpd.conf , isi dengan perintah di bawah & save:

rocommunity public syslocation "Woles DataCenter" syscontact [email protected]

Agar dapat di akses oleh mesin non-localhost, kita perlu mengedit snmpd default. Dengan mengunakan text editor,

sudo vi /etc/default/snmpd Ubah kalimat berikut,

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux,mteTrigger,mteTriggerConf -p /run/snmpd.pid' menjadi

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid -c /etc/snmp/snmpd.conf' restart snmpd menggunakan perintah

sudo /etc/init.d/snmpd restart Mendefinisikan users, authentication & parameter encryption SNMPv3 dapat digunakan dalam beberapa cara tergantung pada parameter "securitylevel" di konfigurasi:

• noAuthNoPriv -- No authorisation & no encryption, pada dasarnya tidak ada security sama sekali! • authNoPriv -- Authorisation di perlukan, tapi data yang dikirim melalui jaringan tidak di encrypt. • authPriv – Bentuk paling kuat. Authentikasi diharuskan, semua yang dikirim di jaringan di encrypt.

Pengaturan konfigurasi snmpd semua disimpan dalam file bernama /etc/snmp/snmpd.conf. Membuka file ini di editor:

sudo vi /etc/snmp/snmpd.conf

Tambahkan kalimat berikut di bagian akhir dari file:

# createUser user1 createUser user2 MD5 user2password createUser user3 MD5 user3password DES user3encryption # rouser user1 noauth 1.3.6.1.2.1.1 rouser user2 auth 1.3.6.1.2.1 rwuser user3 priv 1.3.6.1.2.1

Catatan: - Jika Anda ingin menggunakan kombinasi username / password anda sendiri, anda perlu menggunakan password dan frase enkripsi yang memiliki panjang minimal 8 karakter.

Juga anda perlu melakukan perubahan berikut agar snmp mendengarkan semua sambungan di semua interface yang ada,

Dari

#agentAddress udp:161,udp6:[::1]:161

Menjadi

agentAddress udp:161,udp6:[::1]:161 Simpan file snmpd.conf yang sudah kita modifikasi dan restart snmpd mengunakan perintah:

sudo systemctl restart snmpd

Test SNMP Lakukan snmpwalk dari mesin lain ke mesin yang baru kita konfigurasi. Ada beberapa cara menjalankan snmpwalk, yaitu,

SNMP v1: snmpwalk -v1 -c [:]

contoh: snmpwalk -v1 -cpublic 127.0.0.1:161 system

SNMP v2: snmpwalk -v2c -c [:] [oid]

contoh: snmpwalk -v2c -c public 127.0.0.1:161 system

SNMP v3: snmpwalk -v3 -l -u [-a ] [-A ] [-x DES] [-X ] [:] [oid]

contoh: snmpwalk -v3 -l authPriv -u snmpadmin -a MD5 -A PaSSword -x DES -X PRIvPassWord 127.0.0.1:161 system

misalnya,

snmpwalk -v2c -cpublic localhost | more

Harusnya keluar kira-kira,

iso.3.6.1.2.1.1.1.0 = STRING: "Linux derryasus 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:59 UTC 2016 i686" iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10 iso.3.6.1.2.1.1.3.0 = Timeticks: (35285) 0:05:52.85 iso.3.6.1.2.1.1.4.0 = STRING: "Me " iso.3.6.1.2.1.1.5.0 = STRING: "derryasus" iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay" iso.3.6.1.2.1.1.7.0 = INTEGER: 72 iso.3.6.1.2.1.1.8.0 = Timeticks: (1) 0:00:00.01 iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.11.3.1.1 iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The MIB for Message Processing and Dispatching." iso.3.6.1.2.1.1.9.1.3.2 = STRING: "The management information definitions for the SNMP User- based Security Model." iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The SNMP Management Architecture MIB." iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB module for SNMPv2 entities" iso.3.6.1.2.1.1.9.1.3.5 = STRING: "View-based Access Control Model for SNMP." iso.3.6.1.2.1.1.9.1.3.6 = STRING: "The MIB module for managing TCP implementations" iso.3.6.1.2.1.1.9.1.3.7 = STRING: "The MIB module for managing IP and ICMP implementations" iso.3.6.1.2.1.1.9.1.3.8 = STRING: "The MIB module for managing UDP implementations" iso.3.6.1.2.1.1.9.1.3.9 = STRING: "The MIB modules for managing SNMP Notification, plus filtering." iso.3.6.1.2.1.1.9.1.3.10 = STRING: "The MIB module for logging SNMP Notifications." . . dst

Ya, jalan! NAGIOS

Instalasi NAGIOS Instalasi NAGIOS cukup sederhana menggunakan perintah

# apt-get install nagios3

Pada saat instalasi kita perlu menset

• Nagios Web administation password & mengkonfirmasinya (2 kali mengisi password) • SMTP Server "Internet with smarthost" • SMTP Server "smtp.telkom.net" (jika tersambung ke Telkom)

Cara lain untuk menset user nagiosadmin untuk web admin

# htpasswd -c /etc/nagios3/htpasswd.users nagiosadmin New password: Re-type new password:

Restart NAGIOS

/etc/init.d/apache2 restart /etc/init.d/nagios3 restart

Akses melalui web

http://localhost/nagios3 http://ip-address-server-nagios/nagios3/ dengan

username nagiosadmin password password-yang-diset saat instalasi

Menambahkan Host yang di monitor di NAGIOS Secara default, NAGIOS hanya akan memonitor localhost. Kita perlu menambahkan mesin-mesin lain yang akan di monitor. Cara yang paling sederhana adalah dengan mengambahkan file tentang mesin tersebut di folder

/etc/nagios3/conf.d

Misalnya kita ingin menambahkan file tentang router yang kita gunakan, langkah yang dapat digunakan adalah

• Buat file dalam /etc/nagios3/conf.d misalnya gw_nagios2.cfg • Misalnya nama router-nya adalah indihome, maka isi dengan data berikut,

# A simple configuration file for monitoring the local host # This can serve as an example for configuring other servers; # Custom services specific to this host are added here, but services # defined in nagios2-common_services.cfg may also apply. #

define host{ use generic-host ; Host template to use host_name indihome alias indihome address 192.168.0.223 }

# Define a service to check the disk space of the root partition # on the local machine. Warning if < 20% free, critical if # < 10% free space on partition.

define service{ use generic-service ; Service template to use host_name indihome service_description Disk Space check_command check_all_disks!20%!10% }

# Define a service to check the number of currently logged in # users on the local machine. Warning if > 20 users, critical # if > 50 users.

define service{ use generic-service ; Service template to use host_name indihome service_description Current Users check_command check_users!20!50 }

# Define a service to check the number of currently running procs # on the local machine. Warning if > 250 processes, critical if # > 400 processes.

define service{ use generic-service ; Service template to use host_name indihome service_description Total Processes check_command check_procs!250!400 }

# Define a service to check the load on the local machine.

define service{ use generic-service ; Service template to use host_name indihome service_description Current Load check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0 }

• save file konfigurasi host tersebut. • Restart nagios menggunakan perintah

/etc/init.d/nagios3 restart

Untuk mengetahui berbagai check_command yang ada di nagios, sangat di sarankan untuk membaca isi folder

/etc/nagios-plugins/config /usr/lib/nagios/plugins kita perlu mencoba plugin yang kira-kira cocok dengan keperluan kita tsb. Beberapa penampakan Web GUI NAGIOS dapat dilihat pada gambar berikut ini. Gambar 68: Home Page NAGIOS3

Gambar 69: Host yang termonitor oleh NAGIOS3 Gambar 70: Info lebih detail berbagai host yang termonitor BAB 15: Penutup

Kalau boleh jujur, buku ini jauh dari lengkap karena memang detail dari teknologi Internet dan TCP/IP sangat banyak sekali. Tidak mungkin bisa di bahas dalam keterbatasan sebuah buku yang jumlahnya hanya beberapa ratus halaman saja.

Paling tidak ada beberapa hal yang ingin di capai oleh buku TCP/IP ini, antara lain adalah,

• Meletakan dasar minimal akan konsep jaringan TCP/IP dan Internet. • Meletakan dasar minimal akan implementasi TCP/IP khususnya menggunakan sistem operasi Linux. Berbentuk tutorial howto yang bisa di praktekan. • Memberikan arah dan keyword ilmu yang perlu di pelajari lebih lanjut untuk mendalami pengetahuan tentang TCP/IP. • Dapat memperoleh gambaran, semangat yang mendasari perkembangan teknologi Internet. Terutama dari penjelasan sejarah dan berbagai kisah manusia di balik perkembangan teknologi Internet.

Materi yang di tulis dalam buku ini merupakan sebagian dari materi kuliah jaringan komputer yang pernah diberikan selama 5+ tahun. Dalam proses memberikan kuliah biasanya berbentuk demo & praktek langsung di kelas, sehingga lebih mudah bagi kita untuk memahaminya. Kuliah tersebut bisa di akses secara online dan gratis di situs,

• http://lms.onnocenter.or.id/moodle/ • http://lms.onnocenter.or.id/moodle/course/view.php?id=32

Semoga bisa bermanfaat untuk mengembangkan lebih lanjut Internet di Indonesia. Merdeka! TENTANG PENULIS Onno W. Purbo adalah seorang tokoh (yang kemudian lebih dikenal sebagai pakar di bidang) teknologi informasi asal Indonesia. Ayah Onno,Hasan Poerbo, adalah seorang profesor di ITB bidang lingkungan hidup yang banyak memihak pada rakyat kecil. Onno masuk ITB pada jurusan Teknik Elektro angkatan 1981. Enam tahun kemudian Onno lulus dengan predikat wisudawan terbaik. Setelah itu Onno melanjutkan studi ke Kanada dengan beasiswa dari PAU-ME. RT/RW-Net adalah salah satu dari sekian banyak gagasan yang Onno lontarkan yang mengukir Sejarah Internet Indonesia. Ia juga aktif menulis dalam bidang teknologi informasi di berbagai media, seminar, konferensi nasional maupun internasional terutama untuk memberdayakan masyarakat Indonesia menuju masyarakat berbasis pengetahuan. Lebih dari 163 kota besar di 34 negara di kunjungi dalam perjalanan hidup-nya. Onno percaya filosofy copyleft, banyak tulisannya dipublikasi secara gratis di internet.