Background information

In order to understand the rest of the system, the following sections have been provided to provide a brief understanding of various terms and concepts.

What is a Service?

A service is simply the offering by a program to share its capabilities with other programs on a system or network. A service could be as simple as a program providing the answer to a math's problem from a remote system, or something which allows users to listen to music being played on a remote computer. While you can have local services, which are services run by you, and used by yourself (such as the program which organises all of your windows on your desktop automatically), resonance is mainly involved with ones which can be used remotely, on the other side of the planet, or even, provided the infrastructure exists, to the far reaches of the galaxy. The computer offering the service is often referred to as a server.

The Client-server architecture, and decentralized systems

This is the method which computers on the internet use to communicate. Essentially, an internet connection is a link between two entities. The person initiating the communication is a "client", and the server is the entity being communicated with. A good example of the client<->server concept is connecting to a website on a web-browser. In the case of browsing a website, the server is the computer hosting the website online and sharing it with others, while your computer (the computer browsing the site) is the client because you are using it.

There are however cases, when looking at the bigger picture, where systems can be a server and client simultaneously. These systems are known as decentralized, and each computer acts as a single "cell" in the system, instead of as just a server, or just a client.

Decentralized systems often replicate and share data with other cells on the network, creating a dramatic increase in efficiencies and speed (on an ideal systems), which is one of their advantages. Ideally, they can also protect the system from going offline, and reduces the points of failure which exist, making it much harder for the network to be taken down. Unfortunately though, one significant drawback issue with decentralized systems is that the ideal decentralized system also requires good security mechanisms in place, as everyone who downloads one piece of data, shares it automatically with the other nodes (or "cells") who request it on the network. To ensure that clients cannot modify the data they share, cryptographic techniques known as digital signatures need to be employed.

Digital signatures is a 2-key hashing (the process of turning a sentence into a number) technique used to ensure that data being read, is from who they claim. Digital signatures involve generating 2 keys. The first key generated is known as a private key, which is used exclusively by the owner, and the second key is known as a public key, which is distributed to various users.

In the most general cases of digital signatures, the process works like:
  1. Items are signed before leaving the original server with the original servers private key. This involves hashing which generates most commonly a alphanumeric number.
  2. Item is distributed with the hashed number, and the system automatically verifies that the hash provided with the file, matches when using the claimed owners public key. In the case that they match, it means the owner who sent the information is who they claim, otherwise, the data has been sent by another source, most likely a hacker.
The only way to break this system is to break into the original server with the private key and steal that, or hack into the client and add the hackers key to their keylist and then send them the item, but even then, many systems provide ways of marking keys as compromised, rendering all data sent using that key useless.

Instant Messaging and its purpose

Instant Messaging is the primary form of text messaging used over the internet. Normally instant messaging networks are composed of users, where each user has their own roster ( a list of people they know). Everyone on the network is identified by a unique identifier, which in the case of jabber for instance is in the format of <USERNAME>@<SERVERADDRESS>, such as Thinkle@jabber.org.au. Another example is ICQ and their addressing, where every users address is simply the rank in which they joined, for instance: 127983426.

