topografi jaringan dan mekanisme pengiriman data
A. Topologi Jaringan lan has NO 01 Perkembangan teknologi saat ini membuat penggunaan jaringan komputer dan internet semakin luas, baik untuk aktivitas pribadi sehari-hari maupun untuk mendukung kegiatan organisasi. Jaringan digunakan agar perangkat- perangkat dapat saling berbagi sumber daya dan juga dapat dihubungkan ke internet. Di kelas X, Anda telah belajar berbagai jenis perangkat yang digunakan dalam jaringan dan berbagai tipe jaringan, yang dikelompokkan berdasarkan luas atau jangkauan jaringan. Pada bagian ini, akan dijelaskan cara perangkat-perangkat atau node-node dihubungkan secara fisik satu dengan yang lain dalam jaringan, kelebihan dan kekurangan dari masing- masing konfigurasi, serta cara memilih konfigurasi yang sesuai.
1. Berbagai Topologi Jaringan Ketika berbagai perangkat ditempatkan dalam suatu jaringan, perangkat-perangkat tersebut disusun dalam konfigurasi fisik dan logika yang disebut sebagai topologi. Topologi fisik mengacu kepada struktur interkoneksi antarperangkat dari jaringan lokal (LAN). Topologi fisik tersebut menentukan cara menghubungkan berbagai perangkat yang ada dengan menggunakan kabel, nirkabel, perangkat jaringan, dan sebagainya. Adapun topologi logika menggambarkan kinerja sinyal dari media jaringan dan cara data dipertukarkan antarperangkat. Topologi logika tidak selalu berhubungan dengan topologi fisik tertentu. Topologi jaringan yang digunakan mempunyai peranan yang penting dalam jaringan. Topologi tersebut akan membantu kita memahami konsep yang digunakan dalam jaringan. Selain itu, topologi jaringan akan menentukan kinerja jaringan, biaya yang dibutuhkan untuk membangunnya, biaya operasional, dan pemeliharaan. Topologi jaringan yang dipilih juga akan menjadi faktor yang menentukan tipe media yang digunakan untuk menghubungkan satu perangkat dengan perangkat lainnya dalam jaringan. Topologi jaringan yang dipilih akan membuat proses deteksi error atau kegagalan menjadi lebih mudah/sulit serta penggunaan sumber daya dan komponen jaringan menjadi efektif/tidak. Topologi jaringan dapat dikelompokkan menjadi lima model dasar, yaitu sebagai berikut.
A. Topologi Bus
Topologi bus merupakan jaringan yang mempunyai ujung di kedua sisinya dan sinyal berjalan dari ujung yang satu ke ujung yang lain. Jaringan dengan topologi ini mengirimkan data dalam satu arah (unidirectional) dari satu ujung ke ujung yang lain. Topologi bus mempunyai beberapa kelebihan, di antaranya sebagai berikut.
(1) Topologi bus mudah untuk dipahami.
(2) Penggunaan biaya yang efektif.
(3) Ideal untuk digunakan pada jaringan yang kecil dengan jumlah node yang sedikit.
(4) Membutuhkan kabel yang lebih sedikit untuk menghubungkan node-node yang ada.
(5) Memberikan kemudahan untuk melakukan penambahan atau pengurangan node dalam jaringan.
Sumber: shutterstock.com Gambar 3.2 Topologi bus. Selain kelebihannya, topologi bus juga memiliki beberapa kekurangan, di antaranya sebagai berikut.
(1) Topologi bus hanya ideal untuk digunakan pada jaringan yang kecil.
(2) Jika kabel utama (backbone) dari jaringan mengalami kegagalan, seluruh jaringan akan mengalami kegagalan.
(3) Bersifat unidirectional sehingga pengiriman data hanya dalam satu arah.
(4) Kecepatan pengiriman data dalam jaringan akan menurun drastis seiring dengan bertambahnya jumlah node dalam jaringan.
B. Topologi Ring
Sesuai dengan namanya, topologi ring berbentuk seperti cincin. Setiap komputer akan dihubungkan dengan dua node yang terdekat dengannya dan membentuk lingkaran, serta node yang terakhir akan dihubungkan dengan node yang pertama. Pada topologi ring, semua perangkat akan dihubungkan dalam konfigurasi loop tertutup dan salah satu node dalam jaringan akan berperan sebagai monitor, yang bekerja untuk memelihara konfigurasi.
Sumber shutterstock.com Gambar 3.3 Topologi ring.
Pada Jaringan dengan topologi ring, paket data akan ditransmisikan dari satu node ke node lain dalam suatu lingkaran. Jika paket tiba di suatu node, data tersebut harus diteruskan ke node berikutnya. Oleh karena itu, semua node pada topologi ini berperan sebagai intermediate node. Pada jaringan yang besar dengan jumlah node banyak, perangkat repeater terkadang digunakan untuk menjaga agar tidak ada. data yang hilang selama proses transmisi. Kelebihan dari penggunaan topologi ring, di antaranya sebagai berikut.
(1) Mampu menangani komunikasi data dengan beban berat lebih baik dari topologi bus.
(2) Mempunyai konfigurasi ring sehingga jaringan tidak membutuhkan node yang berperan sebagai hub pusat.
(3) Proses instalasi dapat dilakukan dengan mudah.
(4) Proses troubleshooting dapat dilakukan dengan mudah.
Selain kelebihannya, topologi ring juga memiliki beberapa kekurangan, di antaranya sebagai berikut.
(1) Node-node di jaringan dihubungkan oleh satu kabel sehingga jika kabel tersebut mengalami kegagalan, dapat berdampak pada seluruh jaringan.
(2) Untuk meningkatkan keandalan, topologi ini sering kali diubah menjadi topologi dual-ring.
C. Topologi Dual-Ring
Topologi dual-ring adalah konfigurasi jaringan dengan setiap node dihubungkan dengan kabel jaringan yang membentuk dua lingkaran. Topologi dual-ring lahir sebagai pemecahan masalah yang ditimbulkan pada topologi ring yang mempunyai sistem transfer data yang bersifat unidirectional Pada jaringan dengan topologi dual-ring, setiap node dihubungkan dengan dua kabel yang merupakan bagian arah transfer data yang berbeda. Dengan kata lain, satu ring dari dua lingkaran yang berbeda. Setiap ring mempunya digunakan untuk mentransmisikan data untuk satu arah dan satu ring yang lain digunakan untuk mentransmisikan data dalam arah yang berlawanan, Selain untuk keperluan transmis data dalam arah yang berlawanan, penggunaan dual-ring juga digunakan untuk keperluan backup jaringan. Jika satu ring mengalami kegagalan, ring yang lain digunakan sebagai cadangan. Dengan demikian, proses transmisi data dalam jaringan tetap dapat dijalankan. Topologi dual-ring memiliki beberapa kelebihan, di antaranya sebagai berikut. (1) Mempunyai kinerja yang lebih baik jika dibandingkan dengan topologi bus dan ring pada kondisi beban kerja jaringan yang tinggi.
(2) Topologi dual-ring mempunyai alur jaringan yang teratur.
(3) Penggunaan biaya yang efektif.
(4) Konektivitas point-to-point dari node-node membuat proses identifikasi dan deteksi kesalahan konfigurasi atau kegagalan dapat dilakukan dengan mudah.
Sumber: shutterstock.com Gambar 3.4 Topologi dual-ring.
Selain memiliki kelebihan, topologi dual-ring juga memiliki beberapa kekurangan, di antaranya sebagai berikut.
(1) Jika ingin melakukan konfigurasi ulang, seperti menambah atau mengurangi node dalam jaringan, seluruh jaringan harus dimatikan.
(2) Kegagalan satu saluran transmisi dapat menyebabkan gagalnya seluruh jaringan.
(3) Bandwidth yang tersedia dibagikan ke seluruh perangkat yang ada dalam jaringan.
(4) Jika satu node tidak berfungsi, dapat menyebabkan seluruh Jaringan tidak dapat berfungsi.
(5) delay komunikasi semangkin besar jika jumlah node dalam suatu ring bertambah.
D. Topologi Star
Topologi star atau bintang adalah topologi di mana setiap node dalam jaringan dihubungkan ke node pusat sehingga akan membuat konfigurasi perangkat-perangkat berbentuk bintang. Pada topologi ini, setiap perangkat dalam jaringan akan dihubungkan langsung ke node pusat, dan setiap node akan berkomunikasi secara tidak langsung melalui node pusat tersebut Jika terjadi komunikasi data pada topologi star, data akan melewati node pusat terlebih dahulu sebelum tiba di node tujuan. Selain berperan sebagai penghubung semua node node pusat juga berperan untuk mengelola dan mengendalikan transmisi data di seluruh jaringan Node pusat dapat juga berperan sebagai repeater untuk memastikan tidak ada data yang hilang selama proses trarismisi data. Topologi star dapat dibangun dengan menggunakan kabel UTP, STP, kabel koaksial, dan serat optik Sumber:
stutterstock.com Gambar 3.5 Topologi star.
Penggunaan topologi star memberikan beberapa keuntungan, di antaranya sebagai berikut.
(1) Jaringan mudah dibangun dan dimodifikasi.
(2) Jika terjadi gangguan, proses perbaikan mudah dilakukan.
(3) Kegagalan pada satu node tidak akan berdampak pada keseluruhan jaringan.
(4) Perangkat yang tergabung dalam jaringan dapat ditambah atau dikurangi dengan mudah tanpa mengganggu jaringan.
Selain mempunyai kelebihan, penggunaan topologi star juga mempunyal kekurangan, di antaranya sebagai berikut.
(1) Biaya untuk instalasi dan penggunaan relatif mahal.
(2) Jaringan sangat tergantung kepada node pusat. Jika node pusat mengalami kegagalan, seluruh jaringan akan terganggu.
(3) Kinerja jaringan sangat tergantung kepada konfigurasi efisiensi, dan daya node pusat.
E. Topologi Mesh
Topologi mesh adalah topologi jaringan dengan setiap node dihubungkan satu dengan yang lain secara point-to- point. Setiap perangkat akan dihubungkan secara langsung ke setiap perangkat yang lain dalam sistem nonhierarki. Pada topologi mesh, transmisi data tidak tergantung pada node tunggal yang berfungsi sebagai perantara bagi node yang lain Suinber shutem Gambar 3.6 Topologi mesh Transmisi data pada topologi mesh didasarkan pada dua teknik penting, yaitu routing dan flooding. Setiap node pada jaringan mesh memiliki logika routing sehingga memungkinkan perangkat tersebut mencari jalur terdekat untuk mengirimkan data ke tujuan akhir. Logika routing juga digunakan untuk memilih jalur yang memungkinkan transmisi data terhindar dari jalur yang rusak (tidak dapat digunakan). Pada teknik flooding, data yang ditransmisikan akan dikirimkan ke setiap node dalam jaringan. Oleh karena itu, logika routing pada teknik ini tidak diperlukan. Kehilangan data selama transmisi jarang terjadi karena setiap node memiliki data tersebut. Teknik ini menyebabkan transmisi data menjadi sangat andal dan tidak pernah mengalami kegagalan Meskipun demikian, teknik flooding dapat menyebabkan beban di jaringan meningkat. Penggunaan topologi mesh memberikan berbagai keuntungan, di antaranya adalah sebagai berikut. (1) Semua node terkoneksi satu dengan yang lain. (2) Pada jalur yang didedikasikan khusus, beban jaringan akan berkurang dan tabrakan pada saat mengirimkan data dapat dihindari.
(3) Isolasi dan deteksi kegagalan dapat dilakukan dengan mudah.
(4) Merupakan jaringan yang sangat kuat.
(5) Menyediakan keamanan dan perlindungan privasi.
(6) Kegagalan pada satu node tidak akan memberikan dampak apapun ke node yang lain.
Selain memiliki kelebihan, penggunaan topologi mesh juga mempunyai beberapa kekurangan, di antaranya sebagai berikut.
(1) Biaya untuk implementasi jaringan dan biaya untuk pengkabelan tergolong tinggi.
(2) Merupakan jaringan yang cukup kompleks untuk dipahami.
(3) Proses instalasi dan konfigurasi ulang akan sulit dilakukan dan membutuhkan usaha ekstra.
F. Topologi Hibrida
Pada penerapannya, topologi jaringan yang digunakan dalam suatu jaringan sering kali merupakan gabungan dari dua atau lebih topologi jaringan. Topologi gabungan ini disebut topologi hibrida. Topologi hibrida dapat dikonfigurasi sesuai dengan kebutuhan organisasi. Jika konfigurasi yang dilakukan tepat, topologi hibrida tersebut akan memberikan topologi Jaringan yang terbaik bagi organisasi. Kelebihan dari topologi hibrida adalah jaringan mudah untuk dikecilkan atau dikembangkan. Namun, topologi ini sering kali membutuhkan biaya yang lebih besar serta upaya yang lebih tinggi untuk melakukan proses konfigurasi dan pemeliharaan. Salah satu topologi hibrida yang paling umum digunakan adalah topologi pohon (tree). Disebut topologi pohon karena bentuk konfigurasi dari node-node yang ada jika disusun akan berbentuk menyerupai pohon. Bagian utama dari topologi ini berupa gabungan dari topologi bus dan topologi star. Pada topologi pohon, node-node dihubungkan satu dengan yang lain dalam sistem hierarki. Oleh karena itu, topologi ini sering juga disebut dengan topologi hierarki. Gambar 3.7 Topologi tree.
Sumber: shutterstock.com.
Kelebihan dari topologi pohon, di antaranya sebagai berikut.
(1) Bersifat fleksibel.
(2) Mudah untuk dikelola besar
(3) Cocok digunakan untuk jaringan dengan jumlah node
(4) Node dapat dikurangi dan ditambahkan dengan mudan Selain kelebihan,
topologi pohon juga memiliki berbaga kekurangan, di antaranya sebagai berikut.
(1) Membutuhkan biaya yang lebih tinggi.
(2) Mempunyai desain yang kompleks.
(3) Proses pemeliharaan yang lebih kompleks.
2. Memilih Topologi Jaringan
Anda telah mengenal berbagai topologi jaringan karakteristik yang dimiliki, serta masing-masing kelebihan dan kekurangannya. Langkah selanjutnya adalah menentukan topologi mana yang sebaiknya dipilih ketika membangun jaringan komputer. Sebagaimana telah Anda ketahui bahwa tidak ada topolog aringan yang sempurna. Bahkan, satu topologi jaringan tidal akan unggul secara mutlak terhadap topologi jaringan yang lain. Oleh karena itu, ketika memilih topologi jaringan yang terbaik, kita harus menyesuaikan dengan kebutuhan pengguna dan ukuran jaringan yang akan dibangun. Berikut beberapa kriteria yang mungkin dapat digunakan untuk menentukan topologi jaringan yang paling sesuai. Kriteria tersebut meliputi panjang kabel yang dibutuhkan, tipe kabel yang digunakan, biaya, dan scalability.
a. Panjang Kabel yang Dibutuhkan Secara umum, semakin panjang kabel yang digunakan dalam membangun jaringan komputer, semakin besar beban kerja yang harus dilakukan. Topologi bus dan star merupakan topologi jaringan dengan sistem pengkabelan paling sederhana dan beban kerja yang sedikit. Sebaliknya, topologi mesh memiliki sistem pengkabelan yang paling kompleks dan membutuhkan kerja yang lebih besar.
b. Tipe Kabel yang Digunakan Kriteria selanjutnya yang perlu dipertimbangkan ketika memilih topologi jaringan adalah tipe kabel yang akan digunakan. Kabel koaksial dan UTP/STP menggunakan tembaga yang diisolasi atau kabel yang berbasis tembaga, sedangkan kabel serat optik terbuat dari plastik tipis dan lembut atau tabung gelas. Kabel UTP mempunyai cost-effective yang baik, tetapi mempunyai bandwidth yang lebih kecil dibandingkan dengan kabel koaksial. Sementara itu, kabel serat optik mempunyai kinerja yang sangat baik dalam mentransmisikan.
c. Biaya
Semakin kompleks topologi jaringan yang digunakan, semakin banyak waktu yang diperlukan dan semakin tinggi biaya untuk membangun jaringan tersebut. Biaya yang dikeluarkan dapat menjadi sangat tinggi, terutama jika pengguna memilih untuk menggabungkan beberapa faktor. Sebagai contoh, pada topologi jaringan yang kompleks dengan menggunakan kabel yang mahal, maka biaya membangun jaringan akan menjadi sangat tinggi.
Oleh karena itu, untuk memilih topologi jaringan dan kabel yang digunakan, faktor biaya harus dipertimbangkan dengan teliti. Tujuannya agar biaya yang dikeluarkan menjadi efektif, dengan kinerja jaringan masih memenuhi kebutuhan pengguna dan biaya masih terjangkau.
d. Scalability
Kriteria terakhir yang perlu dipertimbangkan adalah scalability. Scalability adalah kemampuan atau kemudahan jaringan komputer untuk berkembang seiring dengan perkembangan organisasi. Seperti telah dijelaskan sebelumnya bahwa beberapa topologi jaringan mempunyai kemampuan untuk dikembangkan dengan cara yang mudah, sedangkan sebagian tidak. Oleh karena itu, ketika memilih topologi jaringan yang digunakan, Anda harus mempertimbangkan perkembangan organisasi dan pengguna yang mungkin terjadi. Topologi star dapat dikembangkan dengan mudah tanpa mengganggu operasi jaringan. Sebaliknya, topologi ring mengharuskan jaringan dimatikan ketika menambahkan node.
Sebelum memutuskan memilih suatu topologi, perlu dipastikan bahwa semua informasi yang penting telah diketahui dan dimasukkan dalam pertimbangan. Sebagai bahan pertimbangan, penghitungan secara mendetail mungkin perlu dilakukan. Dengan demikian, ketika memilih topologi jaringan, semua pertimbangan yang perlu, sudah dilakukan. Hal ini karena jika telah memutuskan untuk memilih suatu topologi, ketika ingin mengubahnya lagi ke topologi yang lain, akan menghabiskan banyak waktu dan biaya.
3. Pemetaan Topologi Jaringan
Ketika mulai bekerja merancang jaringan, diagram topologi akan sangat berguna. Melalui diagram tersebut, kita dapat melihat peta seluruh node dalam jaringan dan bagaimana informasi akan ditransmisikan di antara node-node di seluruh jaringan. Dengan demikian, kita dapat memperkirakan apakah transmisi data akan berjalan dengan baik, apakah ada kemungkinan terjadi tabrakan data, apakah beban transmisi data terlalu besar atau tidak, dan sebagainya. Tampilan visual yang diberikan oleh diagram topologi akan membantu untuk melakukan analisis tersebut. Jika ternyata ada konfigurasi yang mempunyai potensi masalah, permasalahan tersebut
dapat diselesaikan dengan cara mengubah desain jaringan. Diagram topologi juga penting untuk memberikan gambaran secara komprehensif tentang fungsi jaringan.
Selain membantu proses pemecahan masalah, tampilan jaringan secara keseluruhan akan membantu kita untuk mengidentifikasi bagian-bagian infrastruktur jaringan yang memiliki kekurangan dan berpotensi menjadi masalah. Kita dapat melihat jika ada bagian node-node yang perlu dimonitor secara saksama, diganti atau ditingkatkan.
Untuk menggambar diagram topologi jaringan, kita dapat menggunakan berbagai perangkat lunak yang tersedia saat ini, yang dikembangkan khusus untuk pengelolaan jaringan. Beberapa perangkat lunak yang umum digunakan di antaranya SolarWinds Network Topology Mapper, Paessler PRTG Network Mapping Tools, ConceptDraw Pro, Lucidchart, Microsoft Visio, dan Intermapper.
Penggunaan perangkat lunak di atas akan membuat proses mendesain jaringan menjadi lebih mudah. Selain itu, dokumentasi yang baik dari peta jaringan yang ada akan membantu kita, jika suatu saat harus melakukan pemeliharaan, perbaikan, dan pengembangan jaringan.
4. Model OSI
OSI merupakan singkatan dari Open Systems Interconnect. Model OSI atau sering juga disebut OSI Layer, adalah sebuah model kerangka kerja konseptual yang menggambarkan jaringan komputer atau sistem telekomunikasi sebagai sebuah sistem yang terdiri dari 7 layer (lapisan), di mana masing-masing lapisan mempunyai fungsinya sendiri.
Penggunaan model yang terdiri dari layer-layer membantu pengelola jaringan memvisualisasikan apa yang terjadi dalam sebuah jaringan. Jika terjadi masalah dalam jaringan, model OSI akan membantu administrator jaringan menganalisis dan mempersempit permasalahan. Administrator jaringan dapat mengidentifikasi masalah, apakah permasalahan merupakan masalah fisik atau masalah aplikasi. Sedangkan bagi programmer komputer, ketika ada kendala dengan aplikasi yang dibangun, programmer dapat lebih mudah mengidentifikasi layer mana di dalam jaringan yang tidak bekerja dengan baik.
Model OSI terdiri atas 7 layer, yaitu:
(1) application,
(2) presentation,
(3) session,
(4) transport,
(5) network,
(6) data link, dan
(7) physical.
Masing-masing layer memiliki fungsinya masing-masing yang akan dijelaskan berikut ini.
a. Application
Lapisan paling atas dari model OSI adalah application layer. Layer ini diaplikasikan dalam bentuk aplikasi-aplikasi jaringan.
Aplikasi tersebut menghasilkan data yang harus dikirimkan melalui jaringan. Application layer juga berfungsi sebagai jendela bagi aplikasi untuk mengakses jaringan dan untuk menampilkan informasi yang diterimanya kepada pengguna. Beberapa contoh aplikasi yang ada di layer ini adalah berbagai aplikasi browser, Skype Messenger, dan lain-lain.
b. Presentation
Presentation layer disebut juga translation layer. Di layer ini, data-data dari application layer diekstrak dan dimanipulasi menjadi format data yang dibutuhkan untuk ditransmisikan melalui jaringan.
Fungsi dari presentation layer adalah sebagai berikut.
(1) Translation
Presentation layer menerjemahkan data dari satu format ke format pengkodean yang lain, misalnya saja dari format ASCII ke format EBCDIC.
(2) Enkripsi dan Dekripsi data
Presentation layer digunakan untuk keamanan data. Data perlu dienkodekan sebelum dikirimkan melalui jaringan dan kemudian dikodekan kembali pada sisi penerima. Presentation layer bertugas untuk melakukan proses enkripsi dan dekripsi tersebut.
(3) Kompresi
Proses kompresi diperlukan agar ukuran data yang dikirimkan melalui jaringan semakin kecil. Presentation layer bertugas melakukan proses kompresi tersebut.
c. Session
Session layer bertanggung jawab untuk membuat koneksi, memelihara sesi, melakukan otentikasi dan memastikan keamanan. Fungsi session layer adalah sebagai berikut.
(1) Membangun, menjaga dan menghentikan sesi.
Sebelum melakukan pengiriman data, dua node perlu membangun koneksi (sesi). Koneksi tersebut harus dipastikan terjaga selama proses pengiriman data dan kemudian dihentikan setelah proses transmisi data selesai.
(2) Sinkronisasi.
Session layer memungkinkan sebuah proses untuk menambahkan sebuah checkpoint yang akan dianggap sebagai sebuah titik sinkronisasi bagi paket data. Titik sinkronisasi ini membantu untuk proses identifikasi kesalahan selama proses transmisi data. Jika terjadi kesalahan, maka data akan disinkronisasi ulang untuk memastikan tidak ada data yang terpotong atau data yang hilang selama proses transmisi.
Transport
Dalam konteks informatika, transport merujuk pada mekanisme atau cara data dikirimkan dari satu sistem ke sistem lain melalui jaringan komputer. Ini melibatkan pengiriman data antar perangkat, aplikasi, atau sistem yang terhubung dalam jaringan, seperti internet atau intranet.
Di tingkat lapisan transport dalam model OSI (Open Systems Interconnection), terdapat dua protokol utama yang digunakan untuk mengatur dan mengelola pengiriman data:
Transmission Control Protocol (TCP): Merupakan protokol yang andal dan berbasis koneksi. TCP memastikan bahwa data yang dikirimkan diterima dengan benar dan dalam urutan yang tepat. Jika ada data yang hilang atau rusak, TCP akan meminta pengiriman ulang.
User Datagram Protocol (UDP): Merupakan protokol yang tidak berbasis koneksi, lebih cepat tetapi kurang andal. UDP digunakan ketika kecepatan lebih penting daripada memastikan data diterima dengan benar, misalnya untuk streaming video atau suara.
Proses transport ini mencakup beberapa hal:
Segmentasi dan Pengurutan Data: Pembagian data menjadi paket-paket kecil agar bisa dikirim melalui jaringan.
Pengendalian Aliran: Mengatur berapa banyak data yang dapat dikirim dalam waktu tertentu.
Pengendalian Kesalahan: Memastikan data sampai dengan benar dan mengatasi kesalahan pengiriman.
Intinya, transport dalam informatika adalah tentang bagaimana data dikirimkan, dikelola, dan dijamin sampai di tujuan dengan cara yang efisien dan tepat.
e. Network
Fungsi utama network adalah memfasilitasi komunikasi dan berbagi sumber daya antar perangkat yang terhubung. Hal ini memungkinkan pengguna untuk saling mengirimkan data, berbagi perangkat keras (seperti printer) dan perangkat lunak, serta mengakses informasi dan layanan secara efisien.
Fungsi-fungsi utama network:
• Komunikasi
• Berbagi Sumber Daya
• Akses Data dan Informasi
• Peningkatan Produktivitas
• Keamanan Data
f. Data link
Fungsi data link adalah memastikan transmisi data yang andal antar perangkat yang terhubung langsung, melalui pembingkaian data, pengalamatan fisik (MAC address), deteksi dan koreksi kesalahan, serta kontrol aliran data. Lapisan ini mengambil paket dari lapisan jaringan dan mengubahnya menjadi frame untuk dikirim melalui lapisan fisik.
Fungsi utama lapisan data link:
• Pembingkaian data Pengalamatan fisik
• Deteksi dan koreksi kesalahan
• Kontrol aliran dan
• Kontrol akses media
g. Physical
Fungsi physical layer (lapisan fisik) adalah mengatur transmisi data secara fisik di antara dua perangkat melalui media seperti kabel atau gelombang radio. Lapisan ini mengubah data digital menjadi sinyal fisik, menentukan bagaimana data mengalir, kecepatan transmisi, sinkronisasi bit, dan mendefinisikan koneksi fisik, termasuk jenis kabel dan konektor.
Fungsi utama lapisan fisik:
• Pengubahan sinyal
• Sinkronisasi bit
• Menentukan rate data
• Menentukan mode transmisi
• Mendefinisikan antarmuka fisik
5. Model TCP/IP
Model lain yang digunakan untuk menjelaskan sistem
jaringan komputer adalah TCP/IP. TCP/IP merupakan
singkatan dari Transmission Control Protocol/Internet
Protocol. Model ini didesain dan dikembangkan oleh
Departemen Pertahanan Amerika Serikat pada tahun
1960an.
Berbeda dengan model OSI yang mempunyai 7 layer,
model TCP/IP hanya mempunyai 4 layer, yaitu sebagai
berikut:
(1) application layer,
(2) transport layer,
(3) internet layer, dan
(4) network access layer.
Setiap layer terdiri dari kumpulan protokol. Fungsi dari
masing-masing layer atau protokol tersebut akan dijelaskan
pada gambar berikut.
Application HTTP, HTTPS, FTP, POP3, SMTP, SNMP, Telnet Application
Transport UDP, TCP, SCTP Transport
Internet/Network IP, ARP, ICMP Network
Network Access NIC Data link
Physical
Model TCP/IP Protokol dan Layer Model OSI
a. Application
Application layer merupakan layer paling atas dari model
TCP/IP. Layer ini berperan sebagai aplikasi-aplikasi yang
bertugas melakukan pertukaran data standar dan untuk
interaksi antara pengguna dengan aplikasi.
Beberapa contoh aplikasi yang umum Anda kenal, yang
termasuk pada layer ini antara lain: Hypertext Transfer Protocol
(HTTP) dan Hypertext Transfer Protocol Secure (HTTPS)
digunakan untuk aplikasi web, File Transfer Protocol (FTP)
digunakan untuk pengiriman file, Post Office Protocol 3 (POP3)
digunakan untuk mengambil email dari server email, Simple
Mail Transfer Protocol (SMTP) digunakan untuk berkomunikasi
dengan server email untuk pengiriman email, dan Simple
Network Management Protocol (SNMP) digunakan untuk
mengelola berbagai perangkat dalam jaringan.
b. Transport
Transport layer berfungsi untuk mengadakan komunikasi
end-to-end antar dua host/komputer dalam jaringan. Protokol
yang ada pada lapisan ini adalah User Datagram Protocol
(UDP), Transmission Control Protocol (TCP), dan Stream Control
Transmission Protocol (SCTP). Protokol SCTP diperkenalkan
belakangan untuk memenuhi kebutuhan aplikasi-aplikasi
terbaru. Ketiga protokol di Layer Transport bertanggung
jawab untuk mengirimkan pesan-pesan dari satu proses ke
proses yang lain.
Pembahasan mengenai ketiga protokol pada Layer
Transport tersebut adalah sebagai berikut.
(1) UDP
UDP merupakan protokol yang digunakan untuk
memproses transmisi data. Protokol ini menerima data
dari layer yang di atasnya dan kemudian menambahkan
informasi-informasi berikut.
a) Alamat port
UDP menambahkan 16 bit alamat port sumber
dan 16 bit alamat tujuan. Dengan demikian, data akan
dikirimkan ke alamat yang tepat dan menampilkan
sumber data yang benar.
b) Checksum error control
UDP menambahkan 16 bit checksum error control
yang ditambahkan ke data. Checksum ini digunakan
untuk mengontrol kesalahan.
c) Panjang data
UDP menambahkan informasi panjang data.
Panjang data didefinisikan sebagai jumlah total byte
dari data yang ada di datagram.
Meskipun dapat mengidentifikasi eror, protokol UDP
tidak dapat menentukan secara spesifik eror yang terjadi
secara aktual selama transmisi data. Oleh karena itu, UDP
dinilai kurang handal dibanding dengan protokol TCP.
(2) TCP
Tidak seperti UDP yang bersifat connectionless, TCP
merupakan protokol yang bersifat connection-oriented.
Artinya, koneksi antar pengirim dan penerima harus
dibangun terlebih dahulu sebelum data ditransmisikan.
TCP membagi data-data menjadi unit yang lebih kecil,
yang disebut dengan segmen. Masing-masing segmen
mengandung nomor yang berurut, yang memungkinkan
untuk mengatur ulang segmen dalam urutan yang benar
pada sisi penerima, menjadi data yang lengkap. Selain
itu, protokol TCP juga melengkapi segmen dengan nomor
yang digunakan untuk memverifikasi, apakah kalau
segmen tiba di tujuan atau tidak.
Berbeda dengan UDP, TCP dapat menangani
eror yang terjadi selama proses transmisi. TCP dapat
mengidentifikasi lokasi secara spesifik, di mana eror
terjadi. Hal ini membuat TCP menjadi protokol yang lebih
handal dibanding UDP
(3) SCTP
SCTP dikembangkan untuk memfasilitasi fitur aplikasi-
aplikasi baru saat ini. Salah satu fitur yang difasilitasi
adalah transmisi data suara melalui internet. Oleh karena
itu, SCTP harus merupakan protokol yang handal seperti
halnya TCP, dengan penambahan fitur-fitur yang lebih baik.
Berbeda dengan TCP yang mengirimkan data dalam
satu aliran, SCTP merupakan protokol yang memiliki
kemampuan untuk membagi data menjadi beberapa aliran,
mengisolasi setiap aliran, dan mengirimkannya di saat yang
bersamaan. Setiap aliran akan memiliki urutan pengiriman
sendiri. TCP dapat saja mengalami delay selama transmisi
data karena adanya head-of-line blocking (halangan karena
adanya antrian dalam jaringan). Penggunaan banyak aliran
pada SCTP dapat mengatasi masalah ini.
Selain itu, SCTP memiliki fitur keamanan tambahan
yang tidak dimiliki oleh UDP dan TCP. SCTP memiliki
kemampuan untuk mengurangi kemungkinan akan
adanya serangan Denial of attacks (DoS) menggunakan
mekanisme pertukaran cookie untuk memverifikasi klien
yang meminta layanan.
c. Internet Layer
Internet layer atau sering disebut network layer,
mempunyai fungsi yang setara dengan network layer di model
OSI. Layer ini mempunyai protokol-protokol yang bertanggung
jawab dalam proses transmisi data untuk keseluruhan jaringan.
Layer Internet mempunyai tiga buah protokol utama, yaitu IP,
ARP, dan ICMP. Fungsi dari masing-masing protokol adalah
sebagai berikut.
(1) IP atau Internet Protocol bertanggung jawab untuk
mengirimkan paket-paket data dari host sumber ke host
tujuan menggunakan alamat IP yang terdapat di header
paket.
(2) ICMP merupakan singkatan dari Internet Control
Message Protocol. Protokol ini bertanggung jawab untuk
mengirimkan pesan dan memberikan informasi tentang
masalah yang ada di dalam jaringan, termasuk melaporkan
kegagalan pengiriman paket data.
(3) ARP atau Address Resolution Protocol adalah protokol yang
bertanggung jawab untuk menemukan alamat sebuah
host menggunakan alamat IP yang diketahui.
d. Network Access Layer
Network access layer atau sering juga disebut network
interface mempunyai peran yang sama dengan data link layer
B.Perangkat Jaringan dan Mekanisme Pengiriman Data
Perangkat jaringan adalah alat yang digunakan untuk membangun dan menghubungkan jaringan, seperti router, switch, hub, access point, modem, server, serta kabel dan kartu jaringan. Mekanisme pengiriman data berlangsung dengan cara data dibungkus menjadi paket, diberi alamat, dirutekan melalui jaringan, dikirim lewat media seperti kabel atau WiFi, dicek kesalahannya, lalu dibuka kembali di perangkat tujuan.
1.Perangkat Jaringan Komputer
Perangkat jaringan komputer adalah alat yang digunakan untuk menghubungkan dan mengatur komunikasi antar perangkat dalam sebuah jaringan, seperti router, switch, hub, modem, access point, serta kabel dan kartu jaringan agar data dapat dikirim dan diterima dengan baik.
a. Komputer Server
Komputer server adalah komputer yang berfungsi menyediakan layanan, data, atau sumber daya bagi komputer lain dalam jaringan sehingga proses berbagi informasi dapat berjalan lancar dan teratur.
b. Komputer Klien
Komputer klien adalah komputer yang digunakan oleh pengguna untuk meminta dan mengakses layanan atau data dari komputer server dalam sebuah jaringan. Komputer ini menjalankan aplikasi yang memanfaatkan sumber daya server, sehingga pengguna dapat melakukan berbagai aktivitas seperti membuka file, mengakses internet, atau menggunakan program tertentu yang terhubung ke server.
c. Kartu Jaringan
Kartu jaringan adalah perangkat pada komputer yang berfungsi menghubungkannya ke jaringan, baik melalui kabel maupun nirkabel. Dengan kartu jaringan, komputer dapat mengirim dan menerima data sehingga bisa berkomunikasi dengan perangkat lain dalam jaringan.
d. Kabel dan Konektor
Kabel dan konektor dalam jaringan LAN berfungsi untuk menghubungkan satu komputer dengan komputer yang lain atau satu komputer dengan perangkat jaringan lain, misalnya hub. Ada beberapa tipe kabel yang digunakan di jaringan, di antaranya sebagai berikut.
(1) Kabel koaksial
Kabel koaksial (coaxial) mempunyai konduktor tembaga tunggal di bagian tengahnya yang digunakan sebagai penghantar sinyal. Bagian ini dilindungi oleh lapisan plastik yang digunakan untuk mengisolasi konduktor tembaga dengan pelindung logam yang dikepang. Pelindung logam digunakan untuk melindungi sinyal dari gangguan luar, seperti lampu neon, induksi motor listrik, gangguan dari komputer, dan sebagainya.
Kabel koaksial mempunyai kelebihan, yaitu tahan terhadap gangguan sinyal dari luar dan dapat digunakan untuk jarak yang lebih jauh dibanding dengan kabel UTP maupun STP. Kekurangannya adalah sulit untuk dipasang.
(2) Kabel UTP
Kabel UTP atau Unshielded Twisted Pair merupakan kabel standar yang digunakan untuk LAN. Kabel UTP terdiri dari delapan kawat tembaga yang dipilin secara berpasangan. Masing-masing pasang kabel tidak dipisahkan dengan menggunakan pembungkus. Kabel tersebut dihubungkan dengan perangkat jaringan menggunakan sebuah konektor yang disebut RJ-45. RJ merupakan singkatan dari Registered Jack, merupakan standar konektor yandipinjam dari industri telepon. Standar konektor tersebut mencakup juga masing-masing pin yang ada di dalamnya.
(3) Kabel STP
Meskipun kabel UTP mempunyai harga yang lebih murah dibandingkan dengan kabel STP, kabel UTP mempunyai kelemahan. Oleh karena tidak memiliki pembungkus di antara pasangan twisted kabelnya, kabel tersebut rentan terhadap gangguan listrik dan sinyal radio. Oleh karena itu, pada lingkungan dengan gangguan listrik yang banyak, kabel STP lebih cocok digunakan mempunyai pembungkus pada masing-masing pasangan kabel sehingga lebih tahan terhadap gangguan. Selain itu, pembungkus yang ada membuat jarak penggunaan dari kabel STP menjadi lebih jauh. Seperti halnya dengan kabel UTP, kabel STP juga dapat menggunakan konektor RJ-45. Kekurangan dari kabel STP adalah harganya yang mahal dan instalasi yang lebih sulit.
(4) Kabel fiber optic
Kabel fiber optic (serat optik) terdiri atas kabel dengan inti kaca yang dibalut oleh beberapa lapis material pelindung. Kabel serat optik biasanya terdiri atas inti yang terbuat dari kaca atau serat plastik, lapisan plastik penyangga, kemudian serat kevlar yang membantu untuk memperkuat kabel dan mencegah kerusakan. Pada bagian paling luar diberikan isolasi pembungkus yang terbuat dari teflon atau bahan PVC.
Berbeda dengan kabel lain yang menggunakan sinyal elektronik untuk mentransmisikan data, kabel serat optik menggunakan cahaya. Cara ini sangat ideal, terutama pada lingkungan yang mempunyai banyak intervensi listrik. Selain itu, kabel serat optik juga cocok digunakan untuk jaringan yang menghubungkan beberapa gedung karena kekebalannya terhadap efek kelembapan dan serangan petir.
Kabel serat optik mempunyai kemampuan mentransmisikan sinyal dengan jarak yang lebih jauh dibandingkan dengan kabel koaksial dan twisted pair. Kabel jenis ini juga mempunyai kapasitas untuk membawa informasi dengan kecepatan yang jauh lebih besar. Kapasitas yang lebih besar memungkinkan jaringan untuk memberikan layanan transfer data yang lebih besar, seperti konferensi video dan layanan interaktif.
Kelemahan yang mungkin dimiliki oleh kabel serat optik adalah sulitnya pemasangan dan modifikasi. Biasanya, hal ini hanya dilakukan oleh profesional karena membutuhkan tingkat ketelitian yang tinggi.
Ada dua tipe kabel serat optik yang umum digunakan, yaitu single mode dan multimode. Kabel single mode dapat digunakan pada jarak yang lebih jauh, tetapi mempunyai harga yang lebih mahal dibandingkan kabel multimode. Kabel multimode mempunyai diameter yang lebih besar. Kedua mode menyediakan bandwidth dan kecepatan yang tinggi. Kabel serat optik mempunyai beberapa standar yang digunakan, yang dapat dilihat pada Tabel 3.1.
Oleh karena kemampuan yang dimilikinya, kabel serat optik banyak digunakan untuk membangun jaringan WAN. Saat ini, untuk memenuhi kebutuhan transfer data yang lebih cepat dan ketahanan terhadap gangguan (misalnya petir), banyak organisasi menggunakan kabel serat optik pada jaringan yang mereka gunakan. 5) Repeater
Kekuatan sinyal yang dilewatkan melalui jaringan, baik jaringan yang menggunakan kabel ataupun nirkabel akan melemah dengan bertambahnya jarak yang harus dilalui. Sebagai contoh, kabel UTP hanya mampu mengirimkan sinyal sampai jarak 100 m. Jika jarak pengiriman data lebih dari 100 m, data yang dikirimkan dapat mengalami kerusakan atau hilang. Oleh karena itu, pada jaringan yang mempunyai area yang cukup luas, diperlukan perangkat yang berfungsi untuk memperkuat sinval. Sesuai fungsinya, perangkat ini diberi nama repeater.
Repeater menguatkan sinyal yang diterima dari komputer pengirim sehingga kekuatan sinyal sama dengan kekuatan aslinya. Dengan menempatkan repeater, jarak antara komputer dalam jaringan dapat dibuat lebih jauh sehingga area jaringan dapat dibuat semakin luas.
(6) Hub
Ketika membangun jaringan komputer lokal (LAN), kita akan membutuhkan perangkat untuk membagi satu koneksi dari komputer server ke beberapa node. Untuk keperluan itu, kita dapat menggunakan perangkat yang disebut hub. Hub menggunakan banyak port (multiport) untuk membagi koneksi yang datang dari suatu server ke beberapa node klien. Selain berfungsi untuk membagi jalur kabel, hub juga berfungsi untuk menguatkan sinyal yang melewatinya. Hal ini akan membuat jarak satu node dengan node yang lain dalam sebuah jaringan dapat menjadi lebih jauh.
Hub tidak dilengkapi dengan kemampuan untuk menyaring data sehingga jika ada data yang melewatinya, data akan dikirimkan ke semua perangkat yang terhubung kepadanya. Selain itu, hub juga tidak dilengkapi dengan inteligensi untuk menemukan jalur terbaik yang harus dilalui paket data sehingga pengiriman data dapat dilakukan dengan cara yang efisien.
Ada dua jenis hub yang umum digunakan. Keduanya mempunyai kemampuan yang berbeda, yaitu sebagai berikut.
1) Hub aktif adalah hub yang mempunyai sumber tenaga listrik sendiri serta dapat digunakan untuk membersihkan, menguatkan, dan meneruskan sinyal yang diterima dalam jaringan. Hub ini berfungsi sebagai repeater dan juga sebagai pusat pengkabelan (membagi kabel). Hub aktif dapat digunakan untuk meningkatkan jarak maksimum di antara node-node yang ada.
2) Hub pasif adalah hub yang menghubungkan node-node yang ada dengan sumber tenaga listrik yang berasal dari hub aktif. Hub ini hanya meneruskan sinyal-sinyal yang diterima tanpa membersihkan dan menguatkan sinyal tersebut, serta tidak dapat digunakan untuk menambah jarak jangkauan di antara node-node. Jika kita membangun sebuah LAN dengan jarak dari satu node ke node lain yang berdekatan, penggunaan hub pasif akan dapat memenuhi kebutuhan. Sebaliknya, jika kita membangunLAN dengan jarak node yang berjauhan, penggunaan hub aktif menjadi mutlak dibutuhkan.
(7) Bridge
Kebutuhan untuk sharing data sering kali harus dilakukan dengan memperluas jaringan lokal (LAN) yang ada. Sebagai contoh dalam perusahaan, jaringan lokal departemen produksi perlu digabung dengan jaringan lokal departemen pembelian dan juga jaringan lokal departemen pemasaran. Oleh karena itu, dibutuhkan perangkat yang disebut bridge untuk menghubungkan jaringan lokal yang satu dengan jaringan lokal yang lain. Dengan menggunakan bridge, kita dapat membangun jaringan yang lebih besar, yang merupakan gabungan dari beberapa jaringan.
Bridge menghubungkan dua atau lebih jaringan lokal dan memperluas jangkauan jaringan lokal seperti yang dilakukan oleh repeater. Jika dibandingkan dengan repeater, bridge mempunyai kelebihan tambahan. Bridge beroperasi pada layer Data Link serta memiliki kemampuan untuk menyaring data yang lewat dengan cara membaca alamat MAC dari sumber dan tujuan paket data. Oleh karena itu, selain menguatkan sinyal, bridge juga mengatur lalu lintas data. Bridge dapat mengirimkan dan menerima transimisi seperti halnya node- node lain, tetapi tidak berfungsi sama dengan node normal Salah satu tujuan penggunaan bridge adalah mengurangi lalu lintas data yang tidak perlu dari kedua segmen jaringan lokal yang digabung. Hal ini dilakukan dengan cara memeriksa setiap alamat tujuan frame sebelum memutuskan bagaimana menanganinya. Sebagai contoh, data dikirim dari node D. Jika alamat tujuan adalah node A atau B (segmen 1) dan tidak perlu diketahui oleh node lain di segmen 2, bridge tidak melakukan apa-apa termasuk menyaring atau menghentikan paket yang dikirim. Sebaliknya, jika tujuan dari paket data adalah station E atau station F, bridge akan mentransmisikan atau meneruskan paket data ke segmen 2. Dengan cara meneruskan paket dari segmen 1 ke 2, bridge telah memungkinkan node dari segmen 1 berkomunikasi dengan station di segmen 2. Sebaliknya, dengan menyaring paket dari segmen 1 ke segmen 2, bridge mengurangi lalu lintas data yang tidak perlu dan mengurangi kemungkinan terjadinya tabrakan data, serta pada saat yang sama memungkinkan terjadinya komunikasi antar-node yang ada di segmen 2. Cara ini memungkinkan terjadinya komunikasi secara simultan antar-node yang berada di segmen jaringan yang berbeda.
(8) Switch
Switch adalah perangkat fundamental lain yang digunakan di banyak jaringan karena kemampuannya untuk membuat berbagai pekerjaan di jaringan menjadi lebih cepat. Switch memungkinkan antar-node yang berbeda dalam jaringan untuk berkomunikasi secara langsung dengan cara yang halus dan efisien.
Switch mempunyai kemampuan untuk mengatur transmisi data dalam jaringan. Bayangkan jika kita sedang berkendara di jalan raya, kemudian tiba di persimpangan jalan, setiap pengendara harus menunggu giliran agar tidak terjadi tabrakan. Bagaimana jika persimpangan tersebut tidak terdiri atas empat jalan yang saling memotong, tetapi puluhan jalan raya yang saling memotong di satu titik? Apa yang akan terjadi? Hal yang sama terjadi pada transmisi data di dalam jaringan. Semakin padat traffic data, potensi terjadinya tabrakan di antara paket data yang dikirim akan semakin besar. Switch bekerja untuk mengatur agar tabrakan antara paket-paket data tidak terjadi.
Perbedaan utama antara hub dan switch adalah cara node yang terhubung ke hub atau switch dalam berbagi bandwidth. Pada hub, bandwidth yang ada akan dibagi dan digunakan sendiri oleh setiap node. Sebagai contoh, jika ada 10 node yang terhubung ke hub dengan kecepatan 10 Mbps, satu node hanya dapat menggunakan bagiannya sendiri dari pembagian
10 Mbps tersebut. tidak peduli apakah node yang lain sedang menggunakan atau tidak bagian mereka. Sebaliknya, pada Switch, satu node dapat saja menggunakan seluruh bandwitdh yang ada jika tidak sedang digunakan oleh node yang lain.
(9) Router
Router adalah perangkat keras jaringan yang digunakan untuk menghubungkan beberapa jaringan. Berbeda dengan hub, repeater, dan switch, router memiliki kemampuan untuk memeriksa setiap paket data yang melewatinya dan memutuskan ke arah mana paket data tersebut harus diarahkan. Hal ini dapat dilakukan karena router mempunyai dua informasi penting, yaitu kumpulan alamat dan struktur jaringan dalam bentuk tabel konfigurasi. Pada router kecil yang digunakan pada LAN, tabel konfigurasi dapat berbentuk sederhana yang terdiri atas beberapa baris. Sebaliknya, pada router sangat besar yang menangani koneksi di backbone internet, tabel konfigurasi data tumbuh menjadi ukuran yang besar dan kompleks.
Ada dua jenis router yang biasa digunakan, yaitu router dedicated yang merupakan keluaran dari pabrik dan router PC. Router dedicated adalah perangkat yang dibuat khusus untuk bekerja dan berfungsi sebagai router. Adapun router PC adalah komputer personal yang difungsikan menjadi router.
Router mempunyai dua tanggung jawab yang terpisah, tetapi masih berkaitan, yaitu sebagai berikut.
Router memastikan agar data tidak bergerak/berpindah ke tempat lain yang tidak perlu. Hal ini penting agar volume data yang besar tidak menyumbat/menghalangi jalur yang dipakai oleh data yang lain.
Router bertanggung jawab untuk memastikan informasi berhasil tiba di komputer tujuan.
Untuk melakukan dua tanggung jawab tersebut, satu router bekerja untuk menangani dua jaringan komputer yang terpisah. Router berfungsi menghubungkan dua jaringan yang terpisah, menyampaikan informasi dari satu jaringan ke jaringan yang lain, dan terkadang menerjemahkan berbagai protokol di antara dua jaringan.
Selain itu, router juga berfungsi untuk melindungi satu jaringan dari jaringan yang lain dan mencegah adanya lalu lintas data yang tidak perlu dari satu jaringan ke jaringan yang lain. Ketika jumlah jaringan yang terhubung ke satu jaringan bertambah, maka tabel konfigurasi akan bertambah besar dan daya pemrosesan router juga perlu ditingkatkan. Mengingat Internet merupakan jaringan yang sangat besar, yang terdiri atas jaringan-jaringan yang lebih kecil, maka kebutuhan akan penggunaan router bersifat mutlak.
(10) Backbone
Seperti yang telah dijelaskan sebelumnya, bahwa jaringan internet merupakan kumpulan dari jaringan yang kemudian disatukan oleh koneksi yang sangat besar, yang disebut backbone. Backbone diibaratkan sebagai jalan raya yang sangat besar dengan jalan-jalan yang lebih kecil menyatu kepadanya. Sebagai jalur koneksi yang menyatukan banyak jaringan, backbone diharuskan memiliki kemampuan untuk menangani jutaan lalu lintas data yang dikirimkan pada saat yang bersamaan. Oleh karena itu, backbone membutuhkan router paling besar yang mempunyai kemampuan mengatur data yang sangat andal.
Router yang digunakan untuk menangani lalu lintas data di backbone biasanya mempunyai kemampuan setara dengan superkomputer yang paling kuat di dunia dan didesain untuk memiliki banyak prosesor dengan kecepatan switches yang ekstrem. Sebagai contoh, router seri 12000 yang dikeluarkan oleh Cisco Systems, Inc., perusahaan yang khusus memproduksi perangkat keras jaringan, menggunakan prosesor 200-MHz MIPS R5000, prosesor dengan tipe sama yang digunakan pada komputer yang membuat animasi dan efek spesial yang digunakan di film-film.
(11) Firewall
Firewall adalah perangkat yang dipasang di dalam jaringan komputer sebagai perangkat keamanan. Firewall berfungsi untuk melindungi jaringan dari serangan pihak luar. Firewall bekerja dengan cara menyeleksi semua paket data yang masuk dan keluar dari jaringan yang dilindunginya. Jika paket data yang melalui jaringan dicurigai sebagai paket data yang berbahaya, firewall akan memblok paket data
2. Mekanisme Pengiriman Data
Agar dapat bertukar data, dua komputer harus dapat membangun komunikasi. Komunikasi ini hanya dapat dilakukan dengan menggunakan protokol-protokol yang sama. Protokol adalah aturan-aturan yang membuat dua buah komputer saling mengerti satu dengan yang lain. Protokol dapat juga disebut bahasa komunikasi komputer. Sama halnya seseorang dapat berkomunikasi dengan orang lain jika menggunakan bahasa yang sama, maka komputer juga dapat berkomunikasi satu dengan yang lain jika kedua komputer menggunakan protokol yang sama. Ketika melakukan proses transmisi data, maka protokol-protokol tersebut bekerja dengan peran dan fungsi masing-masing.
Salah satu protokol komunikasi data yang banyak digunakan untuk menangani pengiriman data dalam area yang luas adalah TCP/IP atau Transfer Control Protocol / Internet Protocol. TCP/IP merupakan kumpulan protokol-protokol yang bekerja bersama untuk menangani proses pengiriman data. Setiap protokol mempunyai masing-masing fungsi dan secara keseluruhan dapat memastikan data yang dikirimkan sampai ke alamat dan aplikasi yang benar, dalam keadaan utuh atau tidak rusak.
TCP/IP mempunyai kelebihan, yaitu protokol dapat mengomunikasikan dua komputer yang berbeda jenis dan sistem operasi yang digunakan. TCP/IP memungkinkan komunikasi antara komputer PC dengan Macintosh atau antara sistem operasi Windows dengan Unix atau Linux. TCP/IP terdiri atas empat lapis kumpulan protokol atau biasa disebut dengan istilah layer. Setiap layer mempunyai fungsi masing-masing. Keempat layer kumpulan protokol yang ada di TCP/IP dan fungsi masing-masing protokol adalah sebagai berikut.
a. Application Layer
Layer aplikasi berperan sebagai antarmuka pengguna (user interface) dengan aplikasi yang digunakan dalam sistem Jaringan. Beberapa contoh aplikasi umum yang Anda kenal dan termasuk pada layer ini, di antaranya Hypertext Transfer Protocol (HTTP) yang digunakan untuk aplikasi web, File Transfer Protocol (FTP) yang digunakan untuk pengiriman file, Post Office Protocol 3 (POP3) yang digunakan untuk mengambil email dari server email, Simple Mail Transfer Protocol (SMTP) yang digunakan untuk berkomunikasi dengan server email untuk pengiriman email, dan Simple Network Management Protocol (SNMP) yang digunakan untuk mengelola berbagai perangkat dalam jaringan.
b. Transport Layer
Transport layer berfungsi untuk mengadakan komunikasi end-to-end antara dua host/komputer dalam jaringan. Protokol yang ada pada lapisan ini adalah TCP (Transmission Control Protocol) dan UDP (User Datagram Protocol). TCP menangani komunikasi di antara host dan menyediakan layanan pengendalian aliran data, multiplexing, dan reliabel. Adapun protokol UDP memungkinkan komputer dapat mengirimkan paket data tanpa melakukan komunikasi terlebih dahulu, tetapi cara ini rawan terhadap kegagalan. Biasanya, hanya dipakai untuk mengirimkan pesan-pesan pendek.
c. Internet Layer
Internet layer atau sering disebut juga network layer yang terdiri atas protokol IP, ARP (Address Resolution Protocol) dan ICMP (Internet Control Message Protocol). Protokol IP berfungsi untuk menyampaikan paket data ke alamat yang tepat. ARP berfungsi untuk menemukan alamat hardware dari komputer yang terletak pada jaringan yang sama, sedangkan ICMP digunakan untuk mengirimkan pesan dan melaporkan kegagalan pengiriman data sehingga data yang gagal terkirim akan dikirimkan kembali.
d. Network Access Layer
Network Access Layer digunakan untuk mendefinisikan menghubungkan node ke jaringan fisik dan untuk mengirimkan protokol dan perangkat keras yang dibutuhkan untuk data melalui jaringan fisik tersebut. Paket data dikirimkan dari Internet Layer ke Network Access Layer untuk dikirimkan berupa node dalam jaringan sendiri atau sebuah router untuk dilanjutkan ke tujuan berikutnya. ke jaringan fisik. Tujuan dari paket data tersebut dapat
sedangkan Network Acces Layer hanya pada lapisan fisik terbatas saja. Network Access Layer terdiri atas sejumlah protokol seperti Ethernet. Point-to-Point Protocol (PPP). Internet layer memiliki view atas keseluruhan jaringan, dan mengirimkan paket data. dan Frame Relay. Network Access Layer menggunakan sebuah alamat fisik untuk mengidentifikasi sebuah node
Setiap komputer yang terhubung ke jaringan akan memiliki alamat logika yang disebut dengan alamat IP dan alamat fisik. Alamat IP menentukan posisi komputer dalam jaringan, yaitu diberikan atau disediakan oleh penyedia layanan Internet. Anda dapat mengetahui alamat IP komputer dengan cara menjalankan Command Prompt dari tombol Start, kemudian jalankan aplikasi ipconfig.
perangkat yang digunakan di komputer untuk terhubung Sebaliknya, alamat fisik berhubungan dengan ke jaringan. Alamat tersebut bersifat unik dan menjadi milik perangkat tersebut yang terhubung ke kabel jaringan. Sebagai contoh, jika kita mempunyai komputer desktop yang mempunyai sebuah NIC, NIC tersebut mempunyai sebuah alamat fisik yang unik, yang disimpan secara permanen dalam sebuah lokasi memori khusus. Alamat fisik ini disebut juga dengan alamat MAC, yang terdiri atas dua bagian dengan masing-masing panjang 3 byte, yaitu 3 byte pertama adalah identitas pembuat NIC dan 3 byte berikutnya adalah nomor seri dari NIC tersebut.
Pengiriman data melalui jaringan internet dilakukan dengan mekanisme yang disebut packet-switching network. Switch akan membuat koneksi di antara dua segmen untuk jangka waktu yang cukup untuk mengirimkan sebuah paket data. Pada mekanisme pengiriman ini, file data akan dipecah-pecah terlebih dahulu menjadi paket-paket dengan panjang sekitar 1.500 byte. Sebelum dikirimkan melalui jaringan, setiap protokol akan menambahkan informasi pada setiap paket data sebelum meneruskan paket data tersebut ke layer di bawahnya. Gambar 3.22 Menampilkan alamat IP komputer.
Setiap paket kemudian dibungkus dengan cara menambahkan sebuah header. Proses penambahan header disebut dengan istilah enkapsulasi (encapsulation). Header adalah informasi yang ditambahkan ke setiap paket data penerima, dan posisi paket di dalam keseluruhan data yang dikirimkan. Melalui informasi-informasi yang ada di header, komputer penerima dapat memastikan bahwa semua paket telah tiba dalam keadaan utuh atau belum, dan paket-paket data siap disatukan kembali. yang mencakup informasi tentang alamat pengirim, alamat
Setiap paket data kemudian dikirimkan ke komputer tujuan melalui rute terbaik yang tersedia. Paket-paket yang dikirim dapat saja menggunakan rute yang sama ataupun berbeda tergantung kondisi jaringan yang dilalui oleh rute tersebut. Mekanisme pengiriman data dalam bentuk paket tersebut mempunyai dua keuntungan, yaitu sebagai berikut.
a. Jaringan dapat menyeimbangkan beban dari berbagai perangkat yang dilalui oleh paket-paket data yang dikirimkan berdasarkan hitungan waktu milisekon per milisekon.
b. Jika terjadi permasalahan di salah satu perangkat yang dilalui sebagai rute yang dipilih, pengiriman paket data dapat dialihkan melalui rute lain di sekitar perangkat yang bermasalah. Jadi, dapat dipastikan semua paket data tiba di tujuan.
Ketika data dikirimkan, router akan melihat alamat komputer tujuan serta mencari dan menjaga jalur lalu lintas data dari komputer pengirim ke komputer tujuan. Sebaliknya, jika data dikirimkan ke komputer di jaringan LAN yang berbeda, router akan mengirimkan data ke LAN yang dituju untuk kemudian ditangani oleh router yang ada di LAN tujuan.
Agar dapat bekerja dengan baik, sebuah router harus dapat memutuskan ke mana data harus dikirimkan. Hal ini dapat dilakukan dengan menggunakan perangkat yang disebut dengan tabel konfigurasi (configuration table). Tabel konfigurasi membuat berbagai informasi, yaitu sebagai berikut.
a. Informasi yang memuat koneksi mana yang akan mengarah ke kumpulan alamat tujuan.
b. Koneksi-koneksi mana yang diprioritaskan untuk digunakan.
c. Aturan yang digunakan untuk menangani kasus-kasus rutin dan khusus yang ada di lalu lintas jaringan.
3. Menelusuri Paket Data
Jika Anda menggunakan sistem operasi Windows, Anda dapat menelusuri jumlah router yang terlibat ketika Anda mengirimkan paket data dari komputer Anda ke komputer tujuan atau sebaliknya. Hal ini dapat dilakukan dengan menggunakan perintah Trace Route yang disediakan Windows. Langkah-langkahnya adalah sebagai berikut.
(1) Pada kotak pencarian yang ada di taskbar, ketik Command Prompt, untuk menjalankan program tersebut.
(2) Ketik 'cd\' untuk keluar dari semua direktori.
(3) Jalankan program Trace Route untuk menelusuri router dengan cara mengetik 'tracert' dan alamat tujuan.
Gambar berikut menunjukkan cara menelusuri jumlah router yang ada di antara komputer yang digunakan (lokasi di Taoyuan Taiwan) dengan website Amazon. Cobalah lakukan hal yang sama untuk beberapa alamat website yang ada di luar negeri dengan yang di dalarn negeri Apakah ada perbedaan langkah-langkah yang dibutuhkan untuk menelusuri komputer tujuan?
4. Masalah Trafik dalam Jaringan
Oleh karena kebutuhan jaringan yang semakin luas, sering kali muncul berbagai permasalahan. Hal itu terjadi karena pada saat dibangun, jangkauan jaringan masih kecil dan node-node dihubungkan dengan menggunakan hub. Ketika jaringan bertumbuh menjadi lebih besar, ada beberapa masalah potensial yang muncul karena penggunaan konfigurasi tersebut, di antaranya sebagai berikut.
a. Scalability
Pada jaringan hub, penggunaan bandwidth dengan cara berbagi yang dilakukan secara terbatas membuat pertumbuhan jaringan secara signifikan sulit dilakukan tanpa mengorbankan kinerja. Aplikasi-aplikasi dan data yang digunakan saat ini membutuhkan bandwitdh yang lebih besar dibandingkan sebelumnya. Oleh karena itu, sering kall sebuah jaringan harus didesain ulang untuk mengakomodasi kebutuhan pertumbuhan jaringan yang lebih besar.
b. Latency
Latency adalah waktu yang dibutuhkan oleh suatu paket untuk tiba di tujuan. Mengingat setiap node di dalam jaringan berbasis hub harus menunggu kesempatan untuk mengirimkan sebuah paket agar menghindari tabrakan, latensi akan bertambah seiring bertambahnya node dalam jaringan. Adapun jika seseorang mengirimkan file yang besar melalui jaringan, node-node yang lain harus menunggu giliran untuk mengirimkan paket mereka. Oleh karena itu, pertumbuhan node dalam jaringan akan meningkatkan latensi dari jaringan tersebut.
c. Kegagalan Jaringan
Dalam jaringan, permasalahan satu perangkat pada suatu hub dapat menyebabkan masalah pada perangkat lain yang terhubung dengan hub tersebut. Hal ini disebabkan pengaturan kecepatan yang tidak tepat (misalnya mengatur kecepatan 100 Mbps pada sebuah hub 10 Mbps) atau broadcast yang berlebihan. Untuk mengatasi permasalahan tersebut switch dapat digunakan untuk mengatur batas level broadcast.
d. Tabrakan Antarpaket Data
Ethernet digunakan untuk proses yang disebut CSMA/CD (Carrier Sense Multiple Access with Collision Detection) untuk berkomunikasi dalam jaringan. Melalui proses CSMA/CD, sebuah node tidak akan mengirimkan sebuah paket kecuali didapati traffic data di jaringan dalam keadaan bersih. Jika dua node mengirimkan data pada saat yang bersamaan, tabrakan akan terjadi dan paket data akan hilang. Jika hal ini terjadi, kedua node akan menunggu dalam waktu acak, kemudian mentransmisikan ulang paket-paket data tersebut. Bagian jaringan di mana kemungkinan paket-paket data dari dua atau lebih node saling mengganggu satu dengan yang lain dipertimbangkan menjadi bagian dari domain tabrakan yang sama. Jaringan dengan jumlah node yang besar pada segmen yang sama akan sering menimbulkan banyak tabrakan.
A. Berbagai Algoritme untuk Solusi Masalah
Di era digital saat ini, semakin banyak aplikasi komputer yang digunakan untuk menyelesaikan berbagai persoalan di berbagai bidang. Oleh karena itu, semakin banyak programmer-programmer komputer yang dibuat dengan tujuan memberikan solusi untuk suatu persoalan. Solusi berbasis program komputer tersebut dibuat dengan menerapkan berbagai algoritme.
Algoritme komputer dikembangkan untuk menjalankan proses yang akan menjadi sebuah solusi yang optimal. Semakin banyak jenis persoalan yang harus diselesaikan, maka semakin banyak juga algoritme yang dikembangkan. Di subbab ini akan dibahas beberapa jenis algoritme yang umum digunakan dalam bidang komputer dan bagaimana algoritme tersebut dapat digunakan untuk membuat suatu solusi yang dapat menyelesaikan suatu permasalahan.
1. Hubungan Masalah, Algoritme, dan Solusi
Misalkan saudara Anda yang tinggal di Jakarta akan berulang tahun. Sementara, Anda tinggal di Bandung. Anda sudah membelikan hadiah yang spesial untuk hadiah ulang tahun saudara Anda tersebut. Masalahnya, bagaimana cara mengirimkan atau menyampaikan hadiah ulang tahun tersebut kepadanya? Karena besok saudara Anda di hari ulang tahunnya. Akan ada beberapa hal yang terpikirkan oleh Anda.
(1) Anda akan menggunakan jasa pengiriman kilat untuk mengirimkan hadiah tersebut dengan jaminan 1 hari sampai. Sehingga, Anda dapat mengirimkan kado sehari sebelumnya.
(2) Dengan bantuan orang tua, Anda dapat menyewa kendaraan dan jasa sopir untuk mengantarkan hadiah tersebut ke rumah saudara Anda.
(3) Dengan bantuan orang tua, Anda dapat menyewa jasa seorang sopir untuk mengantarkan kado tersebut di hari ulang tahunnya dengan menggunakan mobil orang tua Anda.
(4) Bersama orang tua, Anda pergi menggunakan mobil dan mengantar hadiah tersebut kepada saudara Anda di hari ulang tahunnya.
(5) Anda mengirimkan hadiah tersebut melalui layanan travel Bandung–Jakarta yang menyediakan layanan pengiriman barang. Anda dapat menggunakan travel dengan tujuan yang paling dekat dengan alamatnya. Kemudian, dia akan mengambil hadiah tersebut di pool travel tersebut.
Setelah mempertimbangkan semua pilihan tersebut, ternyata ketika Anda memilih travel, hari ulang tahun saudara Anda bertepatan dengan hari libur. Akhirnya, Anda memutuskan untuk mengantarkan hadiah ulang tahun tersebut bersama orang tua Anda, sekaligus memberikan kejutan kepadanya.
Cerita di atas merupakan ilustrasi yang cocok untuk menjelaskan, apa yang dimaksud dengan masalah, perangkat bantu (tools), algoritme, dan solusi. Masalah dapat didefinisikan sebagai kondisi yang tidak diinginkan atau tidak menyenangkan atau sesuatu yang harus diselesaikan. Pada kasus di atas, masalah adalah bagaimana mengantar hadiah ke alamat saudara Anda di Jakarta.
Pada kasus di atas, ada beberapa perangkat bantu yang dapat digunakan, di antaranya jasa pengiriman, jasa penyewaan mobil dan sopir, mobil pribadi, dan jasa pengiriman travel. Perangkat bantu ini dapat dipilih untuk menyelesaikan masalah yang sedang dihadapi. Perangkat bantu yang Anda pilih untuk menyusun rencana penyelesaian masalah. Rencana penyelesaian masalah disebut dengan algoritme. Algoritme adalah prosedur atau cara yang digunakan untuk menyelesaikan suatu permasalahan. Pada contoh tersebut, telah disusun lima algoritme yang dapat digunakan untuk menyelesaikan masalah.
Dari kelima algoritme yang direncanakan, kemudian Anda memilih algoritme keempat atau mengantarkan sendiri sebagai solusi dari permasalahan Anda. Solusi dapat didefinisikan sebagai proses atau tindakan yang memecahkan masalah. Algoritme bukan merupakan solusi, melainkan hanya berupa rencana solusi. Algoritme akan menjadi solusi ketika algoritme tersebut dijalankan (diimplementasikan) dan tepat menyelesaikan permasalahan yang sedang dihadapi.
Masalah yang diselesaikan dengan menggunakan bantuan komputer (berbasis komputer) juga menggunakan prinsip yang sama seperti penyelesaian masalah di atas. Anda akan memiliki berbagai perangkat yang dapat digunakan sebagai tools:
(1) Komputer berfungsi sebagai perangkat bantu.
(2) Algoritme merupakan sebuah rencana yang akan dijalankan untuk menyelesaikan sebuah permasalahan. Algoritme didesain oleh seseorang yang ahli membuat algoritme.
(3)
Algoritme harus diterjemahkan menjadi kode program dan menghasilkan sebuah program komputer. Hal tersebut dilakukan dengan aplikasi pemrograman atau kompiler. Orang yang ahli menerjemahkan algoritme ke dalam bahasa pemrograman adalah programmer. Umumnya programmer juga ahli membuat algoritme.
(4) Program komputer kemudian dijalankan dan dari proses tersebut dihasilkan solusi dari masalah yang ada.
Algoritme untuk masalah sehari-hari mempunyai analogi dengan algoritme untuk masalah yang diselesaikan menggunakan bantuan komputer. Meskipun demikian, dalam beberapa hal memiliki perbedaan. Sebagai manusia, permasalahan sehari-hari tidak hanya melibatkan perhitungan dan logika matematika serta ilmu sains, tetapi jauh lebih kompleks karena seringkali melibatkan emosi, sosial, budaya, dan rasa kemanusiaan. Namun terlepas dari itu, beberapa masalah sehari-hari seringkali dapat diselesaikan dengan bantuan komputer. Ketika algoritme didesain untuk solusi berbasis komputer, maka algoritme harus disusun dengan menggunakan prinsip-prinsip berpikir komputasional.
2. Membuat Algoritme
Algoritme merupakan cara untuk menyelesaikan masalah. Oleh karena itu, algoritme merupakan rencana untuk memecahkan persoalan. Sebagai rencana solusi, algoritme dapat dituliskan dengan berbagai cara, baik menggunakan bahasa formal, menggunakan grafik, maupun menggunakan pseudocode. Hampir semua algoritme dapat didesain sesuai dengan programmer. Hal yang penting adalah algoritme dapat menggambarkan dengan baik rencana solusi yang akan diimplementasikan.
Ada beberapa langkah penting yang dilakukan ketika mengembangkan algoritme sebagai rencana untuk menyelesaikan masalah. Selanjutnya, algoritme tersebut diterjemahkan menjadi kode program menggunakan bahasa pemrograman yang dipilih. Proses mengembangkan algoritme dapat dilakukan dengan langkah-langkah berikut:
(1) Identifikasi dan deskripsi masalah
(2) Analisis masalah
(3) Membangun algoritme level tinggi
(4) Menambahkan detail pada algoritme
(5) Memeriksa algoritme
a. Identifikasi dan Deskripsikan Masalah
membangun algoritme adalah gagal menemukan masalah yang sebenarnya. Akibatnya, solusi yang dihasilkan menjadi tidak tepat.
Setelah masalah diidentifikasi dengan benar, maka selanjutnya masalah tersebut perlu dideskripsikan dengan jelas. Jika pemilik masalah adalah orang lain dan Anda hanya membantu untuk mencari solusi, maka perlu dilakukan diskusi agar tidak ada perbedaan penafsiran dari masalah yang ada.
b. Analisis Masalah
Langkah berikutnya adalah menganalisis masalah. Pada tahap ini, perlu pemahaman kondisi yang ada di awal dan kondisi di mana masalah diselesaikan. Ketika menentukan kondisi awal, ada beberapa hal yang perlu ditanyakan dan dicari jawabannya, antara lain:
(1) Data-data apa saja yang tersedia?
(2) Di mana data-data tersebut, bagaimana mendapatkannya?
(3) Rumus apa saja yang perlu digunakan, yang berhubungan dengan masalah?
(4) Aturan apa saja yang digunakan ketika bekerja dengan data?
(5) Apa hubungan yang terjadi pada nilai-nilai data tertentu?
Ketika menentukan kondisi akhir, kita perlu mendeskripsikan kondisi akhir yang diinginkan dari solusi. Dengan kata lain, bagaimana kita akan tahu kalau masalah sudah diselesaikan. Beberapa pertanyaan yang mungkin dapat digunakan untuk menentukan kondisi akhir, antara lain:
(1) Apa fakta baru yang akan dimiliki, yang membedakan dengan kondisi awal?
(2) Apa hal-hal yang akan diselesaikan?
(3) Perubahan apa yang akan berubah?
(4) Apa keputusan yang akan dibuat pada masalah yang ditemukan?
(5) Apa hal-hal yang tidak ada lagi?
---
3. Membangun algoritme level tinggi
Seperti yang telah disinggung di atas, algoritme adalah sebuah rencana untuk menyelesaikan sebuah masalah. Namun, sebuah rencana dapat dibagi ke dalam beberapa tingkatan detail. Ketika membuat sebuah rencana, disarankan untuk terlebih dahulu membuat dalam level tinggi yang memuat bagian-bagian utama dalam rencana dan meninggalkan bagian-bagian detail untuk diselesaikan kemudian.
Sebagai contoh, misalkan kita ingin membuat rencana untuk masalah sehari-hari sebagai penjelasan bagaimana membuat sebuah algoritme level tinggi.
Masalah: Anda ingin membeli sesuatu sebagai hadiah ulang tahun untuk saudara Anda, sebut saja Nema yang kuliah di kota lain.
Analisis: Nema suka berolah raga dan Anda akan membelikan sepatu olah raga untuknya.
Algoritme level tinggi untuk masalah tersebut adalah sebagai berikut:
(1) Pergi ke toko sepatu
(2) Pilih sepatu yang sesuai
(3) Beli sepatu
(4) Bungkus sepatu
(5) Pergi ke jasa pengiriman
(6) Kirimkan sepatu
Algoritme di atas merupakan algoritme level tinggi, di mana masih menyisakan berbagai pertanyaan detail yang perlu dijawab, antara lain: Bagaimana cara pergi ke toko sepatu? Kapan pergi ke toko sepatu? Toko sepatu yang mana? Berapa anggaran untuk membeli sepatu? Jasa pengiriman mana yang akan digunakan? dan beberapa hal detail lainnya. Semua detail ini akan diselesaikan pada tahap berikutnya.
---
4. Menambahkan Detail pada Algoritme
Pada materi sebelumnya, algoritme level tinggi sudah menunjukkan langkah-langkah utama yang akan dijalankan untuk menyelesaikan masalah. Tahap selanjutnya adalah menambahkan detail pada langkah-langkah utama tersebut. Pertanyaan yang sering muncul adalah seberapa detail langkah-langkah yang perlu ditambahkan. Sayangnya, tidak ada panduan baku yang menentukan seberapa detail sebuah algoritme harus dibuat. Pertanyaannya adalah siapa atau apa yang akan mengimplementasikan algoritme tersebut. Pada prinsipnya, tuliskan sebuah algoritme sampai yang mengerjakan atau mengimplementasikan algoritme tersebut mengetahui apa yang harus dilakukan, sehingga tidak salah menerjemahkan apa yang diinginkan oleh yang mendesain algoritme.
Sebagai contoh, pada kasus membeli sepatu untuk hadiah ulang tahun Nema. Akan sangat berbeda, detail yang harus direncanakan jika yang membeli sepatu tersebut adalah Anda sendiri, orang tua Anda, sepupu Anda yang kenal Nema, atau teman Anda yang tidak bergaul dekat dengan Nema. Detail dari rencana akan berbeda dan semua itu tergantung seberapa dekat dan kenal orang menjalankan rencana tersebut dengan Nema.
Banyak kasus ketika membuat algoritme program komputer, tahapan pembuatan detail algoritme level tinggi dan algoritme yang lebih detail dibuat dalam satu langkah. Namun, hal ini bergantung pada kasus yang sedang dikerjakan. Pada masalah yang lebih kompleks, algoritme level tinggi akan diterjemahkan menjadi algoritme yang lebih detail dengan beberapa tahapan sampai dinilai cukup. Setiap tahapan akan ditambahkan langkah-langkah yang lebih detail dari level sebelumnya.
5. Memeriksa Algoritme
Langkah terakhir adalah memeriksa ulang algoritme. Pada tahap ini, pertama kita perlu memeriksa langkah demi langkah apa yang dilakukan oleh algoritme yang sudah dirancang untuk memastikan apakah algoritme tersebut akan menyelesaikan masalah atau tidak. Setelah memastikan bahwa algoritme akan mampu menyelesaikan masalah, maka langkah berikutnya adalah memeriksa apakah algoritme dapat menjawab pertanyaan-pertanyaan berikut:
(1) Apakah algoritme dapat menyelesaikan masalah tertentu saja atau dapat menyelesaikan masalah secara umum?
Sebagai contoh, jika kita membuat algoritme yang akan digunakan untuk menghitung luas segitiga, apakah algoritme tersebut dapat menyelesaikan masalah segitiga alas × tinggi × 0,5 atau hanya menyelesaikan masalah untuk nilai alas dan tinggi yang tertentu saja.
(2) Dapatkah algoritme dibuat menjadi lebih sederhana?
Misalnya:
“Keliling persegi panjang = panjang + lebar + panjang + lebar.”
Fungsi tersebut dapat dibuat menjadi lebih sederhana:
“Keliling persegi panjang = 2 × (panjang + lebar)”.
(3) Apakah solusi yang diberikan algoritme dapat digunakan juga untuk masalah yang lain? Apakah solusi ini dapat serupa dengan solusi pada masalah lain? Apa persamaan dari solusi ini dengan solusi masalah lain? Apa perbedaan dari solusi ini dengan solusi masalah lain?
Teks Halaman 2 — Contoh Kasus
Contoh Kasus
Seekor tikus ingin mengambil keju yang ada di posisi tertentu seperti yang ditunjukkan oleh Gambar 2.2. Keju tersebut akan dibawa ke sarangnya untuk memberi makan anak-anaknya. Tikus tersebut berjaga di depan sarangnya. Untuk melakukan hal tersebut, induk tikus dapat berjalan ke depan, belok kiri, belok kanan, mengambil keju, kemudian pergi ke sarangnya. Langkah-langkah penyelesaian masalah tersebut ditunjukkan oleh infografis berikut.
Infografis Langkah-langkah
01 – Identifikasi dan Deskripsikan masalah
Hal pertama yang harus dilakukan untuk membangun algoritme untuk kasus di atas adalah membuat statemen masalah.
02 – Analisis masalah
Selanjutnya, kita dapat menganalisis masalah dan menemukan beberapa hal penting, seperti posisi keju, posisi rumah, job setelah memberikan keju, dan lintasan yang akan ditempuh.
03 – Menuliskan algoritme level tinggi
Tuliskan hal-hal yang perlu dilakukan oleh tikus, seperti ambil keju, bawa ke rumah, dan pergi ke sarang rumah.
04 – Menuliskan algoritme secara detail
Algoritme yang sudah ada dibuat menjadi lebih detail. Pada tahap ini dapat dilakukan proses berulang-ulang (iterasi) sampai algoritme menjadi sedetail mungkin.
05 – Memeriksa algoritme
Langkah terakhir dari sebuah proses menyusun algoritme adalah memeriksa kembali algoritme yang sudah dibuat.
6. Algoritme Rekursi
Rekursi adalah fungsi yang memanggil dirinya sendiri sebagai subprogram untuk menyelesaikan program yang kompleks. Pada metode perulangan (iterasi), satu proses dapat dilakukan secara berulang-ulang (dalam bentuk perulangan) untuk menyelesaikan suatu masalah. Rekursi bekerja dengan cara berbeda. Rekursi melakukan pendekatan penyelesaian masalah dengan cara membuat suatu fungsi yang menjalankan suatu proses, kemudian proses tersebut dipanggil oleh dirinya sendiri secara berulang-ulang. Proses suatu fungsi memanggil dirinya sendiri dikenal dengan proses rekursif dan fungsi yang memanggil dirinya sendiri disebut dengan fungsi rekursif.
Oleh karena fungsi rekursif memanggil dirinya sendiri, maka ada kemungkinan program akan terjebak dalam sebuah proses fungsi yang memanggil dirinya secara terus-menerus tanpa akhir. Oleh karena itu, ketika membuat sebuah fungsi rekursif, penting bagi seorang programmer untuk memastikan kondisi batas yang akan menghentikan proses rekursif.
1 int recursive_func (int n){
2 . . . . . .
3 . . . . . .
4 recursive_func______
5 . rekursi
6 . . . . . .
7 }
8
9 int main(){
10 . . . . . .
11 . . . . . .
12 recursive_func______
13 }
Gambar 2.4 Cara kerja algoritme rekursi.
Rekursi merupakan pendekatan pemecahan masalah yang lebih efektif dibandingkan dengan pendekatan lainnya. Proses rekursi membagi masalah menjadi bagian-bagian fungsi dan terus memanggil fungsi tersebut. Setiap kali pemanggilan fungsi dilakukan, solusi akhir akan semakin dekat. Setiap kali proses rekursi dilakukan, nilai-nilai disimpan dalam bentuk struktur data stack di memori. Stack adalah rangkaian data yang nilainya dapat dihapus atau digantikan oleh nilai-nilai yang baru setiap kali proses rekursi dijalankan. Saat solusi akhir sudah ditemukan, proses rekursi akan dihentikan.
7. Algoritma Greedy
Kata greedy dalam bahasa Indonesia artinya tamak, sesuatu yang negatif. Namun dalam pemrograman, greedy diartikan sebagai mendapatkan hasil yang maksimal. Algoritme greedy adalah algoritme yang mempunyai pendekatan sederhana dan efisien untuk menyelesaikan permasalahan yang diberikan dengan cara membuat pilihan terbaik setiap waktu, tanpa memikirkan hasil akhir. Ketika bekerja, ada dua
prinsip yang mendasari algoritme greedy, yaitu: (1) jika dalam setiap langkah membuat pilihan terbaik, maka hasil akhir akan memberikan hasil yang terbaik juga,
(2) algoritme greedy tidak mengenal adanya reverse atau mengubah keputusan yang sudah dibuat, karena itu algoritme greedy akan bekerja menyelesaikan permasalahan dari arah atas ke bawah (top-bottom).
Algoritme greedy mudah untuk digambarkan dan populer karena mempunyai kinerja yang lebih baik dibandingkan dengan algoritme yang lain pada kebanyakan kasus. Meskipun demikian, pada beberapa kasus, algoritme greedy tidak memberikan hasil yang baik.
Untuk menjelaskan bagaimana algoritme greedy bekerja, akan digunakan dua contoh kasus. Kasus ini juga akan menjelaskan kepada Anda bahwa algoritme greedy tidak dapat memberikan hasil yang maksimal pada beberapa kasus.
a. Mencari Jumlah Pecahan Minimal
Misalkan Anda pergi berbelanja ke sebuah warung. Total belanja Anda adalah Rp 27.800. Kemudian Anda membayar dengan uang pecahan Rp 100.000. Menurut Anda, berapa Jumlah pecahan uang paling sedikit yang dapat Anda terima, jika pemilik warung memiliki uang pecahan Rp 100.000, Rp 50.000, Rp 20.000, Rp 5.000, Rp 2.000, Rp 1.000, Rp 500, Rp 200, dan Rp 100?
Tujuan dari algoritme adalah mendapatkan uang kembalian dengan jumlah Rp 100.000 Rp 27.800 = Rp 72.200 dengan jumlah pecahan yang paling sedikit. Jika diselesaikan dengan algoritme greedy, program akan bekerja dengan cara mencari pecahan uang yang paling besar (agar jumlah pecahan paling sedikit) untuk mencapai jumlah uang yang harus dikembalikan.
Langkah-langkah penyelesaian yang akan dilakukan oleh algoritma greedy adalah sebagai berikut:
BAB 2
Menerapkan Berpikir Komputasional dalam Pemrograman
01.Dari antara uang pecahan, maka algoritme greedy akan memilih pecahan paling besar yang mendekati jumlah Rp 72.800, dalam hal ini pecahan Rp 50.000.
02.Selanjutnya, dihitung uang yang tersisa adalah Rp 72.800- Rp 50.000 = Rp 22.800. Dengan cara yang sama, algoritme greedy akan memilih pecahan uang paling besar yang mendekat jumlah di atas, yaitu pecahan Rp 20.000,
03.Kembali dihitung uang yang tersisa adalah Rp 22.800-Rp 20.000 Rp 2.800. Algoritme greedy kembali akan memilih pecahan uang paling besar yang mendekat jumlah Rp 2.800, yaitu pecahan Rp 2.000.
04.Uang yang tersisa adalah Rp 800. Algoritme greedy akan memilih pecahan uang paling besar yang mendekati jumlah = Rp 800, yaitu pecahan Rp 500.
05.Uang yang tersisa adalah Rp 300. Selanjutnya, algoritme greedy akan memilih pecahan uang paling besar yang mendekati nilai Rp 300, dalam hal ini pecahan Rp 200.
06.Uang yang tersisa adalah Rp 100. Dan selanjutnya algoritme greedy akan memilih nilai Rp 100 sebagal pilihan pecahan yang terakhir karena setelahnya sisa uang yang harus dikembalikan menjadi Rp 0.
B. Mencari Jalan Terdekat
Misalkan saja Anda mempunyai jalur dari rumah (titik 0) ke sekolah (titik 7) seperti yang ditunjukkan oleh Gambar 2.5 di bawah ini. Jarak antara titik-titik ditunjukkan di gambar. Menggunakan algoritme greedy, manakah jalur yang akan Anda lewati? Apakah jalur yang dipilih menggunakan algoritme greedy tersebut merupakan jalur yang paling optimum?
Pada kasus di atas, tujuan Anda adalah mendapatkan jalur dari rumah (titik 0) ke sekolah (titik 7) dengan jarak terpendek. Algoritme greedy akan bekerja dengan cara sebagai berikut.
(1) Dari titik 0, ada dua jalur pilihan, ke titik 1 dan titik 2. Sesuai prinsipnya, maka algoritme greedy akan memilih ke titik 2 karena jarak ke 2 (5 km) lebih pendek dari jarak ke titik 1 (7 km) .
(2) Dari titik 2, ada dua jalur pilihan, ke 3 dan 6. Algoritme greedy akan memilih ke titik 3, karena jarak ke 3 lebih pendek dibanding jarak ke 6.
(3) Selanjutnya dari 3, algoritme greedy tidak mempunyai pilihan lain, langsung ke titik 7.
Dari kasus di atas, Anda dapat melihat bahwa jalur yang akan dipilih oleh algoritme greedy adalah 0-2-3-7 dengan total jarak 22 km. Apakah menurut Anda algoritme greedy dapat memberikan solusi terbaik? Dapatkah Anda menemukan jalur dengan jarak yang lebih pendek? Jika ya, Jalur manakah yang lebih pendek?
Berdasarkan contoh kasus "Mencari Jumlah Pecahan Minimal" dan "Mencari Jalan Terdekat" Anda dapat memahami bagaimana algoritme greedy bekerja. Selain itu, Anda juga dapat melihat dari kasus di atas bahwa algoritme greedy tidak selalu dapat memberikan solusi terbaik. Oleh karena itu, ketika memilih algoritme untuk menyelesaikan masalah, kita harus memilih algoritme yang sesuai. Dengan kata lain, tidak ada satu algoritme yang dapat menyelesaikan semua persoalan, namun algoritme dibuat berdasarkan persoalan yang akan diselesaikan.
8. ALGORITME PEMROGRAMAN DINAMIS
Algoritme pemrograman dinamis (dynamic programming) adalah sebuah algoritme teknik optimalisasi yang digunakan untuk menyelesaikan masalah kompleks dengan cara memecah-mecah masalah kompleks menjadi masalah yang lebih kecil dan sederhana. Algoritme ini sepintas terlihat sama dengan algoritme divide and conquer, tetapi keduanya memiliki perbedaan. Pada agloritme divide and conquer masalah dipecah dan diselesaikan secara independen kemudian solusi-solusi tersebut dikombinasikan sehingga menjadi satu solusi besar yang utuh. Sedangkan pada algoritme dynamic programming, masalah dipecah-pecah menjadi masalah kecil yang memiliki ketergantungan (keterkaitan) antara yang satu satu dengan yang lain (dependen).
Algoritme pemrograman dinamis digunakan untuk menyelesaikan masalah-masalah optimalisasi. Masalah optimalisasi adalah masalah yang mengharuskan kita untuk menemukan solusi berupa nilai yang paling minimum atau maksimum. Jika memang ada, maka algoritme pemrograman dinamis dipastikan akan dapat menemukan solusi tersebut. Algoritme pemrograman dinamis akan bekerja menyelesaikan setiap sub-masalah yang ada kemudian menyimpan setiap solusi dari sub-masalah yang ditemukan. Hal ini dilakukan untuk menghindari proses komputasi yang berulang pada sub-masalah yang sama.
Cara kerja dari dynamic programming dapat dibagi menjadi tiga tahapan logika.
(1) Memecah masalah. Algoritme akan memecah masalah menjadi sub-masalah yang lebih kecil dan sederhana.
(2) Menyelesaikan masalah. Algoritme kemudian melakukan proses perulangan untuk menyelesaikan sub-masalah. Solusi dari setiap sub-masalah kemudian disimpan. Proses menyimpan solusi dari sub-masalah tersebut dikenal dengan istilah memoization. Setiap solusi dari sub-masalah akan digunakan kembali jika diperlukan ketika harus menyelesaikan masalah yang sama.
(3) Menyelesaikan masalah utama. Sebagai langkah akhir, algoritme akan mengidentifikasi dan menyelesaikan masalah utama.
Untuk menjelaskan bagaimana algoritme pemrograman dinamis bekerja, kita gunakan contoh kasus pada paragraf berikut.
Seorang sales harus berangkat dari kantor dan mengunjungi tiga toko. Setelah mengunjungi ketiga toko tersebut, sales harus kembali ke kantornya. Jika jarak dari masing-masing kantor dan toko diketahui seperti yang ditunjukkan oleh Gambar 2.6, tentukan lintasan yang harus dilalui oleh sales tersebut untuk mendapatkan jarak perjalanan yang paling pendek.
Untuk mencari rangkaian perjalanan seperti di atas, maka langkah pertama yang akan dilakukan oleh algoritme pemrograman dinamis adalah memecah masalah menjadi sub-masalah yang lebih kecil. Dalam hal ini, memperkirakan semua urutan perjalanan yang mungkin, kemudian menghitung jarak tempuh untuk setiap perjalanan. Untuk memudahkan mengidentifikasi semua urutan perjalanan, kita dapat menggunakan diagram pohon keputusan seperti yang ditunjukkan oleh Gambar 2.6 di bawah ini.
Dari diagram pohon keputusan di atas, kita dapat mengidentifikasi urutan perjalanan yang mungkin. Algoritme akan mengidentifikasi semua urutan perjalanan di atas dan kemudian menghitung jarak yang ditempuh masing-masing perjalanan. Hasil perhitungan untuk masing-masing urutan perjalanan adalah sebagai berikut.
(1) Jarak tempuh perjalanan 1-2-3-4-1 = 4+3+1+3 = 11 (2) Jarak tempuh perjalanan 1-2-4-3-1 = 4+5+1+2 = 12
(3) Jarak tempuh perjalanan 1-3-2-4-1 = 2+3+5+3 = 13 (4) Jarak tempuh perjalanan 1-3-4-2-1 = 2+1+5+4 = 12
(5) Jarak tempuh perjalanan 1-4-2-3-1 = 3+5+3+2 = 13
(6) Jarak tempuh perjalanan 1-4-3-2-1 = 3+1+3+4 = 11
Setelah melakukan perhitungan jarak perjalanan untuk semua rangkaian perjalan di atas, algoritme pemrograman dinamis akan menentukan nilai minimum dari seluruh perjalanan. Dari perhitungan jarak di atas, maka diperoleh jarak minimum yang ditempuh adalah 11 dengan urutan perjalanan adalah 1-2-3-4-1 dan 1-4-3-2-1.
*9. Algoritme Divide and Conquer*
Sesuai dengan namanya, algoritme divide and conquer (pecah dan selesaikan) adalah algoritme yang bekerja dengan cara memecah masalah yang besar dan kompleks menjadi bagian-bagian kecil, menyelesaikan masalah tersebut secara independen, kemudian menyatukan solusi-solusinya. Teknik pemecahan masalah ini membuat algoritme divide and conquer mampu menyelesaikan hampir semua masalah dengan baik. Meskipun dalam pencarian solusi sama-sama memecah masalah kompleks menjadi sub masalah yang lebih kecil, algoritme divide and conquer memiliki perbedaan dengan algoritme pemrograman dinamis. Pada algoritme pemrograman dinamis, solusi dari sub masalah digunakan untuk menyelesaikan masalah utama, sedangkan pada algoritme divide and conquer, solusi dari sub masalah merupakan bagian dari solusi masalah utama.
Ketika menyelesaikan masalah, algoritme divide and conquer mempunyai tiga tahapan berikut:
* (1) Memecah masalah (divide).* Pada tahap ini, algoritme memecah masalah menjadi bagian-bagian yang lebih kecil. Dengan demikian, masalah menjadi lebih sederhana dan mudah diselesaikan. Tahapan memecah masalah dapat dilakukan berkali-kali sampai masalah cukup kecil dan sederhana.
*(2) Selesaikan (conquer).* Pada tahap ini, masing- masing masalah diselesaikan secara independen. Jika memungkinkan masalah dapat diselesaikan secara paralel. apar itme dan Sing tan
*(3) Menyatukan solusi.* Pada tahap ini, masing-masing solusi yang diperoleh dari bagian-bagian masalah disatukan sehingga menjadi solusi yang utuh dari keseluruhan masalah yang ada. Algoritme divide and conquer merupakan sebuah algoritme yang handal untuk menyelesaikan berbagai masalah. Oleh karena itu, algoritme divide and conquer banyak diterapkan dalam berbagai kasus. Beberapa contoh kasus yang dapat diselesaikan dengan mengunakan algoritme divide and conquer adalah algoritme yang digunakan pada pengurutan penggabungan (merge sort) dan pencarian biner. Lebih jauh mengenai algoritme merge sort dan pencarian biner serta cara algoritme ini diterapkan dalam pengurutan dan pencarian, sudah dibahas di buku Informatika Kelas X.
GAMBARRR
Gambar 2.8 menunjukkan cara algoritme divide and conquer melakukan pengurutan. Pada tahap pertama, algoritme memecah data menjadi dua kelompok. Selanjutnya, data-data tersebut dipecah kembali menjadi kelompok yang lebih kecil. Data dalam masing-masing kelompok kecil kemudian diurutkan. Selanjutnya, data yang telah diurutkan, disatukan kembali sambil melakukan pengurutan. Hal ini dilakukan sampai seluruh data disatukan dan diurutkan.
Kasus pengurutan di atas merupakan contoh yang dapat menunjukkan cara algoritme divide and conquer bekerja. Anda juga dapat melihat proses memecah masalah, menyelesaikan masalah, dan menyatukan solusi-solusi tersebut.
10. Algoritme Runut Balik
Algoritme runut balik (backtracking) adalah algoritme yang bekerja dengan cara menguji setiap kemungkinan solusi sampai ditemukan solusi yang terbaik dari sebuah permasalahan. Disebut runut balik karena algoritme ini akan melakukan perunutan balik ke tingkat keadaan sebelumnya, jika ditemukan penelusuran yang dilakukan bukan solusi yang diinginkan.
Untuk menjelaskan bagaimana algoritme runut balik bekerja, misalkan saja kita mencari jalur terpendek dari titik O ke titik 7 seperti yang ditunjukkan oleh Gambar 2.5. Untuk mencari mana jalur terpendek, kita dapat menampilkan daftar jalur dalam bentuk diagram pohon keputusan seperti yang ditunjukkan oleh Gambar 2.9.
Untuk mencari jalur terpendek pada kasus di atas, maka algoritme runut balik akan bekerja dengan langkah berikut.
(1) Untuk mencari solusi, misalkan saja algoritme memulai penelusuran dari titik 0 ke 2 ke 6 dan 7. Setiap algoritme melakukan penelusuran dari satu titik ke titik berikutnya, algoritme akan menghitung jarak yang sudah dilalui. Pada penelusuran 0-2-6-7 algoritme menghitung jarak yang ditempuh adalah 16.
(2) Selanjutnya, algoritme akan melakukan perunutan balik dari 7 ke 6 dan ke 5. Dari 5 algoritme akan melakukan penelusuran ke 3 kemudian ke 7. Algoritme akan menghitung jarak dari 0 ke 7 dan diperoleh jarak sebesar 22. Selanjutnya, algoritme akan membandingkan jarak 0-2-3-7 dan 0-2-6-7 dan menyimpan jarak yang terkecil, dalam hal ini sebesar 16 sebagai solusi sementara. Pada penelusuran 0-2-3-7, algoritme tidak akan menelusuri kembali 0 ke 2 karena sudah dilakukan sebelumnya pada saat melakukan penelusuran 0-2-6-7.
(3) Selanjutnya, algoritme akan melakukan penelusuran balik dari 7 kembali ke 0.
(4) Selanjutnya, algoritme akan melakukan penelusuran dan 0 ke 1, ke 4, dan ke 7, sehingga didapatkan jarak tempuh 0-1-4-7 adalah 15, Jarak tersebut kemudian dibandingkan dengan jarak minimum yang sudah disimpan sebelumnya Oleh karena jarak yang diperoleh lebih kecil dari jarak sebelumnya, solusi sementara diganti menjadi 15.
(5) Selanjutnya, algoritme melakukan penelusuran balik dari 7 ke 4 dan ke 1. Kemudian, penelusuran dilanjutkan ke 5 dan diperoleh jarak dari 0-1-5 sebesar 18, penelusuran dihentikan karena jarak yang diperoleh sudah lebih diperoleh dan hal ini memastikan bahwa 0-1-5-7 bukanlah sebuah solusi.
Dari kasus di atas, Anda dapat melihat bagaimana algoritme runut balik bekerja dan menemukan sebuah solusi.
Selain dapat menyelesaikan kasus mencari jalur terpendek seperti di atas, algoritme runut balik juga sering digunakan pada kasus puzzle n-queens. Puzzle ini meminta algoritme untuk menempatkan n buah bidak queen (ratu) di sebuah papan catur berukuran n x n. Bidak queen adalah bidak dari catur yang dapat bergerak dalam arah horizontal, vertikal, dan diagonal. Puzzle n-queens mengharuskan Anda menyusun n buah bidak catur di papan catur berukuran n x n dan tidak dapat saling menyerang. Oleh karena itu, Anda tidak boleh menempatkan bidak queen dalam arah horizontal, vertikal, atau diagonal yang sama.
Sebagai contoh, misalkan saja kita mempunyai 4 bidak queen yang akan ditempatkan di papan catur 4 x 4. Oleh karena bidak queen dapat bergerak dalam arah horizontal, vertikal, dan diagonal, maka setiap kolom dan baris hanya dapat ditempati oleh satu queen. Selain itu, setiap queen harus ditempatkan sedemikian rupa agar tidak berada dalam satu diagonal yang sama.
Untuk kasus puzzle 4 bidak queen, algoritme runut balik akan bekerja sebagai berikut:
(1) Sebagai langkah awal, algoritme akan menempatkan queen yang pertama di posisi A1 adalah di B3.
(2) Selanjutnya, algoritme akan mengecek posisi queen berikutnya di kolom B, ditemukan posisi yang mungkin
(3) Selanjutnya, algoritme akan mengecek posisi queen berikutnya di kolom C, ditemukan tidak ada posisi yang mungkin di kolom C. Kesimpulannya, bahwa posisi A1 dan B3 bukanlah sebuah solusi di A2.
(4) Algoritme akan mencoba posisi yang lain, dalam hal ini
(5) Selanjutnya, algoritme akan mengecek posisi queen berikutnya di kolom B, ditemukan posisi yang mungkin adalah di B4.
(6) Selanjutnya, algoritme akan mengecek posisi queen berikutnya di kolom C, ditemukan posisi yang mungkin adalah di C1.
(7) Selanjutnya, algoritme akan mengecek posisi queen berikutnya di kolom D, ditemukan posisi yang mungkin adalah di D3.
(8) Algoritme menyimpulkan bahwa posisi A2, B4, C1, dan D3 merupakan sebuah solusi.
Selain posisi A2-B4-C1-D3, puzzle di atas masih memiliki satu solusi yang lain. Coba Anda temukan. Dapatkah Anda menemukannya? Jika ya, di manakah posisi itu?
Menggunakan contoh kasus mencari jalur terpendek dan puzzle n-queens di atas, Anda dapat melihat bagaimana algoritme runut balik bekerja. Apakah Anda dapat menjelaskan langkah-langkah bagaimana algoritme runut balik bekerja jika algoritme tersebut digunakan pada kasus yang lain?
Berbagai algoritme di atas mempunyai strategi pendekatan dan penyelesaian masalah yang berbeda-beda serta memiliki kelebihan dan kekurangannya masing-masing. Oleh karena itu, sebuah algoritme dapat saja cocok digunakan untuk menyelesaikan masalah yang satu, tetapi tidak cocok digunakan untuk menyelesaikan masalah yang lain. Oleh sebab itu, seorang programmer harus memiliki kemampuan untuk memilih strategi pendekatan masalah yang baik, sehingga mampu memilih algoritme yang tepat.
*11. Algoritme untuk Enkripsi Data*
Salah satu cara untuk menjaga keamanan data adal dengan menggunakan teknologi enkripsi. Enkripsi data ada oleh orang lain. Hal ini dilakukan sebelum menyimpari atau proses menyandikan data sehingga tidak dapat dimengen mengirimkan data melalui jaringan. Dengan demikian, jika adu akses secara llegal terhadap data tersebut ketika data tersebar ditempatkan di ruang penyimpanan atau ketika ditransmisikar melalui jaringan, data tersebut tidak dapat dimengerti olen pelaku akses ilegal. Dengan demikian, kerahasiaan data tetap terjaga. Enkripsi data dilakukan dengan menerapkan algoritme enkripsi. Seiring dengan perkembangan teknologi informatika dan kebutuhan akan keamanan data, berbagai algoritme untuk enkripsi data dikembangkan. Saat ini ada beberapa algoritme enkripsi yang umum digunakan untuk menyandikan data. a. Triple DES Triple DES adalah Algoritme enkripsi yang didesain untuk menggantikan algoritme pendahulunya, data encryption standard (DES), yang lebih mudah dipecahkan oleh para hacker. Triple DES pernah direkomendasikan sebagai algoritme enkripsi standar dan menjadi algoritme yang digunakan secara luas sebagai teknologi keamanan data. Triple DES menggunakan tiga kunci individu yang masing- masing terdiri dari 56 bit. Total panjang kunci jika ditambahkan akan menjadi 168 bit, walaupun menurut para ahli kekuatan kunci tersebut setara dengan kunci 112 bit. Meskipun algoritme Triple DES sudah mulai ditinggalkan, namun algoritme ini masih digunakan sebagai solusi enkripsi perangkat keras yang digunakan pada beberapa layanan keuangan dan industri lainnya.
b. RSA
adalah algoritme enkripsi yang menggunakan kunci publik dan digunakan sebagai standar untuk mengenkripsi data yang akan dikirimkan melalui Internet. RSA merupakan gabungan dari inisial nama penemunya: Ronald Rivest. Adi Shamir, dan Leonard Adleman. Tidak seperti Triple DES, RSA merupakan algoritme asimetris karena menggunakan sepasang kunci ketika melakukan proses enkripsi dan dekripsi. Pengirim data akan mendapatkan kunci publik yang digunakan untuk mengenkripsi data, sedangkan penerima data akan menerima kunci pribadi (private) yang digunakan untuk mendekripsi data. Data yang dienkripsi menggunakan RSA dianggap relatif aman karena hacker akan membutuhkan waktu yang lama dan sumber daya yang handal untuk memecahkan enkripsi tersebut.
c. Blowfish
Algoritme ini menggunakan cipher simetris yang dipecah Algoritme blowfish didesain untuk menggantikan DES. menjadi blok-blok 64 bit dan mengenkripsi masing-masing secara terpisah. Algoritme ini dikenal karena kecepatannya yang baik dan keefektifannya. Para pengembang perangkat lunak banyak memanfaatkan algoritme ini yang tersedia dalam bentuk domain publik.
d. Twofish
Algoritme ini menggunakan pesan simetris dengan panjang Algoritme twofish merupakan versi lanjutan dari blowfish. 256 bits dan menggunakan hanya satu kunci. Algoritme ini memiliki kecepatan yang sangat baik dan ideal digunakan untuk enkripsi pada perangkat keras dan perangkat lunak. Algoritme ini juga tersedia dalam domain publik.
e. AES
Algoritme advanced encryption standard (AES) merupakan algoritme enkripsi yang terpercaya dan digunakan sebagai algoritme standar oleh pemerintah Amerika Serikat dan berbagai organisasi besar lainnya. Meskipun algoritme ini sangat efisien jika digunakan pada format 128 bit, tetapi AES juga menggunakan kunci 192 dan 256 bit untuk enkripsi-enkripsi dengan tujuan tertentu. Algoritme AES tahan terhadap sebagian besar serangan, kecuali serangan brute force, yang mencoba menguraikan pesan menggunakan semua kemungkinan kombinasi dalam cipher 128, 192, atau 256-bit.Isu keamanan akan tetap menjadi isu utama dalam perkembangan teknologi informasi sampai kapan pun. Oleh karena itu, tidak heran jika dalam setiap perkembangan teknologi informasi dan komunikasi, isu keamanan akan selalu mendampingi. Hal ini tentu saja akan mendorong berkembangnya teknologi-teknologi dan algoritme-algoritme keamanan data secara terus-menerus.
B. Menerapkan Strategi Algoritme dalam Berbagai Kasus
Anda sudah mengenal berbagai algoritme yang umum digunakan dalam pemrograman. Algoritme ini memiliki berbagai teknik pendekatan untuk menyelesaikan masalah. Agar dapat melihat bagaimana hasil pendetakan tersebut dalam menyelesaikan masalah, maka selanjutnya, di subbab ini akan ditunjukkan bagaimana menerapkan algoritme-algoritme di atas dalam sebuah program.
1. Menerapkan Algoritme Rekursi
Seperti yang telah dijelaskan sebelumnya, algoritme rekursi adalah algoritme yang memanggil dirinya sendiri. Hal ini banyak digunakan jika program membutuhkan proses yang berulang. Selain digunakan sebagai sebuah solusi tunggal, algoritme rekursi juga banyak digunakan menjadi bagian dari algoritme lain. Agar lebih paham bagaimana algoritme ini bekerja, berikut ini akan ditunjukkan dua kasus yang populer, di mana algoritme rekursi digunakan sebagai solusi.
a. Menghitung Faktorial
Di mata pelajaran matematika, Anda belajar bahwa nilai faktorial dari sebuah bilangan n dihitung dengan menggunakan persamaan berikut ini:
N! = n x (n-1) x (n-2) x... x 1 atau N! = 1 x... x (n-2) x (n-1) x n
Bagaimana membuat program menggunakan perulangan guntuk mencari nilai faktorial juga sudah dibahas di Kelas X. Menghitung nilai faktorial menggunakan algoritme perulangan dapat dilakukan dengan menggunakan algoritme
Jika Anda perhatikan rumus untuk menghitung nilai faktorial, maka Anda dapat melihat ada proses perkalian yang dilakukan secara berulang, yaitu melakukan perkalian bilangan n dengan (n - 1) secara terus menerus sampai bilangan ke-1. Oleh karena itu, proses menghitung nilai faktorial dapat dilakukan dengan menggunakan algoritme perulangan di atas.
Selain menggunakan algoritme perulangan, kita juga dapat menggunakan fungsi rekursi untuk menghitung nilai faktorial
01.Fungsi rekursi (fungsi Faktorial) dapat dilihat di baris 4 sampai 14. Di baris 4 fungsi dideklarasikan dengan tipe data unsigned long long agar memiliki nilai jangkauan yang besar.
02.Di baris 4, fungsi dideklarasikan dengan tipe data unsigned long long agar memiliki nilai jangkauan yang besar. Baris 6 dan 10 digunakan untuk mengecek nilai n.
03.Di fungsi Main (baris 15 sampai 22) dapat Anda lihat bahwa baris 16 digunakan untuk mendeklarasikan variabel n. Kemudian fungsi meminta masukan dari pengguna dan menyimpan nilai tersebut (baris 18).
04.Baris 19 digunakan untuk menampilkan hasil ke pengguna dan sekaligus memanggil fungsi Faktorial dengan mengirimkan nilai dari variabel n untuk digunakan di fungsi Faktorial.
b. Deret Fibonacci
Deret Fibonacci diperkenalkan oleh seorang matematikawan Italia Leonardo Pisano atau lebih dikenal dengan nama Leonardo Fibonacci (1170-1250). Deret Fibonacci merupakan deret bilangan di mana sebuah bilangan merupakan hasil penjumlahan dari dua bilangan di depannya. Deret Fibonacci akan tampak seperti deret berikut.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,...
Dari deret Fibonacci di atas dapat Anda perhatikan bahwa sebuah bilangan merupakan jumlah dua bilangan yang ada di depannya. Proses penjumlahan ini berulang secara terus-menerus sampai deret bilangan yang diinginkan tercapai. Jika proses ini diimplementasikan menggunakan algoritme perulangan,
kode program Gambar 2.15 berikut.
Fungsi rekursi (fungsi Fibonacci) dapat dilihat di baris 4 sampai 11. Di baris 4 fungsi juga dideklarasikan dengan tipe data integer (Int). Baris 5 dan 8 digunakan untuk mengecek nilai n. Di baris 9 fungsi Fibonacci memanggil fungsi Fibonacci, atau memanggil dirinya sendiri.
01.Fungsi rekursi (fungsi Fibonacci) dapat dilihat di baris 4 sampai 11. Di baris 4 fungsi juga dideklarasikan dengan tipe data integer (Int). Baris 5 dan 8 digunakan untuk mengecek nilai n. Di baris 9 fungsi Fibonacci memanggil fungsi Fibonacci, atau memanggil dirinya sendiri.
2.Pada fungsi main (baris 12 sampai 23) dapat Anda lihat bahwa baris 13 digunakan untuk mendeklarasikan variabel n dan i. Kemudian fungsi meminta masukas dari pengguna dan menyimpan nilai tersebut (baris 15
03.Baris 17 sampai 20 digunakan perulangan untuk memanggil fungsi Fibonacci dari/=0 sampai <n.
04.Baris 18 digunakan untuk menampilkan hasil ke pengguna dan sekaligus memanggil fungsi Fibonacci dengan mengirimkan nilai dari variabel / untuk digunakan di fungsi Fibonacci.
c. Menghitung Pangkat
Anda sudah mengenal konsep pangkat di pelajaran matematika. Sebuah bilangan pangkat terdiri dari bilangan dasar dan pangkat, misalkan saja bilangan A". Bilangan A terdiri atas bilangan dasar A dan pangkat n. Jika Anda menerapkan konsep berpikir komputasional, maka bilangan A dapat ditulis
AA x A, atau
AAx Ax A
AAx Ax A x A
A=...dan seterusnya
Dari persamaan di atas Anda dapat melihat bahwa ada pola perulangan perkalian dalam perhitungan bilangan pangkat. Pola perulangan ini dapat diselesaikan dengan menggunakan algoritme rekursi. Jika algoritme rekursi diimplementasikan dalam program untuk menghitung pangkat,
Perhatikan bagaimana sintaks pada Gambar 2.16 bekerja dan dapatkah Anda memahami bagaimana proses rekursi dilakukan pada program tersebut?
Dari beberapa contoh penggunaan algoritme rekursi, kita dapat menyimpulkan bahwa algoritme rekursi mempunyai berbagai kelebihan dibanding dengan algoritme perulangan, di antaranya:
(1) Lebih sedikit kode program yang digunakan di algoritme rekursi sehingga kode program menjadi lebih pendek.
(2) Rekursi membantu untuk mengurangi waktu untuk menjalankan program (time complexity).
(3) Rekursi dibutuhkan untuk menyelesaikan permasalahan struktur data dan pada beberapa algoritme yang lebih kompleks, seperti algoritme Graph dan Tree Traversal.
1
Selain memiliki beberapa kelebihan, algoritme rekursi juga mempunyai beberapa kelemahan, di antaranya:
(1) Menghabiskan banyak stack memori.
(2) Membutuhkan waktu lebih banyak untuk menjalankan proses di program.
nila
(3) Jika terjadi error di program, kesalahan tersebut lebih sulit dianalisis oleh aplikasi pemrograman (di-debug) dibanding dengan proses iterasi (perulangan).
lihat kat
(4) Memerlukan jumlah eksekusi yang lebih banyak sehingga memerlukan waktu lebih lama untuk diproses.
Kekurangan-kekurangan tersebut dapat di atasi dengan menggunakan prosesor yang memiliki frekuensi lebih tinggi, jumlah inti (core) lebih banyak, dan cache memory lebih besar.
2. Menerapkan Algoritme Greedy
Anda sudah belajar bagaimana algoritme greedy melakukan pendekatan untuk menyelesaikan masalah. Algoritme ini berhasil menyelesaikan masalah untuk kasus menentukan jumlah pecahan uang minimal, sebaliknya memberikan hasil yang kurang baik ketika menyelesaikan masalah mencari jalur terpendek. Oleh karena itu, akan ditunjukkan bagaimana menerapkan algoritme greedy untuk menyelesaikan kasus jumlah pecahan uang minimal.
Jika algoritme greedy diterapkan dalam program untuk kasus pecahan uang minimal, maka sintaks program akan seperti yang ditunjukkan oleh gambar berikut.
01
Sintaks program terdiri atas dua fungsi, yaitu:
fungsi main dan fungsi minpecahan.
02
Di baris 4 dideklarasikan variabel jihpecahan yang akan digunakan untuk menyimpan nilai jumlah lembar/pecahan uang yang akan digunakan. Tujuan dideklarasikan di luar fungsi adalah agar dapat digunakan di semua fungsi yang ada.
03
Di baris 5 fungsi minpecahan dideklarasikan dengan kata kunci void, karena fungsi tersebut tidak akan mengembalikan nilai ke fungsi main yang memanggilnya. Fungsi minpecahan menerima masukan dalam bentuk integer yang akan disimpan di variabel jumlah.
04
Di baris 6 dideklarasikan variabel uang dalam bentuk array dengan tipe data integer dengan 10 elemen. Baris 8 sampai 14 merupakan sebuah perulangan yang akan membandingkan nilai uang yang dikirimkan oleh fungsi main.
05
Di baris 9 jumlah uang (variabel jumlah) akan dibandingkan dengan pecahan uang (array uang) yang ada, jika jumlah uang lebih besar maka jumlah uang akan dikurangi dengan pecahan uang dan pecahan uang tersebut kemudian ditampilkan di keluaran.
06
Sedangkan di baris 12 jumlah lembar/pecahan akan bertambah satu. Demikian dilakukan secara berulang sampai indeks di array uang sama dengan nol.
07
Di fungsi main, baris 19 digunakan untuk meminta masukan dari pengguna dan menyimpan masukan tersebut. Baris 21 dan 22 digunakan untuk menampilkan keluaran dan memanggil fungsi minpecahan untuk menghitung uang dan jumlah lembar/pecahan yang diperlukan.
4. Mengevaluasi Penerapan Algoritme
Setelah mendapatkan sebuah algoritme yang digunakan untuk sebuah solusi pemrograman, langkah selanjutnya adalah melakukan evaluasi terhadap algoritme yang ada. Melakukan evaluasi algoritme dapat dilakukan dengan langkah-langkah sebagai berikut:
(1) Siapkan data-data untuk pengujian.
(2) Jalankan algoritme menggunakan data pengujian.
(3) Perhatikanlah jika terjadi kesalahan dan tentukan bagaimana kesalahan tersebut ditangani.
Sebelum diimplementasikan, ada beberapa karateristik yang dapat dijadikan sebagai dasar untuk mengevaluasi sebuah algoritme, yaitu: kompleksitas, konvergensi, dan kekokohan.
a. Kompleksitas
Kompleksitas sebuah algoritme terdiri dari dua hal: kompleksitas ruang (space complexity) dan kompleksitas waktu (time complexity). Kompleksitas ruang adalah kebutuhan algoritme akan ruang kosong di memori agar dapat dijalankan sebagaimana mestinya. Algoritme membutuhkan ruang memori untuk hal-hal berikut:
(1) Variabel-variabel termasuk konstanta dan nilai-nilai sementara.
(2) Instruksi-instruksi di dalam program.
(3) Eksekusi
Sedangkan kompleksitas waktu adalah waktu yang dibutuhkan untuk menjalankan seluruh algoritme secara lengkap. Memperkirakan kompleksitas waktu dari sebuah algoritme dapat dilakukan dengan cara menghitung jumlah langkah-langkah dasar yang harus dijalankan untuk menyelesaikan eksekusi sebuah algoritme.
b. Kovergensi
Konvergensi adalah karateristik sebuah algoritme untuk dapat menyelesaikan langkah-langkah yang ada, menyelesaikan eksekusi algoritme dan menghasilkan nilai yang ingin dicari. Konvergensi merupakan karateristik yang penting, mengingat bahwa pada beberapa kasus perulangan, proses perulangan tidak pernah selesai karena setiap proses perulangan, nilai yang dihasilkan semakin menjauh dari nilai yang ingin dituju. Akibatnya, proses perulangan tidak pernah berakhir.
C. Kekokohan (robustness)
Kekokohan adalah karateristik algoritme yang menggambarkan kemampuan algoritme untuk bekerja pada kondisi-kondisi yang tidak wajar. Kondisi tidak wajar tersebut dapat terjadi karena nilai masukan yang tidak wajar (ekstrem), hasil perhitungan yang tidak wajar, jumlah data yang diolah yang tidak wajar dan sebagainya.
Selanjutnya, setelah sebuah algoritme diimplementasikan, ada beberapa kriteria yang dapat dilakukan untuk mengevaluasi kinerja dari sebuah algoritme, antara lain:
(1) Akurasi. Apakah algoritme menghasilkan nilai yang akurat?
(2) Desirability. Apakah algoritme menghasilkan nilai sesuai yang diinginkan?
(3) Efisiensi. Seberapa cepat algoritme dapat dijalankan?
(4) Konvergensi. Apakah algoritme selalu dapat bekerja secara konvergen atau kadang-kadang tidak.
(5) Robutsness. Apakah algoritme dapat bekerja normal pada kondisi tidak wajar dan ekstrim.
Salah satu metode untuk mengevaluasi kinerja algoritme dan membandingkannya dengan algoritme lain adalah dengan menjalankan algoritme-algoritme tersebut menggunakan input random yang diambil dari nilai-nilai ekstrem data masukan yang mungkin, kemudian mengukur waktu rata-rata yang dibutuhkan