版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們

[科普中國(guó)]-客戶端至客戶端協(xié)議

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識(shí)科普陣地
收藏

客戶端至客戶端協(xié)議(英語:Client-to-client protocol ,簡(jiǎn)稱CTCP)是互聯(lián)網(wǎng)中繼聊天(IRC)客戶端之間的一種特殊類型的通信。

CTCP是現(xiàn)今使用的大多數(shù)IRC客戶端支持的一種常見協(xié)議。CTCP擴(kuò)展了原始的IRC協(xié)議,允許用戶查詢其他客戶端或頻道(使頻道中所有客戶端都回復(fù)CTCP特殊信息)。此外,CTCP可以用來編碼信息,發(fā)送原始IRC協(xié)議的鏈路不允許發(fā)送的信息,例如包含換行或字節(jié)值為0(NULL)的信息。CTCP不在客戶端之間創(chuàng)建直接連接,但它通常用于協(xié)商DCC連接。

CTCP允許用戶查詢遠(yuǎn)程客戶端正在使用的客戶端版本(通過CTCP VERSION)或時(shí)間(CTCP TIME)等信息。它還實(shí)現(xiàn)了/me命令(通過CTCP ACTION)。

歷史ircII是第一個(gè)實(shí)現(xiàn)了CTCP和DCC協(xié)議的IRC客戶端。Michael Sandrof在1990年將CTCP協(xié)議在ircII 2.1版中實(shí)現(xiàn),Troy Rollo在1991年將DCC協(xié)議在2.1.2版本中實(shí)現(xiàn)。1

結(jié)構(gòu)CTCP采用一條PRIVMSG與NOTICE消息實(shí)現(xiàn),消息中的第一個(gè)和最后一個(gè)字符是ASCII值0x01。此外,IRC協(xié)議中不允許的字符將被轉(zhuǎn)義。由于NOTICE按標(biāo)準(zhǔn)應(yīng)產(chǎn)生一條回復(fù),CTCP消息采用PRIVMSG發(fā)送,而回復(fù)采用NOTICE而非PRIVMSG實(shí)現(xiàn)。

CTCP查詢?cè)诖蠖鄶?shù)客戶端上按下列方式初始化:

CTCP

其中是目標(biāo)的昵稱或頻道名稱,是CTCP命令(例如VERSION),是發(fā)送給的額外信息。1

常用CTCP命令請(qǐng)注意,下列CTCP命令和回復(fù)因客戶端而不同,但大多數(shù)主要的IRC客戶端支持它們。因您的IRC客戶端不同,傳入特定CTCP命令后,您可能會(huì)收到或不會(huì)收到自動(dòng)的回復(fù)或響應(yīng),并且這些自動(dòng)響應(yīng)可能因客戶端不同而有差異。2

VERSIONCTCP VERSION請(qǐng)求將返回目標(biāo)正在使用的IRC客戶端的名稱和版本,某些情況下還提供一些技術(shù)信息,諸如操作系統(tǒng)、時(shí)鐘頻率、CPU制造商和CPU架構(gòu)/指令集。

下面是將一個(gè)CTCP VERSION請(qǐng)求發(fā)送到運(yùn)行有HexChat客戶端(XChat的一個(gè)復(fù)刻)的回復(fù):

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

TIMECTCP TIME請(qǐng)求將返回目標(biāo)計(jì)算機(jī)的本地時(shí)間。決于IRC客戶端,回復(fù)可能是包含日期、時(shí)間(12小時(shí)格式或24小時(shí)格式),年(例如2019)以及某種時(shí)區(qū)(例如AEST)。

下面是將一個(gè)CTCP TIME發(fā)送到使用ChatZilla客戶端后的回復(fù):

TIME Fri 23 Nov 2019 19:26:42 AEST2

PINGCTCP PING請(qǐng)求將測(cè)量現(xiàn)有兩個(gè)客戶端之間的直接ping速率(不算服務(wù)器)。CTCP PING命令采用的方式是,發(fā)送一個(gè)整數(shù)參數(shù)(一個(gè)時(shí)間戳)到目標(biāo)客戶端,然后目標(biāo)客戶端提供完全相同的數(shù)字參數(shù)來響應(yīng)。之后計(jì)算原始時(shí)間戳與當(dāng)前時(shí)間戳的差異,將結(jié)果顯示給發(fā)起CTCP PING的用戶。在過程中通常使用毫秒級(jí)的時(shí)間戳,因?yàn)榇蠖鄶?shù)用戶使用的寬帶互聯(lián)網(wǎng)連接通常只有1秒以下的ping延遲。

一個(gè)CTCP PING請(qǐng)求的示例,從XChat客戶端發(fā)送給目標(biāo):

CTCP PING 23152511

在之后,根據(jù)所獲樣本差異產(chǎn)生的結(jié)果:

Ping reply from : 0.53 second(s)2

本詞條內(nèi)容貢獻(xiàn)者為:

李嘉騫 - 博士 - 同濟(jì)大學(xué)