A few features which instant messaging networks may also support, include games, voice chat, video conferencing (using web-cam's) and multi-user chat. Some instant messaging networks such as jabber are also designed around centralised servers, which provides a few extra levels of security. An example of such a security measure is on a network, where unless users transfer files to each other directly, their IP addresses are normally not exposed to the parties on the other end, which makes it difficult to identify a computer uniquely on the internet, using their exact address, reducing the chances they get hacked, and increasing their anonymity.

Addressing on the Internet

On the internet, there are 2 main types of addressing, one of which is actually a layer on top of the other.

The primary addressing type on the internet is known as IP addressing. On the current internet revision, IP addresses are composed of 4 sets are numbers, separated by stops, where each number is in the range of 0-255. An example of an IP address is '192.168.0.1'. While every computer needs a unique IP for the internal network they are connected to, often large groups of computers need to share the same Internet IP (in an office for instance) over an internal network. This normally involves the use of a router, and forwarding tricks to allow such computers to act as a server. While this will be addressed in the new internet protocol (known as IPV6), a downside of the IPV6 protocol is that routers will no longer be able to easily protect users behind a router, prompting the need for new security technologies. You can think of an address in the same way as a street address, everyone has one, but if you are in a block of flats, you might all have the same street number, but can be differentiated in another way.

The other form of addresses are known as DNS addresses and are normally in alphanumeric form. An example of these addresses is resonance.rox0rs.com, or i.ist.lame.com, or even the simplest most common example, which is localhost. In reality, when a user uses one of these, they are looked up first in the HOSTS file on the users computer (on macs and linux, this is in /etc/hosts, and in windows its in an obscure path), and then if it is not found, it is checked on the global DNS system. It uses these systems to translate the address into an IP such as 194.44.44.44. An example is www.sf.net, which actually gets translated to 66.35.250.203. Both addresses you will quickly discover, refer to the same information

Unfortunately, to get an internet-wide DNS address costs money, however, there is nothing stopping anyone from setting up their own private DNS servers and starting their own DNS service for free, which could result in a new type of address like BBB.jabber, or www.resonance.ismelllikecheese. Unfortunately, this capability is rarely used, and is unknown to many, and thus can be exploited by Resonance to greatly enchance the user experience.

By dynamically generating name addresses for friends of a user on their computer, the use of IP's to use their services can be avoided almost completely, and there is less hassle as they no longer need to be concerned with the dynamic state of IP's. To allow friends to have their own DNS addresses for their private usage however requires new technology to allow it to easily be slipstreamed as seamlessly into the user experience as possible.

Universal Plug and Play And It's Uses

Upnp (universal plug and play) is a protocol built into a large amount of the worlds home users routers, and is designed to allow manipulation of an external device, which for our purposes are routers. Upnp's most helpful function for routers is its ability to forward ports on the internet to a computer behind the router transparently, allowing computers behind a firewall to be a server without needing to configure the router manually, making it significantly easier for novice users to set up their own servers as they no longer need to RTFM .

User behaviors on the internet

Friends tend to want to share their services only with other friends, who are most generally on their instant messaging roster, and instant messaging network is probably the most common method used to inform friends when they start a service.

Using the current "system", usually a server owner will have to announce their computers details to everyone on their chat list who wants to join the server. However, if the server admin is running the server and is currently using the service, people who come online at that time, or who close the window might lose the details of the service and need to ask the server admin again, which is a major hassle, especially in the middle of a team deathmatch for instance, where the admin would be inconvenienced by giving out the details in the middle of the game.

The current means users use to share server details with different people are, and the knowledge they need to possess to allow others to connect are:

User type

Knowledge needed to be shared

Means of sharing it

Friend connecting to a friends service

IP, port, service type

Often realtime chat. They could also potentially find the server on the server list in the program too, but unfortunately they are often so long that its difficult to find a specific server, and even worse, game server lists for games like half life take a few minutes to load completely.

Random stranger connecting to a random server

In the case of game servers, they are often available within the programs server list, otherwise, they need a specific IP and port

In the case of games, generally off a multiplayer games list. For most other servers, by published links on the internet generally.


The main conclusions that can be drawn about current connection techniques are:
  1. Most servers have the easiest means for random strangers to connect, and are actually more difficult for friends to connect because they wont necessarily be able to find the correct server off the list
  2. Armed with the knowledge that obtaining ones IP and port for the server is difficult to do, it becomes clear that even though a stranger can connect without asking the server admin any information about the server, its often so difficult for the admin to determine the port number and IP of their server needed by users to connect to a specific server, that it requires a medium to high level of computing knowledge to host a server for just friends, and the only way they may be able to connect, is by sifting through 10000 other gaming servers on a games list.
  3. Humans do not like dealing with numbers and instead prefer alphabetical phrases such as fileserver.person.jabber.org.au.jabber to connect to a users server, instead of 113.12.96.55. It is also known that IP's are not static, and can change when reconnecting to the internet. DDNS helps deal with this issue by allowing users to have their own DNS address in human readable form. However, due to the centralized nature of most DDNS servers, it is not a difficult task to lose your DDNS address (for instance, they could shut it down because they don't agree with "freedom of speech", they go bankrupt or start charging, etc). Despite the flawless compatibility with the rest of the internet, DDNS services also have the problem of not having any access controls, allowing anyone to follow a link directly to the servers IP, which is great for hackers, as all they need is a DNS address and they can hack the target 24/7.
  4. Major corporations will always govern the DNS system, so preferably, the best solution would be to decentralize the dns system as much as possible for smaller, closed space environments (such as servers held between friends). This opens up the system for abuse by the parent company of the domain, and gives them full controll over what you can and cannot do.
The issues with the current setup covers a broad range of topics, touching on everything from political to usability issues, and are in fact issues which could easily be rectified by introducing a better system, controlled by people, instead of companies.