OurMx WPN Protocol Specification
The following protocol specifications where compiled by analysing the WinMX client network traffic over time as and when specific knowledge was required. The protocol will be broken down into its relevant network layers and we will examine each layer down to a packet level.
We believe it will enhance the comprehension and quality of the WinMX developer community to be able to access an accurate and full protocol specification. We have produced this material to facillitate open access to relevant community held information, we hope you are able to gain some insight and inspiration from it.
The WinMX and OurMx client's operate on the WPN (WinMX Peer Network). The WPN is an unregulated and decentralised P2P network that has its own network protocols.
The network architectural model used is one of the classic decentralised models and has a two tier structure of lower tier "Secondary" and more powerful "Primary" clients.
All network wide traffic goes via the "Primary" network with Primaries acting as "Virtual hubs" for multiple secondary clients, the single exception to this system is for file transfers, these are undertaken strictly client to client with the networks "Primaries" acting as transfer message managers only.
Initial connections to the network are made via bootstrapping servers called "Peer Caches", these deliver a quantity of "live" WPN network node addresses to both Primary and Secondary tier clients using two similar but not identical mechanisms.
The "Chat Protocol"
This is the most commonly used sub-section of what is normally called the Secondary Client Protocol.
The "Secondary Client Protocol"
This is the protocol as used by WinMX clients operating in "Secondary".
The "Primary Client TCP Protocol"
This Protocol is strictly utlised by Primary layer clients and chat servers. In time its hoped a group will be able to upgrade this protocol.
The "Primary Client UDP Protocol"
This Protocol is strictly utlised by Primary layer clients and chat servers.
The "Filesharing Protocol"
This protocol facillitates transfers between individual clients and consists of both management message packets and GET, SEND messages that do the actual transfers.Third Party Protocol Extensions
This is a loose collection of packets added to the network by individual developers over the years, as such sometimes information is lacking on individual packet types not made public, I have I hope gathered enough of these to cover most of the variants currently in usage.
Function / Flow Guides
Secondary Client - Connecting To the WPN
for information on how to connect to a "peercache".
Secondary Client - Logging Into Primary Host
for information on how to log into a primary host.
Secondary Client - Obtaining A Chat Room List
for details of how the Secondary Client obtains a Chat Channel List.
Secondary Client Whois Function
for details of how the Secondary Whois mechanism operates.
Client To Client File Transfers
File transfers occur directly between network Clients, no files pass through the Primary Hosts, instead only the file name strings are indexed and its this "Shared Library" index data that is delivered to searching Clients. If a string match is found on the network that matches the one sought by the search originating client a request can be made to obtain the actual file.
A search request will return a list of files and connection information on any remote Client sharing a matching file string entry.
Alternatively a "browse" of a remote user from within a chat room user list or from an entry in the search result list will provide a desired match.
The normal method of transfer is for the local Client wishing to download a file to create a TCP connection to the Client holding the file on their data port. However, in the case where the client sharing the file is behind a firewall, it is necessary for them to "push" the data by making a TCP connection to the downloader's data port.
See "The WPN Filesharing Reference
" for a visual representation of the system used to "manage" transfers across the WPN network.
Further information can be found here "File Transfer Operation
"Browsing" another client is the act of requesting a list of that specific remote clients shared files, this can be via a search list result entry or from wihin a chat channel whilst visiting.
See "WPN Secondary Browse System
", for information regarding the "Browse" function.
The WinMX Queing System
When you try to download a file and the remote client has no free upload slots available WinMX can place you in a queue if you set it to do so. The information found here
details how the system works.
The WinMX Private Messaging System
See "WPN Secondary Private Messaging
", for information regarding the "PM" Ststem used to pass messages between clients.
All files entered into a clients library are hashed using a method thats detailed here
, this method is not based on any high security algorithm and was I believe optimised mainly for speed of Hashing, as such it leaves open the possibility of fake files sharing the hash of a real file, whilst this is a well known possibility very few in the community have experienced counterfiet files obtained by this ruse.
WSX File Format Information
A rough reference on WSX file formatting can be found here
Existing Src Code Implementations
Further developer information can be obtained from reviewing known open src code examples and we have many of those in the WinMXWorld Archive
, good developer names to look under for completed projects are MxControl & Nushi.
References And Credits
The information in this guide is based on the work of Quartz, additional packet information was received from Sean and Richy of the Rebellion, Emulator, Drac our Japanese hero, KM our once friend and Nushi and String who made the tools that allowed the protocol to be examined for implementational clues.
My thanks to the relevant contributors for sharing their own work so others can continue the legacy, cheers to you all.
©2005-2020 WinMXWorld.com. All rights reserved. Page last updated Fri Jun 17 2016