當前位置:編程學習大全網 - 源碼下載 - 飛鴿傳輸用哪個端口?

飛鴿傳輸用哪個端口?

最近看到有朋友在寫網絡程序的時候遇到了壹些問題,所以把我過去做IPMSG時候翻譯的文檔貼出來,希望對網絡編程新手有所幫助。找編程項目的同學也可以參考這個文檔自己寫IPMSG。

本文只包含壹些比較重要的命令和操作機制的中文翻譯。更詳細的內容請參考文末的IPMSG協議英文文檔。

聲明:以下協議省略了壹些編程過程中沒有用到的協議內容。Ipmsg協議原文為日文,以下協議內容由本人翻譯自金澤先生的英文文檔(cugb_cat)。該翻譯文檔可以自由傳播和使用。

IP信使傳輸協議(第九版草案)1996/02/21

在2003/01/14年修訂

H.Shirouzu

[電子郵件]shirouzu @ h . email . ne . jp[/email]

關於IP messenger:

IP Messenger使用TCP/UDP協議來提供消息和文件(目錄)的發送和接收。

特點:

IP Messenger可以安裝在任何安裝了TCP/IP協議棧的操作系統上,利用在線用戶的動態識別機制,可以與所有在線用戶交換信息。

運行機制介紹:

使用TCP/UDP端口(默認端口為2425),使用UDP協議發送和接收消息,使用TCP協議發送和接收文件(文件夾)。

1,命令字:

1)基本命令字(32位命令字的低8位)

IPMSG_NOOPERATION不做任何事情。

IPMSG_BR_ENTRY用戶在線。

IPMSG_BR_EXIT用戶退出。

IPMSG_ANSENTRY在線通知

IPMSG_SENDMSG發送消息。

IPMSG_RECVMSG通知收到消息。

IPMSG_GETFILEDATA請求通過TCP傳輸文件。

IPMSG_RELEASEFILES停止接收文件。

IPMSG_GETDIRFILES請求傳輸文件夾。

2)選項位(32位命令字的高24位)

IPMSG_SENDCHECKOPT傳輸檢查(要求對方提供確認信息)

IPMSG_FILEATTACHOPT傳輸文件選項

3)附件類型命令(文件類型命令字的低8位)

IPMSG _ FILE _常規普通文件

IPMSG文件目錄文件

IPMSG_FILE_RETPARENT返回上壹個目錄。

2.數據包格式(使用字符串):

1)數據包格式(版本1的格式)

版本號(1):包號:發送者名稱:發送者主機名:命令字:附加信息。

2)例子如下

" 1:100:shirouzu:Jupiter:32:Hello "

3.數據包處理概述:

1)用戶標識

IPMSG啟動時,向網絡廣播命令IPMSG_BR_ENTRY,提示所有在線用戶有新用戶到來(即“我來了”);所有在線用戶都會將新在線用戶添加到自己的用戶列表中,並向新在線用戶發送IPMSG_ANSENTRY命令(即“我在線”);新的在線用戶將在接收到IPMSG_ANSENTRY命令後將該在線用戶添加到他的用戶列表中。

2)發送和接收消息

使用IPMSG_SENDMSG命令發送消息,消息內容添加在附加信息中;接收消息時,如果對方要求回復確認(IPMSG_SENDCHECKOPT位開啟),則需要發送IPMSG_RECVMSG命令,將對方發送的包的編號放在附加信息中發送給發送方。

3)附件的擴展(在第9版中增加)

