`
wjy1208
  • 浏览: 6904 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ftp传送模式:二进制与ascii模式的区别

阅读更多
FTP可用多种格式传输文件,通常由系统决定,大多数系统(包括UNIX系统)只有两种模式:文本模式和二进制模式。文本传输器使用ASCII字符,并由回车键和换行符分开,而二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式。

一般来说: 如果你用错误的模式传输你的图片,你将会无法看到图片,看到的会是乱码。 如果你用错误模式上传CGI脚本,那么就将无法运行你的脚本,会看到类似Server 500 Error的出错信息。

所以你必须使用正确的模式,图片和执行文件必须用BINARY模式,CGI脚本和普通HTML文件用ASCII模式上传.

ASCII 和BINARY模式区别:

用HTML 和文本编写的文件必须用ASCII模式上传,用BINARY模式上传会破坏文件,导致文件执行出错。

BINARY模式用来传送可执行文件,压缩文件,和图片文件。

如果你用ASCII模式传,会显示一堆乱码,你必须重新用BINARY模式传。

对于第二种情况,是因为有很多ftp服务器和客户端软件能自动识别文件类型,并采取相应的传输方式。

ftp是应用层协议,和具体操作系统无关 .

ASCII 模式和BINARY模式的区别是回车换行的处理,binary模式不对数据进行任何处理,asci模式将回车换行转换为本机的回车字符,比如Unix下是\n,Windows下是\r\n,Mac下是\r

ascii模式下会转换文件,不能说是不同系统对回车换行解释不同,而是不同的系统有不同的行结束符:

unix系统下行结束符是一个字节,即十六进制的0A

ms的系统是两个字节,即十六进制的0D0A

所以当你用ascii方式从unix的ftp server下载文件时(不管是二进制或者文本文件),每检测到一个字节是0A,就会自动插入一个0D,所以如果你的文件是二进制文件比如可执行文件、压缩包什么的,就肯定不能用了。如果你的文件就是unix下的文本文件,你用 ascii模式是正确的,要是误用了binary模式,你在windows上看这个文件是没有换行的,里面是一个个的黑方块。

一般来说,我们最好都用binary方式,这样可以保证不出错。如果有文本格式转换的问题,即unix格式的文本和dos格式的文本之间的转换,有很多工具可以做的,不要在ftp传输的时候冒险,尤其是你如果对这些东西不是非常清楚的话。

可以使用MIME,把所有的字符,转换成0~128之间的字符,然后传送,在接受方再将接收到的字符MIME反向转换。通常我们发送邮件,就是使用这样的字符转换方式。

------------------------------------------------------------------

补充:文本模式和二进制模式传文本文件的具体区别可以通过在linux下使用cat -A 文件名看到两者的区别,当然前提是在windows下上传的文本为dos格式,这个可以用高级的文本编辑器看如ultraedit等。两者的区别是二进制模式上传的文本比文本模式多一个^M符号,这个就是windows下dos格式的/r回车符号,也就是上面提到的十六进制的0D,在vi下使用全局替换:%s/^M//g[^M使用Ctrl+V+M而不是直接输入^M]去掉所有的回车符或者使用dos2unix file进行转换,这样保存后或者生成后的文件就和文本模式上传的文件一样了
分享到:
评论

相关推荐

    Linux tftp命令用法详解

    Linux tftp命令 Linux tftp命令用于传输文件。 FTP让用户得以下载存放于远端主机的文件,也能将文件上传...binary:二进制传输模式 ascii:ascii 传送模式 rexmt:设置包传输的超时时间 timeout:设置重传的超时时间 h

    FTP命令集锦.rar

    第1节FTP基本命令介绍 文件传输软件的使用格式为:FTP,若连 接成功,系统将...BINARY切换传输模式为二进制模式(除文字文件外皆用此模式); IMAGE相当于BINARY: TYPE让你更改或显示目前传输模式。 3)BYE、QUIT

    Linux下ftp命令详解

    说明:FTP 支持两种文件传送类型,ASCII 码和二进制图像。在传送文本文件时应该使用ASCII。 FTP> bell 切换响铃以在每个文件传送命令完成后响铃。默认情况下,铃声是关闭的。 FTP> binary(或bi) 将文件传送类型...

    LINUX FTP设置方法

    binary 设置文件传输方式为二进制模式 close 终止当前的ftp会话 hash 每次传输完数据缓冲区中的数据后就显示一个#号 get(mget) 从远程机传送指定文件到本地机 put(mput) 从本地机传送指定文件到远程机 open ...

    tftp命令 上传及下载文件

    tftp命令用于传输文件。ftp让用户得以下载存放于远端主机的文件,也能将文件上传到远端主机放置。...二进制传输模式 ascii ascii 传送模式 rexmt 设置包传输的超时时间 timeout 设置重传的

    Linux-FTP配置说明及安装源文件

    ftp工作方式分为两种,一种port主动模式,一种pasv被动模式,是服务主动与被动进行连接。一般ftp服务器都为被动模式 。 20.1.1 vsftp概述 rpm -qc vsftpd /etc/logrotate.d/vsftpd.log /etc/pam.d/vsftpd /*vsftp的...

    cmd操作命令和linux命令大全收集

    tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exec:server.exe 登陆后,将“IP”的server.exe下载到目标主机c:server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送...

    linux vsftpd搭建步骤 亲测可用

    a以ASCII传输 b以二进制文件传输 – 特殊处理标志 特殊处理的标志位,可能的值包括: _ 不做任何特殊处理 C 文件是压缩格式 U 文件是非压缩格式 T 文件是tar格式 i 传输方向 文件传输方向,包括两种: o 从FTP服务器...

    计算机作业14答案全解.doc

    A、Outlook Express B、CuteFtp C、FrontPage D、BBS 8、电子邮件能传送的信息___________ A、是压缩的文字和图像信息 B、只能是文本格式的文件 C、是标准ASCII字符 D、是文字、声音和图形图像等信息 9、FTP是...

    20秋东大《计算机应用基础》在线平时作业1.doc

    A.IP地址从32位的二进制地址缩减为8位的二进制地址 B.IP协议再也不需要了 C.我们只需要简单的记住一个网站域名,而不必记住IP地址 D.IP地址再也不需要了 答案:C 8.以下____不是常用的声音文件格式. A.JPEG文件 B....

    windows实用dos命令大全

    一)MD——建立子目录 1.功能:创建新的子目录  2.类型:内部命令  3.格式:MD[盘符:][路径名]〈子目录名〉  ...(2)选用/B参数,为二进制比较模式;  (3)选用/C参数,将大小写字符看成...

    《计算机应用基础》(2).doc

    ASCII是( D ) A、条形码 B、机内码 C、二进制码 D、美国信息交换标准代码 6. "8"的ASCII码(十进制)为56,则"4"的ASCII码为( A ) A、52 B、53 C、54 D、55 7. "32位微型计算机"中的32指的是( C ) A、微机...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    rfc中文文档目录,包含部分翻译

    RFC856_Telnet二进制传输 RFC857_Telnet回声选项 RFC858_Telnet抑制前进选项 RFC859_Telnet状态选项 RFC860_Telnet定时标记选项 RFC861_Telnet扩展选项列表选项 RFC862_回声协议 RFC863 废除协议 RFC864 字符产生...

    中文版RFC,共456

    RFC856 Telnet二进制传输 RFC857 Telnet回声选项 RFC858 Telnet抑制前进选项 RFC859 Telnet状态选项 RFC860 Telnet定时标记选项 RFC861 Telnet扩展选项列表选项 RFC862 回声协议 RFC863 废除协议 RFC864 字符产生...

    RFC中文文档-txt

    RFC856 Telnet二进制传输 RFC857 Telnet回声选项 RFC858 Telnet抑制前进选项 RFC859 Telnet状态选项 RFC860 Telnet定时标记选项 RFC861 Telnet扩展选项列表选项 RFC862 回声协议 RFC863 废除协议 RFC864 字符产生...

    JAVA上百实例源码以及开源项目源代码

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    中文RFC文档.zip

    RFC856 Telnet二进制传输 RFC857 Telnet回声选项 RFC858 Telnet抑制前进选项 RFC859 Telnet状态选项 RFC860 Telnet定时标记选项 RFC861 Telnet扩展选项列表选项 RFC862 回声协议 RFC863 废除协议 RFC864 字符产生...

    Linux操作系统基础教程

    Linux 是在 1991 年发展起来的与 UNIX兼容的操作系统,可以免费使用,它的源代码 可以自由传播且可任人修改、充实、发展,开发者的初衷是要共同创造一个完美、理想并 可以免费使用的操作系统。 我们并不能使同学...

Global site tag (gtag.js) - Google Analytics