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

  • 相关阅读:
    5月7号 跨页面传值
    实体类、数据访问类、属性扩展
    完整修改删除,防止数据库字符串攻击
    ADO.NET 增、删、改、查
    类库、委托、is as运算符、泛型集合
    抽象类、接口
    多态、虚方法、重写
    访问修饰符、封装、继承
    面向对象基础知识
    Java Script 练习题
  • 原文地址:https://www.cnblogs.com/encode/p/5468612.html
Copyright © 2011-2022 走看看