CTCP extends the IRC protocol's existing PRIVMSG by adding $chr(1) at the start and at the end of the message.
PRIVMSG NICK :?version?
PRIVMSG NICK $+(:,$chr(1),version,$chr(1))
Most clients can handle CTCP's as their own commands and events, like mIRC. Most common CTCP commands, recognised by majority of clients are:
Sends a CTCP (Client to Client Protocol) request to the user.
/ctcp <nick> <request>