Gnutella

Sejarah

Pelanggan pertama dicipta oleh Justin Frankel dan Tom Pepper dari syarikat Nullsoft, salah satu division dari AOL, pada awal 2000. Pada 14 On March 2000, perisian tersebut disediakan untuk dipindah turun daripada pelayan Nullsoft. Peristiwa tersebut diumumkan sebelum cukup tempoh (prematurely) di Slashdot, dan perisian tersebut dipindah turun oleh beribu-ribu orang pada hari itu. Kod sumber akan dikeluarkan kemudian, sepatutnya dibawah GNU General Public License (GPL).
Pada keesokkan harinya, AOL menghentikan penyebaran perisian tersebut kerana kebimbangan mengenai masalah undang-undang dan melarang division Nullsoft daripada melakukan sebarang kerja pembangunan pada projek tersebut. Ini tidak membantutkan Gnutella; selepas beberapa hari protokol Gnutella telah difahami melalui kejuruteraan undur dan klon sumber terbuka serasi mula muncul. Pembangunan selari oleh pelanggan berlainan oleh kumpulan berlainan kekal menjadi modus operandi pembangunan Gnutella hari ini.
Jaringan Gnutella adalah tersebar sepenuhnya berbanding dengan sistem separuh pusat seperti Napster. Kepopularan awal jaringan tersebut digalakkan lagi dengan ancaman kehakiman penutupan Napster pada awal 2001. Perkembangan mengejut populariti ini menyingkap had penskalaran protokol awal itu. Pada awal 2001, variasi protokol tersebut (dilaksanakan pada awalnya dalam pelanggan sumber tertutup) membenarkan penskalaran yang lebih baik. Dengan tidak melayan setiap pelanggan sebagai pelanggan dan pelayan, sesetengah pengguna sekarang dilayan sebagai "ultrapeers", melencong permohonan carian dan jawapan pada pengguna yang bersambung kepada mereka.
Ini menjadikan Gnutella bertambah popular dan menggalakkan perkembangan jaringan Gnutella. Pada akhir tahun 2001, pelanggan Gnutella LimeWire, yang merupakan pendorong utama pembangunan protokol Gnutella, dibebaskan sebagai sumber terbuka. Pada Februari 2002, aturcara Morpheus, kumpulan perkongsian fail perdagangan, meninggalkan FastTrack, aturcara rakan ke rakannya dan membebaskan pelanggan baru berasaskan sumber terbuka pelanggan Gnutella, Gnucleus.
Kadang kala perkataan 'Gnutella' merujuk bukan kepada projek tertentu atau aturcara yang khusus, tetapi kepada protokol terbuka digunakan oleh pelbagai pelanggan. Oleh kerana pelanggan bari sedang dibangunkan dipelbagai lokasi, dan protokol baru juga sedang dibangunkan, ia sukar untuk menyatakan apakah erti sebenar 'Gnutella' dimasa hadapan.
Nama tersebut adalah gabungan perkataan GNU dan Nutella. Kononnya, penulis aturcara Frankel dan Pepper memakan banyak nutella ketika membangunkan projek asal, dan mereka bercadang untuk menggunakan lesen GNU GPL pada program yang siap. Gnutella tidak mempunyai sebarang kaitan dengan projek GNU; lihat GNUnet untuk yang seumpama dengan projek GNU.

Bagaimana ia berfungsi

Untuk membayangkan bagaimana Gnutella berfungsi, bayangkan kitaran besar pengguna (dikenali sebagai nod), yang setiap mereka mempunyai aturcara pelanggan Gnutella. Aturcara pelanggan pada penggunaan pertama mesti bootstrap dan menjumpai sekurangnya satu daripada nod yang lain. Kaedah yang berlainan telah digunakan untuk tujuan ini, termasuk senarai sedia ada alamat nod yang berfungsi dihantar bersama aturcara ini, menggunakan tapak Gwebcache pada web untuk mencari nod, termasuk juga menggunakan IRC untuk mencari nod. Kemungkinannya terdapat satu nod (labelkan sebagai B) yang berfungsi. Apabila ia bersambung, nod B akan menghantar kepada nod A senarai nod yang berfungsi kepunyaannya. Nod A akan cuba menyambungkan kepada nod yang terdapat dalam bungkusan penghantaran, dan juga nod yang ia terima dari nod lain, sehingga ia mencapai kuota tertentu, biasanya ditetapkan pengguna. Ia hanya menyambung kepada jumlah nod tersebut, tetapi ia menyimpan nod yang belum dicuba lagi (ia memadamkan nod yang gagal disambung).
Sekarang, apabila pengguna A ingin melakukan carian, ia menghantar permohonan carian kepada setiap nod yang bersambung secara aktif. Terdapat kemungkinan sebahagian daripada mereka tidak lagi berfungsi, dalam kes ini pengguna A cuba menyambung dengan nod yang disimpan sebagai sokongan backup. Jumlah nod yang bersambung secara aktif kepada pengguna A adalah kecil (sekitar 5), jadi setiap nod akan menghantar permohonan tersebut kepada semua nod yang bersambung dengannya, dan mereka akan menghantar permohonan itu, dan seterusnya. Secara teori, permohonan tersebut akhirnya akan sampai kepada semua pengguna jaringan Gnutella.
Sekiranya carian tersebut menghasilkan jumpaan, nod yang menghasilkan sambungan tersebut (yang mana alamat IP termasuk dalam permohonan carian) secara langsung. Mereka berbincang mengenai pindahan fail dan proses pindahan. Jika lebih dari satu salinan fail yang sama dijumpai, pencari boleh melaksanakan pindah terima "berkelompok" - pindah terima sebahagian fail daripada nod berlainan secara serentak. Ini meningkatkan lagi kadar pindah terima.
Akhirnya, apabila pengguna A putus, aturcara pelanggan menyimpan salinan senarai nod yang aktif bersambung, dan disimpan sebagai pendua, untuk kegunaan masa hadapan.
Dalam amalan, pencarian pada jaringan Gnutella biasanya amat lambat dan tidak terjamin. Setiap nod adalah pengguna komputer biasa; oleh itu, mereka sentiasa berpaut dan putus pautan, oleh itu jaringan tersebut tidak pernah stabil. Oleh kerana sambungan pengguna individu biasanya adalah perlahan, ia akan mengambil masa yang lama untuk permohonan pencarian untuk mengembara keseluruhan jaringan (yang purata 100,000 nod sesuatu masa.)
Kebaikan utama mempunyai jaringan tersebar Gnutella adalah ini menjadikannya sukar bagi menutup jaringan tersebut. Tidak seperti Napster, di mana seluruh jaringan bergantung kepada pelayan pusat, Gnutella tidak boleh di tutup dengan menutup mana-mana nod. Selagi terdapat sekurang-kurangnya dua pengguna, Gnutella kekal wujud.
Panduan mudah mengenai bagaimana Gnutella berfungsi boleh di dapati di GnuFU: Gnutella Untuk Pengguna (Gnutella For Users).