whenalive 发表于 2017-9-26 09:38:15

TFTP 工作原理 前面是资料,后面的个人的理解,错了请多多包涵哈

:handshake








   文件传输协议   (英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。我们要分清文件传送(file   transfer)和文件访问(file access)之间的区别,前者是FTP提供的,后者是如NFS等应用系统提供的   FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。   FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话,会被防火墙断开;传输会产生一些错误。   FTP虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制   FTP实现的目标:   促进文件的共享(计算机程序或数据)   鼓励间接或者隐式的使用远程计算机   向用户屏蔽不同主机中各种文件存储系统(File system)的细节   可靠和高效的传输数据   缺点   
    [*]密码和文件内容都使用明文传输,可能发生窃听。
    [*]因为必须开放一个随机的端口以创建连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题,通过使用被动模式的FTP,得到了很大解决。
    [*]服务器可能会被告知连接一个第三方计算机的保留端口。
    [*]此方式在需要传输文件数量很多的小文件时,性能不好
      系统管理员建立了一个特殊的用户ID,名为anonymous,   Internet上的任何人在任何地方都可使用该用户ID。   
   
   主动和被动模式   FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以创建连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。   一个主动模式的FTP连接创建要遵循以下步骤:   客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,该tcp连接的来源地端口为客户端指定的随机端口x,目的地端口(远程端口)为服务器上的21号端口。   客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。   服务器打开20号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为20,远程数据(目的地)端口为(x+1)。   客户端通过本地的数据端口创建一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经创建好了一个连接   
   FTP的工作方式   
   FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。   
   下面介绍一个这两种方式的工作原理:   
   Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。   
   Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个临时端口(也叫自由端口,端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。   
   很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。   
   FTP软件可以更好的帮助你管理FTP目录 提供更系统的工具   
   FTP工具推荐使用 cuteftp   
   主动和被动模式FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。   
   一个主动模式的FTP连接建立要遵循以下步骤:   
   客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,源端口为随机端口x,在客户端,远程端口为21,在服务器。   
   客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。   
   服务器打开20号源端口并且建立和客户端数据端口的连接。此时,源端口为20,远程数据端口为(x+1)。   
   客户端通过本地的数据端口建立一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经建立好了一个连接。
个人对PORT(主动模式的理解)① 客户端随机的打开一个端口(大于1024小于65535)-------------------与服务端的21号端口建立连接②并且通过所建立的这个通道来发送指令③客户端传送数据的时候,向服务端发送port命令(包含客户端用什么端口来传送数据)④服务端用自己的20号端口来与客户端port命令所知道的端口建立连接,发送数据、 注意:在建立命令通道以后,FTP server必须和客户端建立一个新的连接用来传送数据
主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。
Passive模式(被动模式)① 客户端随机的打开一个端口(大于1024小于65535)-------------------与服务端的21号端口建立连接②并且通过所建立的这个通道来发送指令③ 服务端接收到客户端发送来的passive 命令之后,随机打开一个临时端口(也叫自由端口大于1024小于65535)④并且通知客户端在FTP服务器打开的这个临时端口上进行数据传送的请求⑤客户端连接到此端口,然后FTP服务器就通过这个端口来进行数据传送注意:这个时候FTPserver不再需要建立一个新的和客户端之间的连接很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP20无法和内部网络的客户端建立一个新的连接,造成无法工作









页: [1]
查看完整版本: TFTP 工作原理 前面是资料,后面的个人的理解,错了请多多包涵哈