Atitit ftp原理与解决方案

Deodeo sh shmayama ..search ftp..

1. http和ftp都只是通信协议,就是只管传输那一块的,那为什么不能使用ftp来显示网页??1

1.1. 原则是是可以,浏览器下载从http和ftp下载是一样的效果,然后本地渲染显示html即可。。1

1.2. 最主要原因是性能原因(小文件http效率更高)1

1.3. ftp设计复杂度高1

1.4. 此外3.与防火墙工作不协调2

2. HTTP和FTP的区别2

2.1. 二、复杂点儿2

2.1.1. 1.FTP2

3. ftp在传输小文件时候,效率较低3

1. http和ftp都只是通信协议,就是只管传输那一块的,那为什么不能使用ftp来显示网页??

1.1. 原则是是可以,浏览器下载从http和ftp下载是一样的效果,然后本地渲染显示html即可。。

最主要的区别是ftp协议比http协议复杂,因为ftp要面临多种文档以及体积比较大,所以协议控制比较复杂。。

而网页,往往体积较小,格式单一。。所以使用了专门发明了http协议来做这个事情。转用协议当然要比通用的性能高,速度快,但是适用领域小。。

1.2. 最主要原因是性能原因(小文件http效率更高)

1.3. ftp设计复杂度高

FTP和HTTP处于OSI同一层 。但是,FTP在开始握手和登陆较为复杂,一旦开始传输效率明显比HTTP高。FTP的设计思想在于分开的控制连接和传输连接,这和HTTP完全不同。

1.4. 此外3.与防火墙工作不协调

在文件传输协议(FTP)诞生在网络地址转换(NAT)和防火墙之前,那时的网络还不存在恶意攻击。今天大多数最终用户的IPv4地址已不可路由,这是因为防火墙的使用和IPv4地址的短缺。

2. HTTP和FTP的区别

2.1. 二、复杂点儿

2.1.1. 1.FTP

2.1.1.1. (1)FTP比HTTP复杂

FTP和HTTP一样都是Internet上广泛使用的协议,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

2.1.1.2. (2)FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。

3. ftp在传输小文件时候,效率较低

.FTP协议效率低下

从FTP服务器上检索一个文件,包含繁复的交换握手步骤:
客户端建立到FTP服务器端控制端口的TCP Socket链接,并等待TCP握手完成
客户端等待服务器端发送回执
客户端向服务器端发送用户名并等待响应
客户端向服务器端发送密码并等待响应
客户端向服务器端发送SYST命令并等待响应
客户端向服务器端发送TYPE I命令并等待响应
如果用户需要在服务器端切换目录,客户端仍然发送命令并等待响应
主动模式下,客户端需要发送PORT命令到服务器端,然后等待响应(被动模式与主动模式相反)
建立数据传输链接(需要经过三次握手,建立一条TCP Socket连接)
通过链接传输数据
客户端等待服务器端从控制连接发送2xx指令,以确保数据传输成功
客户端发送QUIT命令,并等待服务器响应

同样的情形,我们来看看HTTP协议:
HTTP客户端向HTTP服务器端建立一条TCP Socket连接
HTTP客户端向HTTP服务器端发送GET命令,包含URL、HTTP协议版本、虚拟主机名等等,并等待响应
HTTP服务器端的响应包含了所有想要的数据,完成!

传输一个文件,FTP需要往复10次,而HTTP只需要2次!

3.1. 传输协议

编辑

FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登陆进程

4. 支持模式  FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)。

编辑

FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)。

Port模式

FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。

Passive模式

建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作

参考资料

HTTP和FTP的区别 - 苹果园 - 博客频道 - CSDN.NET.html

文件传输协议(FTP)必将消亡 - 开源中国社区.html

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:[email protected]

转载请注明来源: http://www.cnblogs.com/attilax/

Atiend

时间: 2024-10-24 13:23:38

Atitit ftp原理与解决方案的相关文章

Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持

Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1. 设置 document.domain为一致  推荐1 2. Apache 反向代理 推荐1 3. jsonp ,2 4. CORS ,2 5. iframe+post3 6. 回调解决方案>>服务端推送dwr 反向ajax3 7. 服务器中转 3 8. Js跨3 9. 从所有的浏览器都支持来看,CORS将成为未来跨域访问的标准解决方案3 10. 参考4 1. 设置 document.do

