**客户端至客户端协议**（英語： ，简称**CTCP**）是互联网中继聊天（IRC）客户端之间的一种特殊类型的通信。

CTCP是现今使用的大多数IRC客户端支持的一种常见协议。CTCP扩展了原始的IRC协议，允许用户查询其他客户端或频道（使频道中所有客户端都回复CTCP特殊信息）。此外，CTCP可以用来编码信息，发送原始IRC协议的链路不允许发送的信息，例如包含換行或字节值为0（NULL）的信息。CTCP不在客户端之间建立直接连接，但它通常用于协商DCC（英语：）连接。

CTCP允许用户查询远程客户端正在使用的客户端版本（通过`CTCP VERSION`）或时间（`CTCP TIME`）等信息。它还实现了/me命令（通过`CTCP ACTION`）。

历史
--

ircII（英语：）是第一个实现了CTCP和DCC协议的IRC客户端。Michael Sandrof在1990年将CTCP协议在ircII 2.1版中实现，Troy Rollo在1991年将DCC协议在2.1.2版本中实现。

结构
--

CTCP采用一条`PRIVMSG`与`NOTICE`消息实现，消息中的第一个和最后一个字符是ASCII值0x01。此外，IRC协议中不允许的字符将被转义。由于`NOTICE`按标准应产生一条回复，CTCP消息采用`PRIVMSG`发送，而回复采用`NOTICE`而非`PRIVMSG`实现。

CTCP查询在大多数客户端上按下列方式初始化：

```
CTCP <target> <command> <arguments>
```

其中*<target>*是目标的昵称或频道名称，*<command>* 是CTCP命令（例如`VERSION`），*<arguments>* 是发送给*<target>*的额外信息。

常用CTCP命令
--------

请注意，下列CTCP命令和回复因客户端而不同，但大多数主要的IRC客户端支持它们。因您的IRC客户端不同，传入特定CTCP命令后，您可能会收到或不会收到自动的回复或响应，并且这些自动响应可能因客户端不同而有差异。

### VERSION

`CTCP VERSION`请求将返回目标正在使用的IRC客户端的名称和版本，某些情况下还提供一些技术信息，诸如操作系统、时钟频率、CPU制造商和CPU架构/指令集。

下面是将一个`CTCP VERSION`请求发送到运行有HexChat客户端（XChat的一个复刻）的回复：

```
VERSION HexChat 2.9.1 [x86] / Windows 8 [1.46GHz]
```

### TIME

`CTCP TIME`请求将返回目标计算机的本地时间。决于IRC客户端，回复可能是包含日期、时间（12小时格式或24小时格式），年（例如2019）以及某种时区（例如AEST）。

下面是将一个`CTCP TIME`发送到使用ChatZilla客户端后的回复：

```
TIME Fri 23 Nov 2019 19:26:42 AEST
```

### PING

`CTCP PING`请求将测量现有两个客户端之间的直接ping速率（不算服务器）。`CTCP PING`命令采用的方式是，发送一个整数参数（一个時間戳）到目标客户端，然后目标客户端提供完全相同的数字参数来响应。之后计算原始时间戳与当前时间戳的差异，将结果显示给发起*CTCP PING*的用户。在过程中通常使用毫秒级的时间戳，因为大多数用户使用的寬頻互联网连接通常只有1秒以下的ping延迟。

一个`CTCP PING`请求的示例，从XChat客户端发送给目标*<nickname>*：

```
CTCP PING 23152511
```

在之后，根据所获样本差异产生的结果：

```
Ping reply from <nickname>: 0.53 second(s)
```

### DCC

* 参见直接的客户端至客户端（英语：）。

参见
--

* IRC
* IRC客户端的比较（英语：）
* DCC（英语：）（直接的客户端至客户端）

参考资料
----

