RFC856_Telnet二进制传输

原创 2004年08月18日 10:30:00
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:顾国飞(ggfei    ggfei@263.net)
译文发布时间:2001-4-2
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息。

Network Working Group                                          J. Postel
Request for Comments: 856                                     J. Reynolds
                                                                  ISI
Obsoletes: NIC 15389                                            May 1983





RFC856  TELNET二进制传输
(RFC856--TELNET BINARY TRANSMISSION)

本RFC规范了一个ARPA Internet community上的标准。在ARPA Internet上的所有主机应当采用和实现这个标准。

目录
1. 命令和代码	1
2. 命令意义	1
3. 默认情况	2
4. 选项出现的原因	2
5. 选项描述	2
6. 实现问题	3


1. 命令和代码
TRANSMIT-BINARY 0
2. 命令意义
* IAC WILL TRANSMIT-BINARY
这个命令请求的发送方请求开始传输,或确定现在要传输的数据在接收方会以八位二进制方式解释。 
* IAC WON'T TRANSMIT-BINARY
如果连接已在二进制方式下,发送此命令要求接收方恢复原来标准的NVT  ASCII方式解释数据。如果现在还未在二进制方式下,发送方拒绝传输将被接受者解释为二进制数据的字符(也就是说,数据传输者要求继续按现在方式进行传输)。只有当双方均同意的情况下才有可能进行二进制传输。 
* IAC DO TRANSMIT-BINARY
发送者要求传输数据,或确定数据将要被传输,这些数据均被解释为8位二进制的。 
* IAC DON'T TRANSMIT-BINARY
如果现在处于二进制状态下,命令发送方要求数据发送方进行标准的NTV  ASCII的传输。如果连接未在二进制状态下,发出命令者要求数据发送方按现在的状态发送数据。只有当双方均同意的情况下才有可能进行二进制传输。 
3. 默认情况
默认情况为:WON'T TRANSMIT-BINARY和DON'T TRANSMIT-BINARY,连接未在二进制状态下。
4. 选项出现的原因
有时候利用telnet上的二进制传输会更有效率,这就是出现的根本原因吧。而双方只要把对数据的解释方式加以改变就可以完成这一选项,因此也比较方便。
5. 选项描述
开始二进制传输后,接收方对没有IAC开始的数据以二进制进行解释。IAC后面的是标准的TELNET命令。如果IAC后面的命令不可识别,它和IAC NOP命令的效果一样。
6. 实现问题
实现二进制传输则不能进行其它模式的传输,这是可以预见的。然而,如果双方能够理解它们同处于二进制传输模式或者例如它们同处于Echo模式,如果他们对此进行了协商,则不会出现什么问题。
我们看到上面的命令意义解释可以注意到WON'T和DON'T的意义要看现在是不是处于二进制传输模式下,假设现在处于EBCDIC模式下,而且一方也不知道任何二进制传输的命令,如果它接收到DO TRANSMIT-BINARY,它根本不知道这是什么,因此返回WON'T TRANSMIT-BINARY,如果对于WON'T TRANSMIT-BINARY的默认值是NVT ASCII,发送DO TRANSMIT-BINARY可能希望接收方转到NVT ASCII,但接收DO TRANSMIT-BINARY的一方有可能不这么做。
因此,我们有这样一条规则:当连接不处于二进制状态时,默认值(也就是说,对WON'T和DON'T的解释)是维持现状,无论是在在NVT ASCII,EBCDIC或者是其他状态。然而,当连接处于二进制状态时,这规则就不顶用了。这就要求连接双方维持一个保存所有可用的连接状态的栈,这样才能正确解释WON'T和DON'T。在二进制状态下,WON'T和DON'T会使状态返回NVT ASCII。
因为telnet是一个双向的通道,因此必须保证双向的数据流都是二进制的。在实现时遵守防止循环的规则,这一规则在telnet协议中有描述。下面我们看看从一个进程和终端开始或接收二进制传输的情况:
a. 从终端开始二进制传输
实现者应该考虑在二进制状态下如何产生8位有效数据,其中不带什么校验位之类的东西。
b. 二进制传输到进程
实现者应该考虑在二进制状态下进行如何接收所有的二进制数据。例如TOPS-20会在终端级解释一些特定字符(例如,ETX,中断control-C),而不把它们传送到进程。
c. 从进程开始的二进制传输
实现者应该考虑传输的字符如何不对对方的终端解释为其它的字符。例如TOPS-20会将非打印字符转为一个箭头和一个可打印字符。
d. 二进制传输到终端
实现者应该考虑接收到的数据如何传送到本地终端。包括本地应该加入的一些字符,校验运算或字符转换。
RFC 856  TELNET BINARY TRANSMISSION                        RFC 856  TELNET二进制传输

