我们知道用linux命令rz/sz可以通过一些终端软件如secureCRT等在linux服务器与本地windows之间传文件。在服务器上rz一下,在本地windows下就跳出一个窗口,选择文件后就传到了服务器上;而在服务器上用sz命令sz一个文件,在本地电脑硬盘上就有了这个文件。用起来是很方便,但是总感觉很神奇。 关于其可能的工作原理,之前猜测过,感觉是这样:用secureCRT等远程登录的时候,其实就是通过ssh方式,连接了远程主机上的sshd,也就是相当于用sshd-client 在于sshd 交互而已,而这个sshd-client就是secureCRT;这样,sz/rz工作的时候,也只能是通过这条通路。具体怎样通过这条通路传的,大概是这样:sz 一个文件的时候,就像是cat 一个文件一样,本来应该在本地窗口显示出一堆乱码,但是正巧这堆乱码符合某种格式(就是zModem这种sz/rz所采用的协议格式),被secureCRT识破了,认出了其实是sz命令发起的,于是保存成本地一个文件。换句话说,如果一个文件内容正好是这样的内容,那么cat出后,在本地也必然会保存出一个文件的。对于rz呢,也是同样的道理,rz 执行后直接往标准输出打印一些内容,这些内容格式古怪,正好被secureCRT所识别出来,然后弹窗,并把本地文件传过去,就像是用户的键入内容一样被rz命令接收。

  这只是猜测,具体不很明了。但是通过做了几个实验,发现差不多是这个意思。我登上了A,然后ssh跳到了B,再ssh跳到了C,然后在C上做sz/rz操作,发现B机器上的网卡流量急剧变大,而sz/rz操作结束后,B机器上的网卡流量又恢复正常。那么说明这个文件传输肯定是通过上面所说的通道的。

  致于上面分析的更细节内容,用 strace rz 看了下,然后发现一些可疑的地方,然后总结出了以下一句命令:
echo -e '**\30B0100000023be50\r\212\21';
会发现,在secureCRT上跳出了文件上传对话框。这说明上面分析是对的。

rz/sz:工作原理的更多相关文章

  1. NameNode和SecondaryNameNode工作原理剖析

    NameNode和SecondaryNameNode工作原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode中的元数据是存储在那里的? 1>.首先,我 ...

  2. ThreadLocal 工作原理、部分源码分析

    1.大概去哪里看 ThreadLocal 其根本实现方法,是在Thread里面,有一个ThreadLocal.ThreadLocalMap属性 ThreadLocal.ThreadLocalMap t ...

  3. linux - sftp, scp, rz, sz(文件传输命令)

    1. sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等敏感信息进行加密,因此可以有效的防止用户信息在传输的过程中被窃 ...

  4. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

  5. 【夯实Nginx基础】Nginx工作原理和优化、漏洞

    本文地址 原文地址 本文提纲: 1.  Nginx的模块与工作原理    2.  Nginx的进程模型    3 . NginxFastCGI运行原理        3.1 什么是 FastCGI   ...

  6. HashMap的工作原理

    HashMap的工作原理   HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...

  7. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

    RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  8. Servlet的生命周期及工作原理

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  9. 代码管理工具 --- git的学习笔记二《git的工作原理》

    通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...

随机推荐

  1. maven升级遇到的疑惑

    今天在解决一个问题的时候,由于需要修改maven的client包,按照之前的办法,修改完之后,没有修改版本号,而是直接修改client的代码,之后直接 mvn deploy -e 打包上去了,然后奇怪 ...

  2. tdd:(react + mocha)环境配置

    写在前面: 在git上面clone一些项目的时候老是可以看到一些测试文件,于是就学习了一下TDD: TDD —— Test-Drive Development是测试驱动开发的意思,是敏捷开发中的一项核 ...

  3. maven学习(七)后续扩展、资料

    写这几篇博客的来源是 "maven实战 + 网上的博客 + 平时使用的心得 ".记录的都是比较常用的东西,也有一些只做了大概了解.或者干脆直接略过,在这里做一下总结,如果有需要在进 ...

  4. Oracle案例05——ORA-12162: TNS:net service name is incorrectly specified

    最近在梳理环境,发现环境真的不是一般的复杂,配置不是一般的乱,刚在梳理环境的时候发现一个库通过conn /as sysdba无法连接,具体处理过程如下: 一.错误信息 [oracle@ ~]$ sql ...

  5. 对sql作业的总结(不用group by 通过with as,exists实现分类)

    一次数据库作业 题目如下: Consider the following SQL table definitions: CREATE TABLE OlympicEvent ( Name text, Y ...

  6. 【Leetcode】【Medium】Sqrt(x)

    Implement int sqrt(int x). Compute and return the square root of x. 解题思路1,o(log(n)): 像这种从初始遍历查找匹配的任务 ...

  7. UIScrollView中的手势

    UIScrollView中的手势 UIScrollView自带了两个手势,分别为: UIPanGestureRecognizer UIPinchGestureRecognizer 他们都是readon ...

  8. leveldb分析——Arena内存管理

    leveldb中实现了一个简单的内存管理工具Arena,其基本思想为:先预先向系统申请一块内存,此后需要申请内存时,直接到预先分配的内存中申请. 那么这样做的目的是什么呢? (1)避免了频率地进行ma ...

  9. 自动备份软件 —— Syncovery 7.98s Pro/Enterprise

    SynCovery自动备份软件原名Super Flexible Synchronizer,是目前功能最为强大的实时自动备份工具,连FTP.WebDAV等全部支持!最近从V6开始改用比较好记.易懂的新名 ...

  10. 018os模块

    import   osprint(os.getcwd())   # 获取当前目录  F:\python_code\fullstack_s2\week4\day18 os.chdir(r'C:/User ...