Atitit 表达式原理 语法分析 原理与实践 解析java的dsl  递归下降是现阶段主流的语法分析方法

Atitit 表达式原理 语法分析 原理与实践 解析java的dsl  递归下降是现阶段主流的语法分析方法 于是我们可以把上面的语法改写成如下形式:1 合并前缀1 语法分析有自上而下和自下而上两种分析方法2 递归下降是现阶段主流的语法分析方法,2 于是我们可以把上面的语法改写成如下形式: 1)       Operator="+" | "-" | "*" | "/" 2)       Expression=<数字>

Atitit.编程语言原理---方法重载的实现与设计&#160;调用方法的原理

Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理 1. 重载包括:普通方法的重载和构造方法的重载 1 1.1. 横向重载”和“纵向重载”1 1.2. 方法签名通过  方法名称,参数数量,参数类型+返回类型 参数顺序(命名参数)来组成1 1.3. 重载(重新载选方法流程,如下图所示2 2. 重载的实现方法::argus参数 vs  默认值.可选参数法 可选参数3 2.1. __call()函数是php类的默认魔法函数 3 2.2. Java通过反射调用方法重载 执行方法4 2.

atitit.词法分析原理&#160;词法分析器 (Lexer)

atitit.词法分析原理 词法分析器 (Lexer) 1. 词法分析(英语:lexical analysis)1 2. :实现词法分析程序的常用途径:自动生成,手工生成.[1] 2 2.1. 词法分析程序的功能2 2.2. 如何描述词素3 2.3. 单词token3 2.4. Token的类型,根据程序设计语言的特点,单词可以分为五类:关键字.标识符.常量.运算符.界符.以4 2.5. 词法分析的第一阶段即扫描器4 2.6. 词法分析的第二阶段评估器(Evaluator)5 2.7. 例如C语

Atitit. Dwr 抛出异常error解决方案

Atitit. Dwr 抛出异常error解决方案 1. Dwr3的处理机制..setErrorHandler 1 2. remote Mteh  try catch 1 3. 林吧,子好java 处理,返回空的....走ok兰... 2 1. Dwr3的处理机制..setErrorHandler function errh(errorString, exception) { //  alert(errorString); //  alert( JSON.stringify(exception)

Atitit.java&#160;jar&#160;hell解决方案-----Djava.ext.dirs&#160;in&#160;ide&#160;envi..

Atitit.java jar hell解决方案-----Djava.ext.dirs in ide envi.. Atitit.java class flect solu jar hell use -Djava.ext.dirs=D:\workspace 空格\AtiPlatf\WEB-INF\lib_slf4j1.5.6 现象..同一份源码,一个使用了slf4j 1.5.6 一个使用了1.7版本的... 不个默认的使用了1.7版本的.. 不个后来的内个PushTestV2 使用的1.5.6版

Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc

Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选型java .net均有apache.poi 可用,php使用phpexcel1.8.01 1.3. 需要解决的问题2 1.4. 自定义类库atiexcel2 1.5. Excel导出的流程细节--导出表头2 1.6. Excel导出的流程细节--导出数据2 1.7. Phpexcel与poi的差异

Atitit 多继承实现解决方案 java c#

Java c#都没有提供多继承的解决方案..默认从语言级别以及没办法多继承了. 只可以崽类库的级别实现拉.. 继承的原理就是,使用一个内部super指针指向超类..我们可以下定义多个super 指针走ok兰.. Atitit 使用内部类来实现多继承 使用定义多个super 指针 实现.. super 的命名,还是super前缀,号.中间ide里面儿容易的提示.. 当然,没有原生语言的支持,调用方面要多一个层级,稍微麻烦些.不过都用super前缀也会好很多哈.. package com.alipa

FTP原理与配置

FTP(file transfer protocol)文件传输协议(基于tcp协议).是用来传送文件的协议,使用FTP实现文件传输的同时,还可以保证数据传输的可靠性和高效性.通过学习我们需要掌握以下两点: 1.掌握FTP的工作原理 2.FTP服务器端配置 下面我们从以上2点开始学习 1.掌握FTP工作原理FTP提供了一种在服务器和客户机之间上传和下载文件的有效方式,使用ftp进行文件传输时. 1.1.两个FTP连接 传输文件的过程如下: 第一个连接是FTP客户端和FTP服务器之间的控制连接.FT