客户端至客户端协议
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
客户端至客户端协议(英語:Client-to-client protocol ,简称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客户端。[1]Michael Sandrof在1990年将CTCP协议在ircII 2.1版中实现[2],Troy Rollo在1991年将DCC协议在2.1.2版本中实现。[3]
结构
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
- 参见直接的客户端至客户端。
参见
参考资料
- ^ Piccard, Paul; Brian Baskin; George Spillman; Marcus Sachs. IRC Networks and Security. Securing IM and P2P Applications for the Enterprise 1st. Syngress. May 1, 2005: 386. ISBN 1-59749-017-2.
The authors of the ircII software package originally pioneered file transfers over IRC.
- ^ See the 'NOTES' and 'source/ctcp.c' files included with ircii-2.1.4e.tar.gz[永久失效連結]
- ^ See the 'UPDATES' and 'source/dcc.c' files included with ircii-2.1.4e.tar.gz[永久失效連結]