Kildeløs: Denne artikkelen manglerkildehenvisninger, og opplysningene i den kan dermed være vanskelige åverifisere. Kildeløst materiale kan blifjernet. Helt uten kilder.(10. okt. 2015) |
Denne artikkelens innhold ligner reklame:Wikipedia er ikke et reklamemedium. Om emnet errelevant for en encyklopedi bør artikkelen bearbeides for å bli mer nøytral. Hvis emnet ikke er relevant, bør den i stedet merkes for sletting med malen {{Hurtigslett}}. |
Gnutella er et datanett for deling av filer. Det spesifiserer enprotokoll som prosesser må benytte for å utveksle filer og informasjon om disse filene. Arbeidet organiseres som etPeer-to-peer datanett, der ansvaret for lagring og indeksering tillegges de enkelte brukere som til enhver tid er tilkoblet. Man har ingen sentral server som kan kontaktes til disse formål. En bruker må påregne å være bådeserver (tilbyder av filer) ogklient (en som etterspør filer); og kalles derfor enservent.
Det viktigste i Gnutella er den underliggende protokoll som spesifiserer hvordan utveksling skal foregå. De maskiner som forstår denne protokollen kan være med i et Gnutellanett og representere brukerens interesser for søking og utveksling av filer. En rekke ulikeprogramvarer har vært utviklet siden 2000, med det mål å tilby dette. Det første var utviklet av oppfinnerne, Justin Frankel og Tom Pepper i firmaet Nullsoft, og utgitt somåpen kildekode under lisensenGPL (2000). Firmaet måtte stoppe distribusjonen, etter pålegg fra sine eiere, men protokollen var allerede offentliggjort, og flere etterligninger ble snart utgitt, hver med en del felles funksjoner, og enkelte spesialiteter; dog må alle ha den essensielle Gnutellaprotokollen implementert for å kunne samsnakke via Gnutellanettet. Navnet Gnutella er inspirert av lisenspolitikken iGNU, samthasselnøttpålegget «Nutella».
En Gnutellabruker kjører en Gnutellaklient (A), som først må lokalisere en nabo (B). Her må A kontakte en sentral server som kan anbefale en aktiv bruker som er rimelig nær A. Sålenge A kjenner til minst en nabo, kan den arbeide mot Gnutellanettet. Serveren vil ofte gi node A en liste over naboer, slik at A får et nabolag. Klienten hos node A lar brukeren oppgi et søkeuttrykk, og sender en QUERY til As naboer. Enhver som mottar en QUERY og har filer som passer med spørsmålet, vil svare med et QUERY HIT direkte til den som spør (i eksempelet, er dette A). Samtidig videresender de QUERY videre til sine naboer. Et QUERY vil således gå et visst antall hopp før det dør ut, basert på en grense som node A har satt. Noder som tidligere mottok et gitt QUERY vil også la være å videresende meldingen.Denne form for videresending kallesflooding, og oppfattes som en lite ressursvennlig måte, men den vil også medføre at alle til slutt vil motta et gitt QUERY.
Svarene vil samtidig komme inn til node A, i form av direktesendte QUERY HIT fra diverse innehavere av treffende filer. Disse svarene angir data om selve filen (navn, lengde), men også hvordan filen eventuelt kan overføres (eksempelvisHTTP ogFTP), og hva slags kvalitet som er forbundet med å kopiere fra det sted denne filen faktisk ligger lagret. Brukeren hos A vil få disse vist som en liste, ofte rangert ut fra tittel, antall likelydende treffsteder, ytelsesmessige kvaliteter og annet. Assosiert med hvert treff, er en direktelink til den noden som rapporterte treffet. Det er nå opptil brukeren å velge ett av disse treffene, hvorpå klienten i node A kontakter den utvalgte maskinen for å få kopiert filen. Hvis filen befinner seg på flere steder, kan den overføres i parallell, hvilket påskynder kopieringen. Klienten hos node A vil da sørge for å si hvilke biter den vil ha overført fra hver enkelt server.
Brukeren er avhengig av at klienten klarer å lokalisere den initielle nabo. Her finnes flere teknikker. Det vanligste er å kontakte en forprogrammert server. Hvis denne feiler kan man gjenbruke de naboer man eventuelt hadde kontakt med sist man var aktiv i Gnutellanettet. Et tredje alternativ er å søke lokalt og avvente svar. Noden sender da en PING som eventuelt besvares med en PONG. I og med at brukerne «kommer og går» vil enkelte naboer bli borte, mens andre etterhvert tilkommer. Ett velkjent problem i Gnutella, er at denreelle avstand mellom naboer kan bli stor; forslaget fra den sentrale server kan gjøre at en bruker iLarvik får en bruker iTokyo utpekt som nabo. Dette vil forsinke søkearbeidet, som jo går mellom nabopar.
Den store fordelen med Gnutella, er at den oppfattes somskalerbar. Den tid det tar å søke og kopiere filer vil i et skalerbart system, ikke være avhengig av hvor mange som er tilkoblet. I sentraliserte nett somNapster er vil den sentrale indeksserveren (og innfartsveiene dit) være flaskehalser, der svartidene går opp etterhvert som brukermassen vokser. Den distribuerte intelligens krever dog, at hver enkelt må få innsikt i informasjon om maskiner og nettverk, som kan utnyttes til å angripe. Dette unngår man tildels i sentraliserte system. Samtidig innser man at Gnutella søker med flooding: Alle som er aktive, vil tilslutt høre alle spørsmål, hvilket til slutt vil bli en uoverkommelig belastning. I så fall kan ikke Gnutella anses for å være skalerbar. Mekanismen kan også brukes for å iverksette angrep av typenDenial of Service. Alle meldinger som sendes i Gnutellanettet underleggeshoppkontroll, og vil slettes etter å ha blitt videresendt et visst antall ganger. Dette forhindrer imidlertid ikke at nye meldinger kan sendes inn med stor hyppighet. Videre er nettet underlagtløkkekontroll, slik at meldinger som har ankommet tidligere, ikke blir videresendt. Begge er nødvendige tiltak for å unngå kollaps, men gir ingen garanti mot kollaps.
Gnutella har ingen sentral kontroll på hverken innhold eller informasjon om filer som spres. Brukere må foreta de samme sikkerhetstiltak som de eventuelt måtte ha iverksatt for bruk avweb ogelektronisk post. Her blir Gnutella noe forskjellig fraNapster som var et kommersielt orientert datanett for fildeling, og derfor avhengig av en viss kvalitetskontroll for å unngå visse juridiske problem. Samtidig avgikk Napster på grunn av behovet for sentralt lagret oversikt over tilgjengelige filer. I Gnutella er oversiktene spredt til hver enkelt node, og utveksles bare i form av svar på spørsmål. Dette har gjort at Gnutella hittil, tross press fra musikkindustrien, har unngått å bli erklært som juridisk ulovlig.