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函数

  • 相关阅读:
    网络流(平面图转对偶图)
    666
    期望总结
    docker-1-简介
    22、整合mybatis
    21、整合Druid数据源
    20、Springboot 与数据访问(JDBC/自动配置)
    19、配置嵌入式servlet容器(下)
    18、配置嵌入式servlet容器(2)
    17、配置嵌入式servlet容器(1)
  • 原文地址:https://www.cnblogs.com/encode/p/5468612.html
Copyright © 2011-2022 走看看