我们知道用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. postgres备份数据库

    1. psql --help psql is the PostgreSQL interactive terminal. Usage: psql [OPTION]... [DBNAME [USERNAM ...

  2. SharePoint 2013 - REST API about Security

    1. 获取当前用户信息(current user): var currentUserInfo = "{0}/_api/Web/CurrentUser"; // {0} -> ...

  3. EditText的setInputType方法里面应该填什么?

    转自CSDN:http://blog.csdn.net/u014158743/article/details/52488010 | 以密码类型(password)为例 android:inputTyp ...

  4. 一、flex布局教程:语法篇

    本文转自阮一峰大师的教程,此处做记录,方面后面自己学习使用~   布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...

  5. centos中从源程序升级python方法

    http://www.cnblogs.com/sky20081816/p/3441920.html 1 .wget http://python.org/ftp/python/2.7.3/Python- ...

  6. leetcode-Restore IP Addresses-ZZ

    http://www.cnblogs.com/remlostime/archive/2012/11/14/2770072.html class Solution { private: vector&l ...

  7. 远程桌面连接无法验证您希望连接的计算机的身份-mac连接远程桌面

    在使用Mac(苹果笔记本)连接远程桌面的时候提示:”远程桌面连接无法验证您希望连接的计算机的身份”,具体异常如截图:解决方法如下:1. 登录云服务器.2. 打开运行,然后输入命令gpedit.msc, ...

  8. laravel-5-doctrine-2 教程

    Open up a Terminal again, cd into learning folder and run: composer require "laravel-doctrine/o ...

  9. redis知识树

  10. web 应用程序转化为多租户 SaaS 解决方案

    web 应用程序转化为多租户 SaaS 解决方案 https://www.ibm.com/developerworks/cn/cloud/library/cl-multitenantsaas/inde ...