用戶端至用戶端協定 (英語: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 [永久失效連結 ]
外部連結 [ 編輯 ]
常用術語 列表和比較 相關協定
IRC
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
P10
用戶端至用戶端協定
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
另請參閱
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
MacOS
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Fire
Lua錯誤:attempt to index field 'wikibase' (a nil value)。 (Mac OS)
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Irssi
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
微軟視窗
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
MIRC
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Shareaza
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
類Unix系統
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
跨平台
BitchX
Irssi
Konversation
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
WeeChat
XChat
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Quassel IRC
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
即時通訊 網絡應用程式
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
網頁瀏覽器 組件庫 和外掛程式
ERC (IRC 用戶端)
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
蘭德爾·門羅
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
ZNC
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Freenode
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
5ch
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Libera Chat
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。
Lua錯誤:attempt to index field 'wikibase' (a nil value)。