帶有IPMSG _ FILEATTACHOPT位的IPMSG_SENDMSG命令可用於傳輸文件。文件屬性和內容被添加在附加信息中,並且文件內容被添加在消息內容之後,並且通過' \0 '與它們分開。傳輸文件時,消息內容(包括格式)後會添加以下信息:文件序號:文件名:大小(單位:字節):最後修改時間:文件屬性[:附加屬性=val1[,val2…][:附加信息=…]:\ a:文件序號…

(文件大小、上次修改時間和文件屬性都是十六進制數字,如果文件名包含“:”,請使用“::”。

當接收方開始接收文件時,文件傳輸請求命令IPMSG_GETFILEDATA將被發送到發送方的TCP端口(與UDP的發送端口相同),發送方發送的包號、文件序列號、偏移量(均為十六進制格式)將被寫入附加信息區壹起發送。文件發送方在收到請求信息並驗證無誤(沒有任何格式或加密)後,將開始發送文件。

當接收端接收到目錄文件時,會發送壹個IPMSG_GETDIRFILES命令,該命令帶有發送端發送的包號:文件號:偏移量(均為十六進制格式)的附加信息區,以請求傳輸目錄文件;發送方在附加信息區添加頭信息長度:文件名:文件大小:文件屬性:文件內容(除文件名和文件內容外,其余均為十六進制),頭信息長度為頭信息長度到文件內容前分隔符':'的字符數。

當文件屬性為IPMsg_FILE_DIR時,IPMsg可以自動識別為目錄,下壹個文件的數據在目錄之後。

當文件屬性是IPMsg_FILE_RETPARENT時,IPMsg識別出它的動作是返回到前壹個目錄。在這種情況下,文件名是“.”它的屬性是當前目錄的值。

帶IPMSG協議的英文版:

引用:

最初的ipmsg協議規範是用日語編寫的。

這份文件是金澤先生翻譯的。

此文檔尚未驗證。

-

IP信使通信協議(草案-9) 1996/02/21

修改於2003年06月05日

H.Shirouzu

[電子郵件]shirouzu @ h . email . ne . jp[/email]

-

關於IP Messenger

這是使用TCP/UDP端口的發送/接收消息服務。

特征

如果在您的機器上使用TCP/IP,IP Messenger可以安裝在任何操作系統上。

動態成員識別可以在您的網絡或指定的網絡內完成。

您可以在所有IPMsg成員之間交換消息。

功能描述

使用TCP/UDP端口(默認值:2425)。請參見以下描述

(消息發送/接收:UDP,文件發送/接收:TCP)

1.命令

1)命令功能(命令號32位中的低8位)

IPMSG_NOOPERATION無操作

IPMSG_BR_ENTRY服務條目(用廣播命令啟動)

IPMSG_BR_EXIT退出服務(以廣播命令結束)

IPMSG_ANSENTRY通知新條目

IPMSG_BR_ABSENCE更改缺勤模式

IPMSG_BR_ISGETLIST搜索有效的發送主機成員

IPMSG_OKGETLIST主機列表發送通知

IPMSG_GETLIST主機列表發送請求

IPMSG_ANSLIST主機列表發送

IPMSG_SENDMSG消息傳輸

IPMSG_RECVMSG消息接收檢查

IPMSG_READMSG消息打開通知

IPMSG_DELMSG消息丟棄通知

IPMSG_ANSREADMSG消息打開確認通知(從版本8增加)

TCP的IPMSG_GETFILEDATA文件傳輸請求

IPMSG_RELEASEFILES丟棄附件文件

IPMSG_GETDIRFILES附件分層文件請求

獲取IPMSG版本信息。

IPMSG_SENDINFO發送IPMSG版本信息。

IPMSG_GETABSENCEINFO獲取缺勤句子

IPMSG_SENDABSENCEINFO發送缺勤句子

IPMSG_GETPUBKEY RSA公鑰獲取

IPMSG_ANSPUBKEY RSA公鑰響應

2)選項標誌(命令號32位中的高24位)

IPMSG_ABSENCEOPT缺席模式(成員識別命令)

IPMSG_SERVEROPT服務器(保留)

IPMSG _ DIALUPOPT發送個人成員認可命令

IPMSG_SENDCHECKOPT傳輸檢查

IPMSG_SECRETOPT密封消息

IPMSG_READCHECKOPT密封消息檢查(從ver8添加)

IPMSG_PASSWORDOPT鎖

IPMSG _廣播消息

IPMSG_MULTICASTOPT多點傳送(多點傳送選擇)

IPMSG_NEWMUTIOPT新版本多播(保留)

IPMSG _ AUTORETOPT自動響應(乒乓保護)

IPMSG_NOLOGOPT沒有日誌文件

IPMSG_NOADDLISTOPT通知BR_ENTRY之外的成員

IPMSG _ FILEATTACHOPT文件附件

IPMSG_ENCRYPTOPT代碼

IPMSG_NOPOPUPOPT(不再有效)

IPMSG_RETRYOPT重新發送標誌(在獲取主機列表時使用)

3)擴展代碼標誌(十六進制格式組合)

IPMSG_RSA_512

IPMSG_RSA_1024

IPMSG_RSA_2048

RC2_40

IPMSG_RC2_128

IPMSG_RC2_256

IPMSG_BLOWFISH_128

IPMSG _河豚_256

IPMSG_SIGN_MD5

4)附件的擴展文件(fileattr低8位)

IPMSG _文件_常規

IPMSG _文件_目錄

IPMSG_FILE_RETPARENT

IPMSG_FILE_SYMLINK

IPMSG_FILE_CDEV

IPMSG _文件_BDEV

IPMSG _文件_FIFO

