File = root:/irc/ctcpdcc.txt | Uploaded on 21/12/2002

:: Back ::

CTCP and DCC Protocol Questions
Version 1.0 written by LGM
===============================

* What does "CTCP" stand for?
* Why is it called Client to Client Protocol?
* How does it work?
* What are the common CTCP commands?
* Why don't some IRC clients support all these?
* How do I send a CTCP command?
* What is a CTCP flood?
* How do CTCP floods work?
* What about DCC?
* What can I do if I want more information on CTCP?
* Summary

===============================

Q: What does CTCP stand for?

CTCP stands for Client To Client Protocol. This is not to be
confused with the CCCP ;)

Q: Why is it called Client to Client Protocol?

Because it is sent and interpreted by your IRC client. The
IRC server has nothing to do with CTCP. It treats a CTCP
message as just another /msg to someone. Unlike other
commands, for example /whois.

Q: How does it work?

In CTCP, there are two forms of communication: COMMAND and
REPLY. Commands are sent as follows:

PRIVMSG ((target):^A ((command>) ((value)^A, where
* ^A = ASCII Character 1
* command = CTCP command
* value = value to be processed by the target's client

And REPLIES in this format:

NOTICE ((target):^A ((command) ((value)^A, where
* ^A = ASCII Character 1
* command = CTCP command
* value = value to be processed by the target's client

For example, a ping of channel #xphiles would be:

PRIVMSG #xphiles :^APING 866780265^A

This message would be received by all the people on channel
#xphiles but yourself. They would all get this:

:LGM!duck@opera.iinet.net.au PRIVMSG #xphiles :^APING 866780265^A

For example, a reply to this ping would be:

NOTICE LGM :^APING 866780265^A

This message would be received by LGM like this:

:Skinner!sjm076@ppp-per-217.ca.com.au NOTICE LGM :^APING 866780265^A

LGM's client would then interpret this as being a reply to
a PING and process it accordingly, in this case, taking the
timestamp (866780265) and subtracting it from the current timestamp.

Q: What are the common CTCP commands?

CLIENTINFO, ACTION, DCC, ERRMSG, FACE, FINGER, PING, SOUND,
SOURCE, TIME, USERINFO, VERSION, and XDCC.

Briefly, this is what each command does:

CLIENTINFO -- Display valid CTCP commands for that client.

ACTION -- when you type /me does this, it is actually sent
as a CTCP message. However, unlike other CTCP commands, it
does not require a REPLY, and none should be given.

DCC -- DCC is established by CTCP, however it is not conducted
over CTCP. See the section on DCC for more information on this
protocol.

ERRMSG -- Reply to unknown CTCP command.

FACE -- Pictographic 32x32 pixel representation of user
(Macintosh clients only).

FINGER -- Shows idletime of client, usually with an e-mail
address and message.

PING -- Used to measure lag, or the time it takes for information
to travel between servers.

SOUND -- Causes the client(s) that receive it to play a sound file.

SOURCE -- A URL where the client/script can be obtained.

TIME -- Local time of recipient.

USERINFO -- Shows a "witty" saying set by user.

VERSION -- Replies with IRC client version.

Q: Why don't some IRC clients support all these?

Because they don't basically ;) However, nearly every IRC
client will support CLIENTINFO, which shows what commands that
client supports.

Q: How do I send a CTCP command?

/CTCP ((target) ((command) is implemented in nearly every IRC
client. For those that it isn't, usually commands like
/version ((target), /ping ((target), etc., are. The exception
to this is PING, which is usually done by /ping ((target)
(or /cping ((target) in ircle).

Q: What is a CTCP flood?

It is when someone maliciously makes your client reply to CTCP
messages with the purpose of making you disconnect from the
IRC server.

Q: How do CTCP floods work?

Most servers are set up to allow you receive more data than
you can send; therefore some commands such as CLIENTINFO can
be used to disconnect you.

The command to make your client reply to a CLIENTINFO is
12 characters (plus source/target information), while the
reply to CLIENTINFO may be 100 - 200 characters. You will
be disconnected with the message "Excess Flood."

Q: What about DCC?

DCC is started by a CTCP command. However, once it is started,
it is conducted totally independant of the IRC server. For
example, to start a DCC chat connection, the originator of the
request (whoever typed /dcc chat ((nick)] will send something
like this:

PRIVMSG ((target) :^ADCC CHAT ((type) ((longip) ((port)^A

* ^A = ASCII Character 1
* type = Either Chat or Talk, but almost always Chat these days
* longip = 32-bit Internet address of originator's machine
* port = Port on which the originator is waitng for a DCC chat

The person I want to DCC chat would get this:

:LGM!duck@opera.iinet.net.au PRIVMSG SomeOne :^ADCC CHAT
CHAT 3406736986 2094^A

From this, their IRC client would know that the machine with
address 3406736986 is ready to accept a DCC chat connection on
port 2094. The IRC client of the target of the DCC chat would
then establish a connection to port 2094 of machine 3406736986
if the DCC chat was accepted.

DCC file sends are similar to DCC chat requests, but follow the
format below:

PRIVMSG ((target) :^ADCC SEND ((filename) ((longip) ((port)
((filesize)^A, where

* ^A = ASCII Character 1
* filename = Name of file being sent
* longip = 32-bit Internet address of originator's machine
* port = Port on which the originator is waiitng for a DCC chat
* filesize = Size of file being sent

The person I want to send a file to would get this:

:LGM!duck@opera.iinet.net.au PRIVMSG Someone :^ADCC SEND
CTCP_and_DCC 3406736986 2097 4509^A

From this, their IRC client would know that the machine with
address 3406736986 is ready to send a file named "CTCP_and_DCC"
that is 4509 bytes long on port 2097. The IRC client of the
target of the DCC send would then establish a connection to
port 2097 of machine 3406736986 if the DCC send was accepted.

Q: What can I do if I want more information on CTCP?

The Undernet Doco-Com website at http://www.doco-com.undernet.org
has the real RFC for both the DCC and CTCP protocols, if you
are interested in referring to these technical documents.

Summary:

CTCP commands are sent as privmsgs. CTCP replies are sent
as notices.

CTCP commands and replies are in the format of
((privmsg/notice) ((target):^A((command) ((arguments)^A.

=================================================
Copyright © 1997 Undernet User Committee




:: Back ::




>> Thanks for visiting apatik.ftp.free.fr <<
>> Also Visit wanna.get.free.fr <<

Mess-France.com : actualité, dossiers, téléchargements, addons, tout sur l'univers d'MSN Messenger!


Script coded by W0lveRIne & mcleod, edited by Apatik, téléchargeable ICI.