執行命令:./rsync -av root@localhost::yougotit/trie ./zzxx 時,一覽客戶端和服務端交互的信息
符號標記:C 客戶端 同時也是 receiver,S 服務端 同時也是sender
具體交互過程(連接後):
// 客戶端協議版本號
C->S: "@RSYNCD: 31.0\n"
// 服務端協議版本號
S->C: "@RSYNCD: 30.0\n"
// 同步的模塊名
C->S: "yougotit\n"
// 服務端要求密碼驗證,IyKE/cOppcgfUc8jSn950g用於處理密碼,提高安全性
S->C: "@RSYNCD: AUTHREQD IyKE/cOppcgfUc8jSn950g\n"
// 用戶名 和密碼
C->S: "root Zr17jc0Ibi3CiLIsSeQZWQ\n
// 服務端通知客戶端驗證通過
S->C: "@RSYNCD: OK\n"
// 服務端需要用到的參數,參數之間以'\0'作爲分界符,最後的參數後面再跟一
// 個空參數的分界符,表示參數傳遞完畢
C->S: "--server\0--sender\0-vlogDtpre.iLs\0.\0yougotit/trie\0\0"
S->C: 1字節的 compat_flags,4字節的 checksum_seed
C->S: 4字節的數值0
LOOP1## S->C: 傳輸文件(夾)名字屬性,1字節的數值1(recv_file_list中的
flags,爲0表示此層次的文件(夾)傳輸完畢),flags不爲0 則傳
1字節的數值l2(recv_file_entry中的l2),l2字節的文件(夾)名
字 "trie",3字節的文件(夾)內容長度,4字節的文件修改時間
modtime 數值1389282516,4字節的文件(夾)mode(訪問權限)數
值040755,1字節的uid 數值0,4字節的gid 數值0
S->C: 2字節的文件(夾)索引ndx 若 ndx = -2, 則所有的文件(夾)屬性傳輸
結束,繼續傳2字節的索引;若爲正常的索引值(如數值-101,這裏的-101會
減去基準值使索引值爲正),重複執行LOOP1,傳遞索引爲ndx(此時爲trie文
件夾)的文件夾下的文件或文件夾屬性;若爲>=0 的數值(表示將要傳輸相應
的文件(夾))則繼續下面的步驟
S->C: 4字節的sum->count,4字節的sum->blength,4字節的sum->remainder
S->C: 傳遞文件內容:4字節的data塊大小i,i字節的塊內容;傳完內容後,傳結束
符4字節的數值0
S->C: checksum_len(作爲特例值爲16)長的剛纔所傳文件內容的校驗值
for others click bellow: