FTP协议的工做原理

转贴出自 http://www.hetlife.com/ftp-protocol-works.htmlhtml

 

FTP协议工做原理数据库

FTP有两个过程一个是控制链接,一个是数据传输。FTP协议不像HTTP协议同样须要一个端口做为链接(默认时HTTP端口是80,FTP端口是 21)。FTP协议须要两个端口,一个端口是做为控制链接端口,也就是FTP的21端口,用于发送指令给服务器以及等待服务器响应;另一个端口用于数据传输端口,端口号为20(仅用PORT模式),是用创建数据传输通道的,主要做用是从客户向服务器发送一个文件,从服务器向客户发送一个文件,从服务器向客户发送文件或目录列表。服务器

FTP协议的传输模式网络

FTP协议的任务是从一台计算机将文件传送到另外一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操做系统无关。假设两台计算机经过ftp协议对话,而且能访问Internet, 你能够用ftp命令来传输文件。每种操做系统使用上有某一些细微差异,可是每种协议基本的命令结构是相同的。操作系统

 

 

FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。server

ASCII传输方式假定用户正在拷贝的文件包含的简单ASCII码文本,若是在远程机器上运行的不是UNIX,当文件传输时ftp一般会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。可是经常有这样的状况,用户正在传输的文件包含的不是文本文件,它们多是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件以前,用 binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。htm

二进制传输模式在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即便目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。若是你在ASCII方式下传输二进制文件,即便不须要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式通常假设每一字符的第一有效位无心义,由于ASCII字符组合不使用它。若是你传输二进制文件,全部的位都是重要的。)若是你知道这两台机器是一样的,则二进制方式对文本文件和数据文件都是有效的。ci

FTP协议的工做方式get

FTP支持两种模式,一种方式叫作Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。原理

Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

下面介绍一个这两种方式的工做原理:

Port模式FTP客户端首先动态的选择一个端口(通常是1024以上的)和FTP服务器的TCP 21端口创建链接,经过这个通道发送命令,客户端须要接收数据的时候在这个通道上发送PORT命令。

PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端经过本身的TCP 20端口链接至客户端的指定端口发送数据。

FTP server必须和客户端创建一个新的链接用来传送数据。

Passive模式在创建控制通道的时候和Standard模式相似,但创建链接后发送的不是Port命令,而是Pasv命令。FTP协议服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)而且通知客户端在这个端口上传送数据的请求,客户端链接FTP服务器此端口,而后FTP服务器将经过这个端口进行数据的传送,这个时候FTP server再也不须要创建一个新的和客户端之间的链接。不少防火墙在设置的时候都是不容许接受外部发起的链接的,因此许多位于防火墙后或内网的FTP服务器不支持PASV模式,由于客户端没法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登录FTP服务器,由于从服务器的 TCP 20没法和内部网络的客户端创建一个新的链接,形成没法工做。