zoukankan      html  css  js  c++  java
  • 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函数

  • 相关阅读:
    poj 1050
    poj 2479 Maximum sum
    Trie树结构(AC自动机前奏)(转)
    poj 3624(zeroonepack)
    poj 3630(Phone List )
    KMP算法(AC自动机前奏)(转)
    AC自动机(转)
    AC自动机模板(hdu2222)
    Running CMD.EXE as Local System
    什么是WPF(Avalon)
  • 原文地址:https://www.cnblogs.com/encode/p/5468612.html
Copyright © 2011-2022 走看看