gtk-gnutella logo
Huidige versie: 1.2.3

FAQ

General

De broncode compileren

Gnutella connections

Searches

Downloads

Uploads

GTK+ 2.x


General

Wat is gnutella?

Gnutella is een netwerk waarbij informatie gedecentraliseerd van computer naar computer (Peer to Peer, P2P) wordt uitgewisseld. Op het Gnutella netwerk kan je bestanden delen en downloaden ongeacht het type. Het moderen Gnutella protocol wordt officieel gedocumenteerd op GDF wiki[EN].

Wat is GTKG?

Vaak gebruiken we GTKG of gtkg om te verwijzen naar gtk-gnutella, omdat het korter is. GTK is afgeleid van GTK+, dit is de grafische toolkit die door gtk-gnutella wordt gebruikt.

Het gebruikt teveel bandbreedte!

Je kan een of meerdere van de volgende opties proberen als je een gebruiker bent die een trage verbinding heeft (modem):

Wat zijn Ultrapeers en Leaf nodes?

gtk-gnutella heeft vanaf versie 0.92 ultrapeers en leaf nodes gemplementeerd. Hierdoor worden servents op het gnet verdeeld in leaf nodes, welke alleen met ultrapeers verbinden, en ultrapeers, welke alleen verbinden met veel leaf nodes an een aantal andere ultrapeers (zie ook, Wat is een goed aantal verbindingen?

Ultrapeers mogen niet firewalled zijn, er wordt van verwacht dat een hoge uptime (meer dan 2 uur) hebben, en ze moeten genoeg bandbreedte ter beschikking stellen aan het gnet. Ultrapeers sturen zoek opdrachten van leaf nodes door, leaf nodes geven hun zoekopdrachten alleen door naar hun ultrapeer QRPtabellen, welk de hashes bevat van zoektermen van de door de leaf node gedeelde bestanden. Wanneer een ultrapeer een overeenkomst vind in een Query Routing Tabel, dan stuurt het de zoekopdracht door naar de bijbehorende leaf node. Hierdoor is het netwerk verkeer voor elke leaf node zeer laag, dit geeft extra ruimte voor het delen en downloaden (wat nog steeds direct gebeurt op p2p) van bestanden. Een ultrapeer kan ook als een push-proxies fungeren voor een firewalled leaf node.

Waarom geeft gtk-gnutella aan dat het firewalled is, ookal is dat niet zo?

gtk-gnutella moet eerst een inkomende verbinding krijgen om te bepalen of het van buiten af kan worden benaderd. Zolang dat niet gebuert dan gaat gtk-gnutella er van uit dat er een firewall is welke de geconfigureerde luisterende TCP poort blokkeert. Indien je deze detectie wilt versnellen, gebruik dan een internet browser, telnet of iets soortgelijks, en verbind op de luisterende poort van buitenaf. Als de verbinding wordt geweigerd of wordt genegeerd, dan ben je waarschijnlijk niet bereikbaar door een firewall dat de poort blokkeert, een NAT die niet correct is geconfigureerd of iets soort gelijks. Je kan ook proberen een andere luisterende TCP poort in te stellen, sommige ISP's blokkeren de standaard Gnutella poort (6346). Ziek ook Moet ik een poort forwarden op mijn firewall?.

De broncode compileren

Hoe zorg ik dat Configure me niet al die vragen stelt?

Het Configure script kan op de volgende manier worden gedraaid, zodat het de standaard waardes gebruikt. Het gedraagd zich dan zoals de oude configure script van autoconf van vroeger.

$ ./Configure -ders

Je kan ook compileer opties op de commando regel meegeven. Hier is een voorbeeld dat gtk-gnutella configureert om

$ ./Configure -ders -O -D gtkversion=1 -D remotectrl=y -Dccflags="-march=pentium -mmmx" -Doptimize="-g -O0"

Gnutella connections

Wat is een goed aantal verbindingen?

In leaf mode 3 ultrapeers, in ultrapeer mode 32/40 (minimum/maximum) ultrapeers en ongeveer 100 leaf nodes. Het werkelijke nummer zou moeten afhangen van de beschikbare bandbreedte. Als je "Geef voorkeur aan gecomprimeerde verbindingen" aan hebt staan, dan zal de gebruikte bandbreedte een stuk lager zijn. Je moet nooit al je bandbreedte gebruiken voor gnet verbindingen. Vooral op een asymetrische verbinding zoals kabel/dsl kunnen inkomende verbinden worden verbroken op het moment dat er teveel uitgaand verkeer is (TCP/IP probleem). Gebruik maximaal de helf van je uitgaande bandbreedte voor gnet verbinden.

Sinds versie 0.95 wordt "high outdegree" gebruikt. Je zou rond de 32/40 verbinden naar andere ultrapeers moeten hebben. Het aantal leaf verbindingen is afhankelijk van je bandbreedte en de snelheid van je CPU. Een ultrapeer moet minimaal verbonden zijn met 20 leaf nodes en het is veel beter om verbonden te zijn met 100 of zelf meer. Gebruik de bandbreedte meters links onder in de GUI en het top commando om het CPU en het bandbreedte vebruik in de gaten te houden. Verhoog het aantal leaf verbindingen totdat je de maximale bandbreedte en systeem bronnen hebt gebruikt die je hiervoor wilt gebruiken.

De bandbreedte instellingen kunnen je helper om het bandbreedte verbruik van gtk-gnutella verder bij te stellen.

Moet ik een poort "forwarden" op mijn firewall?

Je hoeft niet pers een poort naar gtk-gnutella te "forwarden", maar gtk-gnutella zal beter werken als je het wel doet. Als gtk-gnutella denkt dat je afgeschermd bent zal het geen "push" resultaten tonen omdat het denkt dat het je toch niet zal lukken deze te downloaden. Zelfs als mensen niet direct met je kunnen verbinden kunnen ze nog steeds bestanden van je node downloaden door gebruik te maken van een push request.
De instelling voor de Luisterende poort is te vinden in Instellingen->Voorkeuren->Netwerk

Hoe stel ik poort "forwarding" in?

Je kan instructies voor de meeste bekende routers vinden op http://www.portforward.com/routers.htm. Probeer http://www.canyouseeme.org/ om je poort "forward" te testen.

Gebruikt gtk-gnutella UDP?

Ja, vanaf versie 0.96 kan je UDP gebruiken aanvullend op TCP.

Wat betekent "[FC]"?

De FC staat voor "flow control".
Dit betekent dat de hoeveelheid verkeer die naar een servent gaat wordt verminder door minder belangrijke data weg te gooien. Over het algemeen moet je ervoor zorgen dat servents waarme je bent verbonden niet in "flow control" komen. Let op de [FC] aan het einde van de Info tekst (mogelijk moet je de kolom naar rechts uitrekken voorbij het venster om de scrollbar tezien te krijgen), of kijk naar de FC status in de Vlaggen kolom. Een basis regel is, als je op 1 moment meer dan 1 node in flow-control hebt dan heb je niet genoeg uitgaande bandbreedte voor het gnet beschikbaar gezet. Hierdoor ben je schadelijk bezig voor het netwerk; of verlaag het aantal verbindingen, activeer "Geef voorkeur aan gecomprimeerde verbindingen" of verhoog de bandbreedte limiet voor uitgaande verkeer.

Waarom verlies ik gnet verbindingen zodra ik een upload heb?

Probeer de bandbreedte te limiteren. Als dat niet helpt, dan kan het zijn dat je provider gnutella verkeer afkapt. Probeer je gnutella poort te veranderen in Netwerk instellingen van gtk-gnutella.

Wat betekent dat spul in de Vlaggen kolom?

Je kan het type verbinding zien, en een aantal instellingen voor die verbinding. Opmerking, push-proxies zijn geimplementeerd in 0.92.1c en hoger.

  012345678AB (offset)
  NIrwqxZPFhT
  ||||||||||+ TLS-tunneled verbinding
  |||||||||+- hops flow triggered (h), of totale opdrachten flow control (f)
  ||||||||+-- flow control (F), of wachtende gegevens (d)
  |||||||+--- we zijn een push-proxy voor node (P) of node is onze push-proxy (p)
  ||||||+---- Of Rx, Tx of beide (Z) gecomprimeerd zijn
  |||||+----- we sturen onze laatste-hop QRT naar remote UP (X), of we sturen er n (x)
  ||||+------ we sturen/ontvangen een QRT, of sturen/ontvangen er n (q)
  |||+------- of de node schrijfbaar (writable) is
  ||+-------- of de node leesbaar (readable) is
  |+--------- verbindings type: (Inkomend, Uitgaand Outgoing), Ponging)
  +---------- peer mode: Ultra, Leaf, or Legacy (a.k.a. Normal)

