scp協議分析


為了學習一下scp協議,我找了一個開源的scp實現(python實現)來看。這里記錄我的學習過程

1、主模塊

scp內置了兩個參數 -t 和 -f ,這兩個參數是隱藏的,不會被用戶顯式提供,那么誰提供這個參數呢,兩個scp進程之間傳輸數據時,遠端機器上的scp進程被本地scp進程啟動起來時提供上去。需要說明的是,這是通過本地scp進程經ssh遠程過去開啟遠端機器的scp進程來實現的

2、SSH遠程連接模塊

開啟一個遠程連接用了paramiko這個包,登陸時提示輸入密碼則可以使用python自帶的getpass這個模塊

3、傳輸模塊

這個模塊是最核心的模塊了。發送數據接收數據的具體代碼都在這了。ssh的數據和消息統一使用一個tcp channel。也就是說建立起來的tcp連接既走協議消息包又走文件數據包。ssh的協議是簡單的一問一答型協議,還有是簡單的文本型協議。
比如說D代表發送文件夾,C代表發送文件,T代表文件夾或者文件的時間戳信息。我們可以擴展這個簡單的協議,比如加上H字段協議用作文件哈希值字段,實現斷點續傳功能。
另外程序中有個打印進度條功能,實現是在每次有網絡IO時就觸發一次更新打印進度條,具體的就是read,write函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM