Back in the late 90′s, Instant Messaging was a big thing in the internet. AOL’s AOL Instant Messenger (AIM), Yahoo, and ICQ were the big players in the market. In 1997, Microsoft acquired Hotmail, one of the most popular e-mail service. By seeing the popularity of the instant messengers, Microsoft decided to enter the market with MSN Messenger by allowing every Hotmail user be able to log on to Messenger with a Hotmail address and password as seamlessly as possible. Along with that plan, Microsoft decided to include AIM log-in option to allow millions of users to instantly connect with each other. Obviously, AOL didn’t allow Microsoft to get access to their system and Microsoft decided to break through it. Microsoft decided to reverse engineer AOL’s chat protocol and implemented the integration. A developer at MSN Messenger at that time has now shared his work on how everyday they used to decode AOL’s protocol to make the interop work on MSN Messenger.
After we finished the user part of the program, we had some down- time while waiting for the server team to finish the Hotmail integration. We fixed every bug we could find, and then I added another little feature just for fun. One of the problems Microsoft foresaw was getting new users to join Messenger when so many people already used the other chat programs. The trouble was that the programs, then as now, didn’t talk to one another; AOL didn’t talk to Yahoo, which didn’t talk to ICQ, and none of them, of course, would talk to Messenger. AOL had the largest user base, so we discussed the possibility of adding code to allow Messenger to log in to two servers simultaneously, Microsoft’s and AOL’s, so that you could see your Messenger and AIM buddies on a single list and talk to AIM buddies via Messenger. We called it “interop.”
This wasn’t elegant, but it wasn’t that complicated, either. A program talks to a server using a well-defined protocol, which is a set of coded instructions sent to and from the server. HTTP (hypertext transfer protocol), used to request and transmit web pages, is one of the most common protocols in existence. It is built on top of TCP/IP (transmission control protocol/internet protocol), the underlying protocol of the internet itself. Internet companies run servers that speak these and other protocols. Some protocols, like HTTP and TCP/IP, are public, documented, and spoken by everyone, but some are private/ proprietary and undocumented. AIM’s protocol, known as OSCAR (for Open System for CommunicAtion in Realtime), was in the latter group. I didn’t have the “key” to decode it. But what I could do was sign up for an AIM account and then watch the communications between the AIM client and the server using a network monitor, a development tool used to track network communications in and out of a computer. That way I could see the protocol that AIM was using.
It’s a great read. Read it yourself from the source link below.