What's the meaning of a leading "!" in the User-Agent name?

This indicates that the User-Agent name is possibly faked but it could be a false-positive caused by a bad clock on either side.

What does "Harmful version banned, upgrade required" mean?

Sometimes, servents are discovered to have a bug or behaviour that is harmful to the gnet. For example, gtk-gnutella-0.92b had a bug that generated excessive queries which hammered on the GWebCache system. Such banning is exceptional, usually restricted to specific versions, and the servent's author is informed about the banning.

What does "Outdated version, please upgrade" mean?

Versions of gtk-gnutella more than one year old are banned, since they lack features that are important to the rapidly evolving gnet's health and scalability. In addition, unstable versions are banned after 90 days.

Why doesn't my HTTP proxy work?

Your HTTP proxy must support the method CONNECT because a normal GET doesn't work with Gnutella connections. This is an extension to the HTTP protocol and mainly supported by SQUID proxies. It's also often deactivated because it might be considered a security problem by your provider. At the moment, the proxy support - also for SOCKS - isn't very good. The developers don't use proxies but if you think you can fix it, we would appreciate your patches.

How can I increase the timeouts?

If your internet connection suffers from high latency it might help to increase the timeouts. Go to Settings->Preferences->User Interface and tick Expert mode. Now, you'll find a lot more settings to change when you go to Settings->Preferences->GnutellaNet.

