Aussie living in the San Francisco Bay Area.
Coding since 1998.
.NET Foundation member. C# fan
https://d.sb/
Mastodon: @dan@d.sb

  • 0 Posts
  • 1.16K Comments
Joined 3 years ago
cake
Cake day: June 14th, 2023

help-circle


















  • Just because a bunch of posts are misinformed doesn’t mean that they’re right. There’s a lot of misinformation online, especially on Reddit.

    Reading either the source code for a Soulseek client, or the unofficial protocol documentation, will help you have a better understanding of how it actually works.

    If you look at that document, you will see that there are no server messages related to uploading or downloading files, meaning the server is not involved.

    Searches are distributed amongst peers, similar to what DHT does (but it’s its own protocol). The server does know about a small number of peers, which then distribute the search to other peers connected to them, etc. in a tree hierarchy: https://nicotine-plus.org/doc/SLSKPROTOCOL.html#distributed-messages

    Soulseek’s official documentation for v157 (https://www.slsknet.org/157.html) describes it as such:

    the soulseek search distribution network is a simple hierarchy where clients are connected to other clients in child/parent relationships. the construction is done dynamically with the server constantly trying to push clients off of itself (only for the purpose of sending search requests) and on to other clients

    File transfers are entirely peer to peer. There is no tracker or any other central server involved. The FileTransferInit command (which starts the transfer) goes directly to the other peer that has the file you’re requesting: https://nicotine-plus.org/doc/SLSKPROTOCOL.html#file-transfer-init

    Getting the list of files a user has is also entirely peer to peer - no central server is involved.


  • There’s no tracker. Your link just says that there’s a central search and chat room server. The search just points your client to users that have files with that name. It doesn’t track anything else.

    The server does not know which files you download - that’s just between you and the person you’re downloading from. You can download files directly from a user (e.g. by searching for a username then browsing their files) without relying on the central server at all.

    You don’t need port forwarding for downloads, only for uploads.