gaim/www
Clone
Summary
Browse
Changes
Graph
Initial import into CVS
chipx86
start
2002-09-26, Christian Hammond
2b210e25fed4
Initial import into CVS
<?php
require
"html.inc.php"
;
start_html
(
"Protocols"
);
start_section
(
"Protocols"
);
?>
<ul>
<li><a
href=
"#toc"
>
TOC
</a></li>
<li><a
href=
"#oscar"
>
Oscar
</a></li>
<li><a
href=
"#yahoo"
>
Yahoo!
</a></li>
<li><a
href=
"#icq"
>
ICQ
</a></li>
<li><a
href=
"#msn"
>
MSN
</a></li>
<li><a
href=
"#irc"
>
IRC
</a></li>
<li><a
href=
"#jabber"
>
Jabber
</a></li>
<li><a
href=
"#napster"
>
Napster
</a></li>
<li><a
href=
"#zephyr"
>
Zephyr
</a></li>
</ul>
<?php
end_section
()
?>
<a
name=
"toc"
></a>
<?php
start_section
(
"TOC"
)
?>
<p>
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.
</p>
<p>
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
I
know
of).
</p>
<p>
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
email
address.
</p>
<?php
end_section
()
?>
<a
name=
"oscar"
></a>
<?php
start_section
(
"Oscar"
)
?>
<p>
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).
</p>
<p>
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.
</p>
<p>
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).
</p>
<?php
end_section
()
?>
<a
name=
"yahoo"
></a>
<?php
start_section
(
"Yahoo!"
)
?>
<p>
This
section
has
not
yet
been
written.
</p>
<?php
end_section
()
?>
<a
name=
"icq"
></a>
<?php
start_section
(
"ICQ"
)
?>
<p>
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.
</p>
<p>
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.
</p>
<p>
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
Oscar.
Because
of
this
it
may
be
possible
to
use
Oscar
in
Gaim
to
sign
on
to
ICQ;
however,
I
don't
recommend
it,
since
there
are
many
features
that
icqlib
provides
that
libfaim
does
not
(for
ICQ,
at
least).
In
the
future
an
effort
may
be
made
to
add
the
ICQ
idiosyncrasies
of
Oscar
to
libfaim,
but
because
icqlib
works
well,
there
isn't
pressing
need,
which
means
that
it
will
take
a
back
seat
to
other
features
that
people
would
like
to
see
(like
file
transfer
in
most
of
the
protocols).
</p>
<?php
end_section
()
?>
<a
name=
"msn"
></a>
<?php
start_section
(
"MSN"
)
?>
<p>
This
section
has
not
yet
been
written.
</p>
<?php
end_section
()
?>
<a
name=
"irc"
></a>
<?php
start_section
(
"IRC"
)
?>
<p>
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
developers.
</p>
<p>
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.
</p>
<?php
end_section
()
?>
<a
name=
"jabber"
></a>
<?php
start_section
(
"Jabber"
)
?>
<p>
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.
</p>
<p>
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.
</p>
<p>
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
allow
it.
</p>
<p>
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>
<?php
end_section
()
?>
<a
name=
"napster"
></a>
<?php
start_section
(
"Napster"
)
?>
<p>
This
section
has
not
yet
been
written.
</p>
<?php
end_section
()
?>
<a
name=
"zephyr"
></a>
<?php
start_section
(
"Zephyr"
)
?>
<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
the
Zephyr
service.
</p>
<p>
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()
-
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).
</p>
<?php
end_section
()
?>
<?php
end_html
();
?>