$page->title = 'Protocols'; require('template.inc.php'); <li><a href="#icq">ICQ
</a></li> <li><a href="#irc">IRC
</a></li> <li><a href="#jabber">Jabber
</a></li> <li><a href="#msn">MSN
</a></li> <li><a href="#napster">Napster
</a></li> <li><a href="#Novell">Novell
GroupWise
</a></li> <li><a href="#oscar">Oscar
("AIM/ICQ")
</a></li> <li><a href="#Sametime">Lotus
Sametime
</a></li> <li><a href="#toc">TOC
</a></li> <li><a href="#yahoo">Yahoo!
</a></li> <li><a href="#zephyr">Zephyr
</a></li> The
ICQ
protocol
was
originally
developed
by
Mirabilis,
Inc.,
which
was
later
bought
by
AOL.
Although
the
protocol
was
never
open,
there
have
been
several
groups
which
have
attempted
to
reverse-engineer
it.
Most
of
them
are
cooperating
now,
sharing
the
information
they've
obtained
about
it.
Gaim
is
able
to
use
ICQ
thanks
to
icqlib,
which
has
taken
most
of
the
information
gathered
and
put
it
into
a
library.
ICQ
is
based
on
both
UDP
and
TCP.
The
connection
with
the
server
is
UDP,
and
messages
such
as
who's
online
are
sent
via
UDP.
When
you
have
a
conversation
with
someone,
you
connect
to
them
using
TCP,
and
messages
are
sent
directly.
It
is
possible
to
send
messages
through
the
server
in
cases
where
direct
TCP
connections
aren't
possible.
Direct
TCP
connections
are
also
established
for
file
transfers
and
chats.
ICQ99
was
the
last
official
ICQ
client
to
use
the
UDP-based
protocol.
Starting
with
ICQ2000,
the
official
ICQ
client
uses
a
modified
version
of
<a href="#oscar">Oscar
</a>.
It
is
now
possible
(and
recommended)
to
use
<a href="#oscar">Oscar
</a> to
connect
to
the
ICQ
network
instead
of
ICQ/libicq.
In
fact,
we
recommend
this
so
strongly
that
we've
stopped
officially
distributing
the
protocol
plugin
for
ICQ.
IRC
is
one
of
the
oldest
communication
systems;
RFC
1459,
which
documents
the
protocol,
makes
reference
to
its
initial
design
work
starting
in
1989.
Depsite
being
standardized
in
an
RFC,
several
IRC
servers
deviate
slightly
from
the
specification,
though
generally
only
enough
to
irk
IRC
client
IRC
is
a
TCP-based
protocol,
and
is
completely
text-based.
It's
possible
to
use
a
standard
telnet
client
as
an
IRC
client
if
you
know
the
protocol
well
enough.
IRC
historically
has
been
used
mainly
for
chat
rooms,
while
AIM
and
ICQ
have
been
primarily
for
one-on-one
messaging;
however,
while
AIM
and
ICQ
both
provide
group
chats,
IRC
also
provides
private
messages.
IRC
was
not
designed
with
a
"buddy
list"
concept
in
mind,
though;
people
are
able
to
change
their
username
while
they
are
connected
to
the
server,
which
makes
having
a
buddy
list
difficult.
However,
because
IRC
is
used
mainly
for
chat
rooms,
if
you
want
to
know
if
someone
is
available,
it's
usually
as
easy
as
just
joining
a
chat
room
they
frequent.
Often
users
will
also
modify
their
username
to
indicate
state
-
warmenhoven
might
change
his
nick
(username)
to
warmenhoven_Asleep
to
indicate
that
he's
connected
but
not
present.
Jabber
is
the
coolest
IM
system
on
the
planet
(it
says
so
on
the
Jabber.org
website).
Originally
designed
by
Jeremie
Miller,
Jabber
has
grown
to
be
the
largest
and
most
successful
Open
Source
IM
System
available.
The
Jabber
servers
and
source
code
are
available
for
download,
as
are
clients
for
nearly
every
OS.
Gaim
can
act
as
a
Jabber
client
thanks
to
libxode
and
libjabber,
which
are
Open
Source
and
provided
by
Jabber.
Jabber
usernames
are
reminiscent
of
email
addresses:
a
typical
Jabber
username
would
be
warmenhoven@jabber.org
or
robflynn@jabber.com.
Jabber
also
lets
you
connect
using
the
same
username
multiple
times,
using
what
they
term
a
"resource".
A
resource
is
an
arbitrary
string,
often
seen
appended
to
your
username,
e.g.
warmenhoven@jabber.org/Gaim
(Gaim
in
this
case
being
the
resource),
which
lets
the
server
keep
track
of
how
many
times
that
username
is
signed
on.
The
Jabber
protocol
is
TCP-based
and
XML-encoded.
Because
it
is
based
in
XML,
it
is
the
most
extensible
IM
system
available.
Users
form
one
TCP
connection
to
the
server
in
the
duration
of
the
session.
Passwords
can
be
encoded
in
a
variety
of
different
ways;
however,
currently
Gaim
only
allows
plain
text
(i.e.
no
encryption
of
passwords).
All
communication
is
routed
through
the
Jabber
servers.
It
is
possible
to
talk
to
a
user
that
is
connected
to
a
different
server
than
you
are,
assuming
both
servers
Jabber
also
has
what
they
call
a
"transport".
A
transport
is
a
way
of
connecting
to
another
IM
service,
such
as
AIM
or
ICQ.
In
order
to
use
a
transport,
you
"subscribe"
to
it,
which
is
sort
of
like
adding
it
to
your
buddy
list,
except
you
must
also
provide
a
valid
username
and
password
(e.g.
if
you
were
subscribing
to
the
AIM
transport,
you
would
tell
it
your
AIM
username
and
the
password
for
that
account).
Once
you
have
subscribed
to
a
transport,
it
will
sign
onto
that
service
using
the
specified
username,
and
you
can
talk
to
people
using
that
service
-
their
username
would
be
ewarmenhoven@aim.jabber.org,
for
example.
The
username
they
would
see
is
the
one
you
subscribed
to
the
transport
with.
Currently
in
Gaim,
you
cannot
subscribe
to
a
transport
-
however,
if
you
subscribe
to
a
transport
using
a
different
client,
Gaim
can
make
use
of
it.
<p>The
MSN
protocol
was
originally
published
by
Microsoft
as
an
<a href="http://www.hypothetic.org/docs/msn/ietf_draft.txt">IETF
draft
</a>.
It
has
since
been
"embraced
and
extended
" to
the
point
that
it
had
to
be
reverse
engineered
to
work.
Some
documentation
on
this
effort
is
available
<a href="http://www.hypothetic.org/docs/msn/index.php">here
</a>.
</p> Ahh,
Napster.
The
music
sharing
network
that
started
it
all.
Gaim
does
not
support
sharing
files
over
Napster.
With
that
out
of
the
way,
what
does
Gaim
support?
Instant
messages
and
buddy
list
notification.
We
are
not
aware
of
anyone
that
actually
uses
this...
but
it
does
work.
You
can
get
a
free
Napster
Server
from
<a href="http://opennap.sourceforge.net/">http://opennap.sourceforge.net/
</a>.
They
distribute
Windows
binaries.
I'm
not
sure
if
it
compiles
in
Linux.
GroupWise
Messenger
is
a
cross-platform
instant
messaging
system
designed
for
the
corporate
marketplace.
It
leverages
Novell
eDirectory
for
user
authentication,
user
searching,
and
system
administration.
Conversations
are
secured
using
SSL
encryption
between
the
client
and
server.
The
protocol
supports
two-way
conversations,
multi-way
conversations,
presence
information/updates
for
contacts,
contact
properties
(based
on
attributes
in
the
directory),
custom
status
messages,
auto
replies,
and
privacy
management.
Oscar
is
the
official
AIM
protocol
created
by
AOL,
and
all
official
AIM
clients
use
Oscar.
Oscar
is
a
closed
protocol,
unlike
TOC;
AOL
has
never
released
any
specifications
on
Oscar,
which
means
that
all
of
our
knowledge
about
Oscar
comes
from
reverse
engineering.
The
libfaim
authors
have
been
working
on
this
for
nearly
three
years.
Gaim
first
featured
the
ability
to
use
libfaim
in
0.9.7,
though
it
was
never
worked
on
enough
to
be
usable;
it
wasn't
until
0.9.16
when
it
was
somewhat
usable,
and
0.9.20
when
it
was
able
to
be
used
without
special
compilation
options.
Oscar
is
now
the
protocol
that
most
Gaim
users
use
(as
witnessed
by
the
outcries
on
Slashdot
when
it
stops
working).
Oscar
is
a
TCP-based
protocol.
It
is
binary,
which
means
that
commands
are
stored
in
integers
rather
than
in
character
strings.
This
makes
it
considerably
easier
to
extend
the
protocol
when
you
want
to
add
new
features.
For
any
successful
signon,
there
are
at
least
three
connections
made:
first
to
the
Authorizor,
which
validates
your
username
and
password;
then
to
the
BOS
(Basic
Oscar
Service),
the
main
connection
to
which
and
from
which
you
send
and
receive
messages;
and
ChatNav
(Chat
Navigation),
which
allows
you
to
create
and
join
chat
rooms.
In
addition,
each
chat
room
that
you
join
is
another
TCP
connection.
Finally,
each
file
transfer
and
direct
connection
you
make
is
another
TCP
connection,
but
these
never
pass
through
AOL.
There
are
two
ways
of
sending
your
password,
XOR-based
and
MD5-based;
libfaim
currently
uses
the
MD5
authentication.
All
messages
are
routed
through
AOL,
except
for
direct
connections.
Because
Oscar
is
not
an
open
protocol,
Gaim
doesn't
support
a
lot
of
the
features
that
it
offers.
It
does,
however,
support
all
of
the
features
that
TOC
offers,
as
well
as
several
that
TOC
does
not
offer
(including
the
ability
to
get
users'
away
messages,
and
searching
for
users
by
email
address).
Also,
AOL
has
a
habit
of
blocking
unofficial
clients
from
connecting
using
Oscar,
which
means
that
occasionally
Gaim
does
get
blocked.
However,
Gaim
itself
has
never
been
targeted
to
be
blocked
-
it
has
always
just
been
incidental
while
AOL
blocked
another
service
(Odigo
and
Jabber
come
to
mind).
There
is
some
documentation
of
the
Oscar
protocol
<a href="http://www.kingant.net/oscar/">here
</a> and
<a href="http://www.stud.uni-karlsruhe.de/~uck4/ICQ/Packets">here
</a>.
Support
for
Lotus
Sametime
in
Gaim
is
available
via
an
optional
add-on
package
from
the
Meanwhile
project,
at
<a href="http://meanwhile.sourceforge.net">http://meanwhile.sourceforge.net
</a>.
A
Sametime
(nee
Virtual
Places)
client
uses
a
binary
protocol
built
around
a
single
TCP
connection
to
a
Sametime
server,
communicating
in
what
is
known
as
the
Master
protocol.
Communication
between
clients
is
facilitated
by
a
number
of
services.
Services
provide
functionality
such
as
messaging,
conferencing,
presence
subscription,
server-side
storage
of
settings,
and
a
user
directory.
Each
service
requires
the
client
to
handle
a
different
sub-protocol
over
one
or
more
Channels.
Sametime
communities
must
be
explicitly
connected.
If
two
communities
are
not
explicitly
connected,
there
is
no
way
for
a
user
on
one
community
to
communicate
with
a
user
of
another
community.
The
Sametime
protocol
was
originally
published
in
draft
form
to
the
IETF
as
part
of
the
IMPP
working
group.
The
"houri-draft"
has
long
since
expired,
but
was
mostly
a
correct
reference
to
the
Master
protocol
and
some
sub-protocols.
A
copy
is
available
<a href="http://meanwhile.sourceforge.net/docs/draft-houri-sametime-community-client-00.txt">here
</a>.
The
Meanwhile
project
is
not
a
product
of
IBM
or
Lotus,
and
is
therefore
neither
endorsed
nor
supported
by
either.
TOC
was
created
by
AOL
to
allow
unofficial
clients
to
connect
to
the
AIM
service.
TOC
was
originally
used
by
TiK,
an
AIM
client
written
in
tcl/Tk.
Gaim
was
one
of
the
first
clients
to
make
use
of
the
protocol
-
if
it
hadn't
been
for
TOC,
Gaim
wouldn't
exist.
TOC
is
a
TCP-based
protocol.
It
is
ASCII-based,
but
uses
a
6-byte
binary
header
for
length
information.
There
is
usually
only
one
connection
made
in
a
normal
session;
however,
a
connection
is
made
for
every
file
transfer
that
takes
place,
but
these
are
direct
connections,
and
so
never
go
through
AOL.
Passwords
are
sent
using
a
weak
encryption
algorithm.
All
messages
are
routed
through
AOL,
except
for
when
a
direct
connection
is
requested
-
however
there
are
no
TOC
clients
that
support
direct
IMs
(that
Because
TOC
is
not
the
official
AIM
protocol,
and
no
official
client
has
ever
used
TOC
(with
the
exception
of
TiK),
in
addition
to
not
keeping
up
with
the
official
protocol
in
terms
of
functionality,
TOC's
usability
has
actually
deteriorated
since
it
was
released.
It
does
not
support
new
features
that
official
clients
support,
including
the
ability
to
request
a
file
transfer
(it
can
accept
a
request
made
by
an
official
client
though),
and
the
ability
to
view
users'
away
messages
without
relying
on
an
auto-reply.
It
has
also
lost
capabilities,
such
as
searching
for
users
by
<p>This
section
has
not
yet
been
written.
</p> Zephyr,
or
more
completely
the
Project
Athena
Zephyr
notification
system,
is
an
IM
system
designed
by
MIT.
It
is
founded
on
basic
Unix
principles
-
simple
applications
that
do
one
thing
very
well.
A
normal
Zephyr
client
installation
normally
consists
of
eight
or
nine
clients
-
each
which
serve
a
different
purpose
(one
for
receiving
messages,
one
for
sending
them,
one
for
searching
for
online
users,
etc.).
Gaim
attempts
to
integrate
the
functionality
of
several
of
these
clients
(most
of
which
are
console-based)
into
one
GUI
client.
Zephyr
is
based
on
a
library
that
is
distributed
in
the
Zephyr
source,
which
is
what
Gaim
uses
to
connect
to
Zephyr
is
a
UDP-based
protocol,
and
in
order
to
keep
messages
reliable,
it
has
a
"host
manager".
Every
machine
that
acts
as
either
a
client
or
a
server
for
Zephyr
must
be
running
one
and
only
one
instance
of
the
Zephyr
host
manager
(zhm).
Gaim
does
not
provide
this,
so
in
order
to
use
Zephyr
in
Gaim,
you
must
make
sure
that
zhm
is
properly
set
up
and
configured
first.
The
Zephyr
library
gets
your
username
from
getuid()
or
your
Kerberos
name
-
meaning
that
the
username
and
password
you
tell
Gaim
are
ignored.
It
also
means
that
you
can
only
use
Gaim
to
connect
to
Zephyr
once
(you
actually
can
connect
to
it
multiple
times,
but
the
more
often
you
connect,
the
more
of
a
drain
on
server
resources
you
are).