博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FTP技术原理
阅读量:750 次
发布时间:2019-03-23

本文共 1440 字,大约阅读时间需要 4 分钟。

概述:

FTP (File Transfer Protocol)在TCP/IP协议族中属于应用层协议,是文件传输标准。主要功能是向用户提供本地和远程主机之间的文件传输,尤其在进行版本升级、日志下载和配置保存筹业务操作时,广泛地使用FTP功能。FTP协议基于相应的文件系统实现。

在这里插入图片描述
FTP是典型的C/S架构:

FTPServer:运行于设备上的FTP服务。提供远程客户端访问和操作的功能,用户可以通过FTP客户端程序登录到设备上,访问设备上的文件服务。

FTP Client:FTP的客户端。提供本地设备对远程服务器的文件进行操作的命令。用户在PC上通过终端程序或Telnet程序与作为FTP Client的设备建立连接后,可以输入FTP命令建立与远程FTP Server的连接并访问远程主机上的文件,对远程主机上的文件进行操

作。

FTP连接建立:

FTP采用2个TCP连接来传输文件:控制连接和数据连接。其中控制连接用于连接控制端口,传输控制命令:数据连接用于连接数据端口。在控制连接建立后,数据连接通过控制端口的命令建立起连接,进行数据的传输。

FTP连接的建立分为主动模式和被动模式,两者的区别在于数据连接是由服务器发起还是由客户端发起。缺省情况下采用主动模式,用户可以通过命令切换。

主动模式:

在这里插入图片描述

  1. 服务器打开端口21启动监听,等待连接。
  2. 客户端发起控制连接的建立请求,服务器响应连接,控制连接建立。
  3. 客户端通过控制连接发送PORT命令,将客户端数据连接的临时端口号告诉服务器。PORT信息里面带有数据通道建立的IP地址+X、Y值,通过X*256+y能够计算出客户端数据通道的端口号。
  4. 服务器的20号端口与客户端建立起数据连接。

被动模式:

在这里插入图片描述

  1. 服务器打开端口21启动监听,等待连接。
  2. 客户端发起控制连接的建立请求,服务器响应连接,控制连接建立。
  3. 客户端通过控制连接发送命令字PASV,告知服务器处于被动模式。
  4. 服务器通过控制连接,向客户端发送PORT命令,将服务器端数据连接的临时端口号告诉服务器。PORT信息里面带有数据通道建立的IP地址+X、Y值,通过X*256+y能够计算出服务器端数据通道的端口号。
  5. 客户端用临时端口向服务器计算出来的端口建立起数据连接。

源随机临时端口选择注意点:

源端口号一般是由系统自己动态生成的一个从1024-65535的号码,当一台计算机A通过网络访问计算机B时,如果它需要对方返回数据的话,它也会随机创建一个大于1023的端口 ,告诉B返回数据时把数据送到自己的哪个端口,然后软件开始侦听这个端口, 等待数据返回。

而B收到数据后会读取数据包的源端口号和目的端口号,然后记录下来、当软件创建了要返回的数据后就把原来数据包中的原端口号作为目的端口号,而把自己的端口号作为原端口号,也就是说把收到的数据包中的原和目的反过来,然后再送回A, A再重复这个过程如此反复直到数据传输完成。当数据全部传输完A就把源端口释放出来,所以同一个软件每次传输数据时不一定是同一个源端口号。

为什么要区分主动和被动模式:

当FTP Client和FTP Server之间有防火墙时,如果仅放行了客户端到服务器放行的流量,那么主动模式下数据通道的建立则是由服务器发起,此流量无法通过防火墙,被丢弃,导致FTP数据通道无法建立。

在这种情况下,可以使用被动模式来建立数据通道。当然,这不是最好的方式,最好的方式是在防火墙上开启ASPF功能。

参考资料:华为R&S培训文档

转载地址:http://amzzk.baihongyu.com/

你可能感兴趣的文章