How does auto mode decide between ultra and leaf?

In order to be promoted to ultra mode the following conditions must be met:

  1. There must be more than 8192 bytes/s outgoing bandwidth available.
  2. If bandwidth schedulers are enabled, leaf nodes must not be configured to steal all the HTTP outgoing bandwidth.
  3. If Gnet out scheduler is enabled, there must be at least 256 bytes/s per gnet connection (ultrapeer or normal aka legacy).
  4. Overall, there must be 32 bytes/s per configured leaf plus 256 bytes/s per gnet connection available.

Searches

How can I get more results?

The number of results you get depends heavily on whether people are able to connect to you (see port forwarding) and on the number of connections to other hosts.

How can I ignore files with no SHA1?

Click with right mouse button on a search result without a SHA1 and select "Drop results...->with the same urn:sha1" from the popup menu. That will drop all results with this SHA1 - in this case none - from your results. You'll miss a lot of spam.

Where did the search entry box go?

Searches are now entered in the Search: box in the sidebar.

What are "Passive" searches?

A passive search will return all the search results that pass through gtk-gnutella. By filtering these results, passive searches can be useful.

If you are in ultra mode, many search results are already passing through your node besides the ones for your own searches. You can take advantage of this to make searches without generating any extra gnet traffic. For example, on my ultrapeer with 200 leaf nodes, I opened a passive search and filtered the results to display only hits with the name eminem. Within an hour or so I had about 1500 results. Obviously, the more popular the search, and the more patient you are, the more useful this technique is.

If you are in leaf mode, then the only search results that will pass through gtk-gnutella will be those from your own searches, so the above technique won't be useful. But there is another way to use passive searches that is only useful in leaf mode. For example, if you start a passive search and filter it to display only mp3 files, then all mp3 files from all your open searches will be conveniently aggregated in one search window. By opening more passive searches with different filters, you can display different file types in each.

Why are there unreadable results?

The standard encoding in the modern Gnutella network is UTF-8. All queries and results should be encoded this way. Unfortunately, there is still many legacy software that does not convert textual data (like filenames and queries) to UTF-8 but uses arbitrary character sets instead. gtk-gnutella tries to detect the used character set but this cannot be perfect. It may also replace characters with underscores if they cannot be converted to UTF-8.

Downloads

What does the status "Ignoring requested [SHA1|name & size]" mean?

This means that gtk-gnutella has that file recorded as complete in its database. This database is usually located in ~/.gtk-gnutella/done.sha1 and ~/.gtk-gnutella/done.namesize. At the moment, there is no way to remove or modify an entry of that database from the gui, but you can edit the file with any text editor while gtk-gnutella is not running. If you add or remove something from one of the files, do the same to the other.

What does the status "No URN on server" mean?

This means that gtk-gnutella wants to download a new file from a host, but that host does not provide a SHA1 hash for the file. Since the file is new (not yet partially downloaded), gtk-gnutella cannot do an overlap check to verify that the file on the host is really the file you want. In such a case it relies on the SHA1 provided by the remote host, but if no SHA1 is supplied, then gtk-gnutella has no way of assuring that the file it wants to download and the file on the remote server are really the same.
If you get annoyed by those messages you can activate the Optimistic first chunk option in the Settings->Preferences->Download.

