OSCAR (protocole)

OSCAR

Informations
Fonction Messagerie instantanée
Sigle OSCAR
Port ?

OSCAR (acronyme de Open System for CommunicAtion in Realtime) est le protocole le plus important d'AOL pour la messagerie instantanée et l'information de présence. Actuellement, OSCAR est utilisé par les deux principaux systèmes de messagerie instantanée d'AOL : ICQ et AIM.

Malgré son nom, les spécifications du protocole sont propriétaires. AOL a fait de grands efforts pour empêcher ses concurrents (à savoir Microsoft, XMPP et Cerulean Studios (en)) d'implanter des clients compatibles avec leurs systèmes de messagerie instantanée propriétaires. En 2002, AOL a signé un contrat avec Apple lui permettant d'utiliser OSCAR (ainsi que ses bibliothèques logicielles) dans son application iChat. Cela a permis aux utilisateurs d'iChat d'interagir directement avec les utilisateurs d'ICQ et d'AIM. L'accord a également permis aux utilisateurs du service .Mac d'Apple de se connecter au réseau AIM en utilisant leurs adresses électroniques .Mac (cette possibilité a, par la suite, été implantée sur le service MobileMe d'Apple).

En 2009, une grande partie du protocole avait été exposée par rétro-ingénierie et mise en œuvre par un nombre toujours croissant de clients tiers.

Le protocole OSCAR peut être utilisé indépendamment du réseau d'AOL. En fait, AOL étend le concept général de OSCAR, en ajoutant des systèmes de listes et des icônes secondaires de service, ainsi que des fonctionnalités pour les transferts de fichiers (à l'aide d'Apple_Bonjour).

Le , AOL a publié le SDK AIM et a lancé un site du développeur, ce qui permet aux développeurs de créer des plug-ins pour AIM et de construire leurs propres clients personnalisés qui se connectent via le protocole OSCAR. Cependant, AOL n'avait pas, à cette date, publié d'information sur le protocole lui-même.

Le , AOL a publié des portions de la documentation du protocole OSCAR.

Google offre également la possibilité de se connecter au réseau AIM à travers le client Google Talk intégré dans Gmail.

Structure de paquet

Tous les paquets envoyés sur OSCAR sont encapsulés de la même manière. Tous les nombres entiers de 16 bits envoyés sur le réseau ne sont pas signés et sont de type big endian (voir endianness). Il en est de même pour les nombres entiers de 32 bits et de 8 bits.

Entête FLAP

Un conteneur FLAP (Frame Layer Protocol[1]) renferme chaque paquet. Il contient des informations sur la taille du paquet, son canal et son numéro de séquence.

Offset (hex) Champ Type/Taille (en octets) Remarques
00 FLAP ID byte/1 Contient toujours 2A. C'est la marque de début de paquet.
01 Canal byte/1 1 = connexion, 2 = couche SNAC, 3 = erreur, 4 = déconnecter
02 Numéro de séquence int16/2 Incrémenté de 1 chaque fois qu'un paquet est envoyé. Recommence à 0 après FFFF.
04 Taille de donnée int16/2 La taille n'inclut pas l'entête de la FLAP.

Donnée SNAC

Dans presque tous les paquets envoyés sur le canal 2, les paquets contiennent un SNAC (Simple Network Atomic Communication). Il y a toujours un ou zéro de ces contenus dans un paquet. Par conséquent, les paquets ne contiennent pas (et n'ont pas besoin) d'un champ de longueur.

Offset (hex) Champ Type/Taille (en octets) Remarques
00 Foodgroup int16/2 Le type général du paquet
02 Type int16/2 Le type spécifique de la foodgroup
04 Flags int16/2
06 ID de requête int32/4 Il peut être aléatoire, mais le bit le plus significatif ne peut être 1.

Implémentations

Langage de
Programmation
Implémentations
C libpurple
GnomeICU
C# NOscar
C++ « QOscar (Qt) »(Archive.orgWikiwixArchive.isGoogleQue faire ?)
C# 2.0 OscarLib
Java joscar
Instant Messenger Lib
« daim »(Archive.orgWikiwixArchive.isGoogleQue faire ?) (consulté le )
Objective-C LibOrange
OCaml mlOscar
Python TwistedWords
Perl Net::OSCAR
PHP WebIcqPro

Référence

  1. « FLAP - Frame Layer Protocol », AOL Developer Network, AOL, (consulté le )

Voir aussi

Liens externes