IPMSG_FILE_RESFORK

5)附件文件擴展屬性(fileattr高24位)

IPMSG_FILE_RONLYOPT

IPMSG_FILE_HIDDENOPT

IPMSG_FILE_EXHIDDENOPT

IPMSG_FILE_ARCHIVEOPT

IPMSG_FILE_SYSTEMOPT

6)附件文件的擴展文件屬性

IPMSG_FILE_UID

IPMSG _文件_用戶名

IPMSG_FILE_GID

IPMSG _文件_組名

IPMSG_FILE_PERM

IPMSG_FILE_MAJORNO

IPMSG_FILE_MINORNO

IPMSG_FILE_CTIME

IPMSG _文件_時間

IPMSG_FILE_ATIME

IPMSG_FILE_CREATETIME

IPMSG _文件_創建者

IPMSG _文件_文件類型

IPMSG _文件_查找信息

IPMSG _文件_ACL

IPMSG_FILE_ALIASFNAME

IPMSG_FILE_UNICODEFNAME

2.命令格式(使用所有字符串)

1)命令(格式版本-1)

Ver(1):數據包編號:發送者名稱:發送者主機:命令編號:附加部分

2)使用當前命令格式發送/接收消息的示例

" 1:100:shirouzu:Jupiter:32:Hello "

3.命令流程概述

1)會員認可

IPMSG_BR_ENTRY命令向當前

初創時的成員。

所有成員在收到通知消息後都會將新成員添加到他們的列表中。

IPMSG_ANSENTRY命令向新成員發回消息。

新成員通過獲取當前成員數據

IPMSG_ANSENTRY命令。所有成員都可以通信,只要

IP數據包存在。

IPMSG_BR_ABSENCE命令廣播缺席模式取消或

所有成員的昵稱變更。但是,IPMSG_ANSENTRY命令

不發回消息,這不同於IPMSG_BR_ENTRY

命令。

IPMSG_BR_ENTRY、IPMSG_ANSENTRY和IPMSG_BR_ABSENCE命令

為缺勤模式使用IPMSG_ABSENCEOPT標誌。給…輸入昵稱

附加命令。

為無法聯系到的撥號用戶添加IPMSG _ DIALUPOPT標誌

廣播命令。成員識別命令需要

單獨發送給帶有此可選標誌的成員。

(擴展組)IPMSG_BR_ENTRY和IPMSG_BR_ABSENCE命令

通過在當前組名後添加新組名來發送組名

命令格式字符串(在當前

命令和擴展名稱)。

2)發送/接收消息

發送消息使用可以輸入消息的IPMSG_SENDMSG命令

在擴展區域。

接收消息僅發回IPMSG_RECVMSG命令

如果IPMSG_SENDCHECKOPT標誌打開。輸入原始包號

到擴展區域。

廣播消息發送使用IPMSG_BOADCASTOPT命令

並且IPMSG_SENDMSG標誌應該打開。

需要將自動發送數據包(缺席通知)添加到IPMSG_AUTORETOPT

為了乒乓保護。如果壹個或另壹個數據包打開,則

確認/自動發送數據包沒有發送回來。

發送消息密封需要是上的IPMSG_SECRETOPT數據包。

在這種情況下,接收消息發送IPMSG_READMSG命令。

將原始數據包編號輸入擴展區。

(附加IPMSG_NOADDLISTOPT)

當從

不在您的發送/接收列表中,IPMsg將通過以下方式確認主機

發送IPMSG_BR_ENTRY命令或將主機名添加到

發送/接收列表。

但是,需要避免單次消息發送/接收操作。

向IPMSG_SENDMSG命令添加IPMSG_NOADDLISTOPT標誌。

(版本8中的附加IPMSG_READCHECKOPT)

當IPMSG_READMSG命令包含IPMSG_READCHECKOPT標誌時,

IPMsg進程與帶有

IPMSG_SENDCHECKOPT標誌。

但是,Send Message使用IPMSG_ANSREADMSG命令,

而不是IPMSG_RECVMSG。

3)消息發送/接收加密擴展(在版本9中添加)

使用公鑰(RSA)和公鑰(RC2/河豚魚)的組合。

(加密擴展區使用十六進制格式。)

(公鑰獲取)發送IPMSG_GETPUBKEY命令接收

消息。接收消息獲取IPMSG_ANSPUBKEY,它

意味著從發送消息中接收RSA公鑰。

IPMSG _ get pubkey/IPMSG _ ANSPUBKEY都需要值

加密能力(例如IPMSG_RSA_1024)標誌首先使用“或”

