Wednesday, October 19, 2005

IP Chat

Introduction
Today during our time in the drafting lab, my friends and I tried to establish a way to chat with each other without talking. Dave and Oliver lead the initiative and quickly discovered that most of the standard chat programs (Google Talk, MSN, etc.) were blocked. They tried Web MSN, but that was blocked as well. We found a LAN based service and started using that after a while. However the user interface was horrible and we decided the tool was too much of a pain to use. Oliver and I instantly started working on ways to make our own service. We both came to the decision of using the shared directory on our LAN network (the “drop box”) to make a text based chatting service. Oliver started working on it right away, I decided I would have a look at the DLL for the LAN service and see if I could savage something more advanced. Through more thought I was able to come up with an elaborate new way of establishing a chat service. After thinking for five periods I came up with an idea of a service based on many different IPs.

Outline
The basic idea behind my service is making it virtually independent from one main server. Through independence it becomes impossible to block by organizations and does not require one server being put under strain. The system depends on many separate nexuses hosted by different people with the guidelines of one main server. The program would consist of two parts: a chat client and a hosting client. Through chat anyone would be able to connect and through hosting anyone would be able to become a nexus.
Chat client:
The chat client and chat part of the system would still be based on log on. “Key nexuses” would hold the usernames and passwords of different people. Their profile itself (showing personal information, friend’s lists and all the other nexuses the person is connected to) would be essential but could be hosted from anywhere (even the person’s own C: drive). To make naming easier, you could register your own computer with a “key nexuses” and it would attribute a name to your machine (since most home users have varying IP addresses). In other words you could register with someone like “importantserver.com” or you could make your own domain name like: “importantserver.com/user”. This way of making your own domain name would allow for more names as well as keeping password information on a trusted computer.
Each chat client and their profile (which could consist of more than one account) will communicate to other users through direct IP links. When you click on a user’s name a message will be sent to one of the nexuses you share in common and you will be provided with the users current IP (it will be hidden deep inside the client so it is not too easy to retrieve). When you type up a message and send it, it will go straight to that person’s computer without having to take a detour to servers like msn.com or something. This direct link would make the connection slightly faster and much more efficient for such VoIP and Video conferencing. When several users are online each client decides which way of sending information will be more effective (through Nexus or to each individual IP directly) and takes the best course of action.
Hosting Client:
The hosting client will allow any individual to make their personal computer or server into a nexus. If a person has a server with a static IP, then they can become a full fledges nexus that can give out its own usernames (although people with usernames from other servers will still be able to connect). If the host-to-be does not have their own domain name, then they will have to find a nexuses that can provide them with a name of sorts. This local and easy to set up server system, will allow groups of friends to have their own chat server and for sites to host effective chat rooms. This might seem a lot like IRC, but the big difference is that there is no site that you have to send all information through; you just need a site to get other people’s IPs from. Each hosting client will also allow the option of being free-access or password protected.

String Connecting
With all these servers being around it could become easy to get lost and confused. A special system is included in my plan to account for confusion. If you want to find some nexuses, (lets say if your profile got lost) you just call a friend by their IP and you will be automatically given every nexus connection they have and allow others to view. The same will happen whenever you engage in a chat. For every nexuses on your list of connections you will be given an option of making it viewable by others or not. Whenever you connect to someone their client will automatically tell your client all the other viewable nexuses they are connected to. This system will allow you to stay connected to someone even one (or more) servers go down. As long as you can find one server in common you can connect (or as long as you do not close the window and keep a direct link). You will also be able to block users or nexuses or disconnect from nexuses as you please. If you decide a certain server is giving out your IP to people that really should not have it then you just disconnect from it and your client will not send your IP to them anymore.

Conclusion
The biggest thing going for my system is that it is completely decentralized. Decentralization makes the system almost impossible to shut down. Instead of running through one server like we do now a more internet type system is applied. My IP Chat program follows the philosophy that founded the internet: a serious of separate networks (nexuses) interconnected between each other. I will start preliminary work on this project sometime next week and see how far I can get before I hit a dead end. If you have any questions, advice or other comments, feel free to post them.

Labels: ,

2 Comments:

Anonymous Anonymous said...

This comment has been removed by a blog administrator.

10:45 PM  
Anonymous Ben Anderman said...

It wouldn't be so hard to block though. All you'd have to do is block the program, the server that hosts the program, and watch for any connections to servers on the port your client uses. And since not being able to be blocked seems to be the main goal of this system, I'm not sure what the point would be otherwise. On the point of being more efficient with direct connections, I'm pretty sure all the audio and video chat services available now already do that, because otherwise it'd not only be slower, but it would also use up tons of their bandwidth. I'm pretty sure MSN does direct connections usually too (because I've talked to people while being "offline" on it,) and AIM lets you request a direct connection, and you can then send pictures or sound if the other person accepts.

However, if you just want a quick solution, I've made an http based chat system, with Flash and Javascript clients for it. You can feel free to use it any time as much as you want, because it's mostly unused, and it has rooms and private messages, if someone ever intrudes:
http://www.flashchat.tk (the Flash client)
http://jove.prohosting.com/benscats/jschat.html (the Javascript client)
The reason this probably won't get blocked, is just because it's different, and if no one notices, they won't know to block it. And it uses http, so it's just like browsing web pages (the system is actually horrible, but it does work.) Note that you can use the Flash client and talk to people who are using the Javascript client - it's the same server.

5:08 PM  

Post a Comment

Links to this post:

Create a Link

<< Home