1. ↑  Piccard, Paul; Brian Baskin; George Spillman; Marcus Sachs..  1st. Syngress. May 1, 2005: 386. ISBN 1-59749-017-2. The authors of the ircII software package originally pioneered file transfers over IRC.
2. ↑  See the 'NOTES' and 'source/ctcp.c' files included with ircii-2.1.4e.tar.gz[永久]
3. ↑  See the 'UPDATES' and 'source/dcc.c' files included with ircii-2.1.4e.tar.gz[永久]

外部链接
----

* CTCP Details（页面存档备份，存于）

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
因特网中继聊天（IRC） |
| --- |
|  |
| 

|  一般主题 |
| --- |
|  |
| 常用术语 | 
* Bounce (网络)
* IRC机器人
* 频道
* 拒绝服务攻击
* 频道操作
* 客户端
* 刷屏
* Hostmask
* IRC
* 網路斷裂
* 网络
* 操作員（英语：）
* 脚本（英语：）
* 服务器（英语：）
* 服务
* Internet Relay Chat takeover（英语：）
* vhost

 |
|  |
| 列表和比较 | 
* IRC命令列表（英语：）
* IRC机器人的比较（英语：）
* IRC客户端的比较（英语：）
* IRC移动客户端的比较（英语：）
* IRC服务端的比较（英语：）

 |
|  |
| 相关协议 | 
* IRC
* IRCX（英语：）
* MSN Chat（英语：）
* P10
* 客户端至客户端协议
* 直接的客户端至客户端（英语：）
* XDCC（英语：）
* Ident协议（英语：）

 |
|  |
| 另请参阅 | 
* Internet Relay Chat subculture（英语：）
* 亚尔科·奥伊卡里宁（英语：）

 |

 |
|  |
| 

|  客户端（比较（英语：）） |
| --- |
|  |
| MacOS | 
* Colloquy（英语：）
* Fire（英语：）
* Homer（英语：） (Mac OS)
* Ircle（英语：）
* Linkinus（英语：）
* Irssi
* Snak（英语：）

 |
|  |
| 微軟視窗 | 
* Bersirc（英语：）
* MIRC
* Microsoft Comic Chat（英语：）
* PIRCH（英语：）
* Shareaza
* Visual IRC（英语：）

 |
|  |
| 类Unix系统 | 
* ircII（英语：）

 |
|  |
| 跨平台 | 
* BitchX
* Irssi
* Konversation
* KVIrc（英语：）
* LeafChat（英语：）
* naim (software)（英语：）
* Smuxi（英语：）
* WeeChat
* XChat
* PJIRC（英语：）
* Quassel IRC
* IceChat（英语：）

 |
|  |
| 即时通信 | 
* Centericq（英语：）
* Empathy
* Kopete
* Miranda IM
* Pidgin
* Trillian

 |
|  |
| 网络应用程序 | 
* CGI:IRC（英语：）
* PJIRC（英语：）
* Mibbit（英语：）

 |
|  |
| 网页浏览器组件 | 
* ChatZilla
* Mozilla Application Suite

 |
|  |
| 库和插件 | 
* ERC (IRC 客户端)
* rcirc（英语：）

 |

 |
|  |
| 

|  机器人（比较） |
| --- |
|  |
| 
* Eggdrop（英语：）
* Infobot（英语：）
* 兰德尔·门罗

 |

 |
|  |
| 

|  Bouncers、网关和代理 |
| --- |
|  |
| 
* BitlBee（英语：）
* ZNC

 |

 |
|  |
| 

|  服务端（比较） |
| --- |
|  |
| 
* IRCd
* ircu
* UnrealIRCd

 |

 |
|  |
| 

|  网络 |
| --- |
|  |
| 
* DALnet（英语：）
* EFnet（英语：）
* Freenode
* GameSurge（英语：）
* 5ch
* IRCnet（英语：）
* Libera Chat
* Open and Free Technology Community（英语：）
* QuakeNet（英语：）
* Rizon（英语：）
* RusNet（英语：）
* SlashNET（英语：）
* Undernet Cservice（英语：）

 |

 |

 |