Why is the same file downloaded X times?

Check the Range column. This is called swarming. gtk-gnutella tries to get the file in chunks and will get it from multiple hosts in parallel, if possible.

What is "swarming"?

Swarming describes the ability to download a single file from multiple hosts in parallel. gtk-gnutella will automatically try to find additional sources for any queued file using the download mesh and by monitoring routed results.

What is a "chunk"?

A chunk is another word for part of a file. When gtk-gnutella runs in swarming mode it will retrieve multiple chunks of a downloading file until it has downloaded the complete file. The Range column shows you which chunk you are currently downloading.

What is the "download mesh"?

When you download a file from a host that supports the download mesh, it will tell you about additional sources for the requested file (provided it knows of any). Those will then be used for swarming

What is a "push request"?

The push request is a facility to download files from hosts you cannot connect to directly (because they are firewalled). Well, you cannot connect to those hosts, but they probably can connect to you. To tell a remote host to connect to your host so that you can download a file from the remote host you send a push request to it.
If you download a file using a push request and you loose contact to the host which originally returned the result for that file to you, then the push route is lost and you can no longer download this file. Therefore push routes are quite fragile. You can't make use of push requests when you are behind a firewall (see port forwarding).

Why does gtk-gnutella append a .OK to my file names?

You probably haven't set up different directories for downloaded files, temporary files and bad files.

I got a file that just won't download!

If you don't see a smiling yellow icon with sunglasses in the statusbar, you should try to change that. See the section about firewalls.

Otherwise if gtk-gnutella says it has only a few sources for the file (best seen in the fileinfo subtab in the downloads pane) then this can have two reasons:

You can try to search for the file again and see if you find another version which is more common. It's usually a good indication if the "#" shows a number for a file. The larger the number, the better are the chances that you can get it quickly.

In the downloads pane, what does it mean if the color of the text is grey instead of black?

It means that the file is received over a push route.

What is the filename encoding?

gtk-gnutella use UTF-8 as default encoding for filenames. If your locale setting does not use UTF-8, other applications may not display these filenames correctly or may have problems accessing them in the worst case. You can change the encoding using the environment variable G_FILENAME_ENCODING. This affects most applications that use Gtk+ or GLib.

If your system does not use UTF-8, it is recommend to use either G_FILENAME_ENCODING="UTF-8,@locale,ISO-8859-1" or G_FILENAME_ENCODING="@locale,UTF-8,ISO-8859-1" .

The first item in the list is the encoding used to store files. Following items are character sets used to convert existing filenames as found on the disk to UTF-8 for display purposes and information exchange. For people from Western Europe it is recommendable to add ISO-8859-1 as shown above to the list if you share any files that contain non-ASCII characters and which are encoded as ISO-8859-1 characters. For people from other regions of the world, other character sets might be more appropriate.

In most cases, the special item "@locale" takes care of this. This stands for the encoding used by the current locale and it's very likely that filenames are encoded with it. You can list multiple secondary filename character sets. When converting filenames to UTF-8, the first successful conversion will be used. The character sets are tried in the listed order. Non-convertible characters are replaced with underscores. This means if you download a file with mostly Arabic or Japanese characters in it, converting the filename to ASCII or ISO-8859-1 strips most or all information from the filename. Therefore it's best to stick with UTF-8.

gtk-gnutella supports G_FILENAME_ENCODING since version 0.96 regardless whether you use Gtk+ 1.2 or Gtk+ 2.x as front-end.

Uploads

What does "Normalized" mean?

This shows the total amount of bytes uploaded for the file divided by the file size.

GTK+ 2.x

Gtk2 is way sloooow.

Gtk+ 2.x has complex and powerful font-rendering. There's hope that future versions will be much more optimized. If the performance is unacceptable, you should consider using Gtk+ 1.2 instead. However, if you switch to a pane with little action and minimize the window, the performance difference is negligible.

Users Love Us Community Choice SF Favourite Community Leader Open Source Excellence SourceForge.net Logo RSS Feed Available Open Hub metrics Coverity Scan Build Status gtk-gnutella at GitHub
gtk-gnutella © 2000-2014 door Yann Grossel, Raphaël Manfredi en andere medewerkers