1


3
RFC文档中文翻译计划


二进制传输 文本传输

还是读的《HTTP:The Definitive Guide》。主要总结下二进制传输与文本传输。 二进制传输,感觉是源码传输,独立于平台,不会因传输两侧平台的不同而不同,传输过程中不会发生非错误的变化...
  • MarxWolf
  • MarxWolf
  • 2016年05月23日 10:03
  • 1115

模拟客户端与服务端大数据二进制压缩传输

最近项目和其他项目信息jiaohu
  • suigaopeng
  • suigaopeng
  • 2014年06月03日 13:50
  • 756

文件传输原理,与二进制、字节、字符理解

传输文件原理:       把文件转换成字节数组,通过字节数组传输        然后接收方在把字节数据转换成文件                        二进制为什么能存储文件       ...
  • aojiancc2
  • aojiancc2
  • 2016年12月08日 12:20
  • 1227

FTP传输一定要注意使用二进制模式

一个问题困扰了我一下午,刚刚才解决。我要上传一个PHP程序,其中用了sqlite数据库,没想到上传完以后无论如何也不能用,总是数据库查询失败。我登录上SSH,把几乎每个php都调试了一遍,还是没法解决...
  • txl16211
  • txl16211
  • 2014年08月16日 21:35
  • 2034

有关使用HTTP协议传输二进制文件

HTTP协议是基于字符(ASCII)的,当Content-Type项为text/xml,则内容是文本格式;当二进制格式时,Content-Type项为image/gif,就是了。例如,浏览器请求一张图...
  • liuxiao723846
  • liuxiao723846
  • 2015年07月21日 17:46
  • 5709

网络传输中,文本文件与二进制文件

今天写Walker的网络传输, 在传输文件时, 出现一点问题。 1.如果传输文本文件, 只要一个字节一个字节地对应传送过去即可。 2.如果传输二进制文件,也只要一个字节一个字节传送过去就可以。。 读写...
  • a576323437
  • a576323437
  • 2014年01月23日 02:04
  • 3189

FTP的传输的两种方式和工作方式比较,二进制数据传输和ASCII传输区别

FTP的传输的两种方式和工作方式比较,二进制数据传输和ASCII传输区别 [原创 2010-05-21 11:16:31]   字号:大中 小 FTP的传输模式比较区别   ...
  • jiafu1115
  • jiafu1115
  • 2012年03月07日 21:09
  • 3095

HTTP传输二进制初探

从第一次接触http协议的时候,不知是怎么回事,形成了这么一个错误的观点,认为http协议是个纯ASCII字符协议,也就是说在http流里是看不到二进制流的0x00值的。其实答案是:http协议里的c...
  • maikforever
  • maikforever
  • 2011年12月12日 16:41
  • 1450

参照protobuf,将json数据转换成二进制在网络中传输。

json数据格式在网络中传输需要的数据比二进制庞大太多,我们可以省去key,外加将数字不需要编码成字符串,直接二进制编码就OK。 pack : 将json压包,unpack解包成json。 var...
  • smallmelon
  • smallmelon
  • 2014年08月01日 14:25
  • 2189

关于如何使用websocket 接收并显示图片或者操作二进制

今天想实现一个在firefox中使用websocket接收二进制图片并显示的功能。百度了半天..一堆人都说用MozBlobBuilder,可尼玛我的firefox游览器中就没这个对象!!版本(25.0...
  • kkkkk4400
  • kkkkk4400
  • 2013年11月27日 10:32
  • 12158
收藏助手
不良信息举报
您举报文章:RFC856_Telnet二进制传输
举报原因:
原因补充:

(最多只允许输入30个字)