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

  • 相关阅读:
    详解Redis中两种持久化机制RDB和AOF(面试常问,工作常用)
    IDEA链接数据库自动生成实体类
    urllib的高级用法
    django项目部署上线
    Git 远程仓库(Github)
    git 标签
    git分支管理
    Git 工作区、暂存区和版本库
    git介绍及安装
    Python3-笔记-numpy学习指南-002-基础
  • 原文地址:https://www.cnblogs.com/encode/p/5468612.html
Copyright © 2011-2022 走看看