延伸部分

另外,在IPMSG_ANSPUBKEY中,公鑰寫成EE-NNNNNN

E = exposition n = method) devideby“:”。並輸入f分隔符'-'

在E和n之間。

在第二次發送/接收過程後,可以跳過該序列

記憶公鑰和加密數據。

(加密消息)在發送者創建了壹個

發送方和接收方都支持的公共密鑰可以加密消息。

此外,接收方的公鑰對公共密鑰進行加密。

(加密消息傳輸)IPMSG_ENCRYPTOPT用於

IPMSG_SENDMSG。在延伸的第壹部分,輸入值

是公鑰和公鑰類型驗證的結果。

然後使用由“:”劃分的公鑰加密的公鑰。

然後輸入由“:”劃分的公鑰加密的消息。

如果兩者都支持IPMSG_SIGN_XXX,那麽添加':'和signeture。

此外,在編碼填充的方法中,PKCS#1ECB密鑰用於RSA,

PKCS#5 CBC公共密鑰用於RC2/河豚。

此外,與條目相關的數據包顯示了

使用IPMSG_ENCRYPTOPT的加密支持

4)帶文件附件的擴展(從版本9開始提供)

帶有IPMSG _ FILEATTACHOPT標誌的IPMSG_SENDMSG命令

文件傳輸(下載許可)通知發送消息

帶著依戀。

在消息和附件文件數據後輸入' \0 '。

fileID:filename:size:mtime:fileattr[:extend-attr = val 1

[,val2...][:extend-attr2=...]]:\a:fileID...

(size、mtime和fileattr描述十六進制格式。

如果文件名包含“:”,請替換為“::”。)

當接收消息下載附件文件時,IPMSG_GETFILEDATA

命令向相同編號的TCP端口請求數據傳輸包

作為UDP發送端口號。輸入packetID:fileID:到擴展區的偏移量。

(全部使用十六進制格式。)

文件傳輸方收到請求。在意識到這是壹個正確的請求後,

然後發送指定的數據(無格式)

當數據接收方下載分層附件文件時,

使用IPMSG_GETDIRFILES命令並輸入packetID:fileID

並發送數據傳輸請求包。

(全十六進制格式)

數據發送方發送以下分層數據格式。

header-size:filename:file-size:file attr[:extend-attr = val 1

[,val2...][:extend-attr2=...]]:內容-數據

下壹個標題大小:下壹個文件名...

(除文件名和內容數據之外的所有十六進制格式)

header-size是從header-size的開頭到分隔符“:”

那是在內容數據之前。extend-attr可以省略並多次使用

擴展屬性。使用“=”輸入數據。

當fileattr是IPMSG_FILE_DIR時,IPMSG會自動識別它

在目錄中,下壹個文件數據在目錄之後。

當fileattr是IPMSG_FILE_RETPARENT時,IMPsg識別它返回

到父目錄。在這種情況下,文件名總是“.”和屬性

值是當前目錄數據。

發送過程直接從附件開始,並返回

IPMSG_FILE_RETPARENT命令添加到附件目錄。

為入口包添加IPMSG _ FILEATTACHOPT標誌,以支持

附件文件。

5)其他命令

獲取不同版本時,發送IPMSG_GETINFO命令。

接收方將版本信息字符串發送給

擴展區域。

發送IPMSG_GETABSENCEINFO命令以獲取缺勤消息。

如果狀態是缺席模式,接收方發送回IPMSG_SENDABSENCEINFO。

如果狀態不是缺勤模式,則返回壹個字符串“不是缺勤模式”。

6)確認/重試

如果用於IPMSG_SENDMSG或IPMSG_RECVMSG的確認分組沒有被遞送

在指定的時間內,它將被再次發送。

重試動作的數量或間隔周期取決於當前條件。

4.其他的

1)換行

發送消息中的換行符使用UNIX類型(“0”)進行了標準化。

如有需要,請更換。

2)分隔符“:”

:'用作分隔符。用戶名不能使用此分隔符

和主機名。

如果使用/主機名包含“:”,請用另壹個符號替換,

例如“;”。

雖然使用這個分隔符還不成問題,但是我可以創建壹個

轉義序列。

3)漢字編碼

SJIS

5.聯系人電子郵件地址

電子郵件[email]shirouzu @ h . email . ne . jp[/email]

註意

命令代碼見ipmsg.h。

請把妳的意見和建議用電子郵件發給我。

  • 上一篇:天文同好請進
  • 下一篇:李斯在《諫驅逐書》中主要運用了哪些修辭方法?
  • copyright 2024編程學習大全網