zoukankan      html  css  js  c++  java
  • FTP(File Transfer Protocol)——文件传输协议详解

    FTP原理与配置

    前言

    FTP是用来传送文件的协议,使用FTP实现远程文件传输的同时,还可以保证数据传输的可靠性和高效性。

    FTP种类

    FTP、TFTP、SFTP V1、SFTP V2
    上述三种协议都存在安全风险,建议使用SFTP V2进行文件操作

    FTP的应用

    FTP传输文件的过程

    FTP主动模式和被动模式

    主动模式(默认)

    FTP默认使用的主动模式,指的是服务器主动连接客户端进行数据传输操作。
    1、使用FTP进行数据传输前,会建立两个TCP连接,端口号分别为20和21,21端口是控制命令传输端口,如:删除文件、重命名文件、下载文件、列取目录、获取文件信息等。
    2、20端口为数据传输端口。

    主动模式传输过程

    1、在主动模式下,客户端会开启N和N+1两个端口,N为客户端的命令端口,N+1为客户端的数据端口。
    第一步,客户端使用端口N连接FTP服务器的命令端口21,建立控制连接并告诉服务器我这边开启了数据端口N+1。
    第二步,在控制连接建立成功后,服务器会使用数据端口20,主动连接客户端的N+1端口以建立数据连接。这就是FTP主动模式的连接过程。

    我们可以看到,在这条红色的数据连接建立的过程中,服务器是主动的连接客户端的,所以称这种模式为主动模式。

    上面这张图是通过netstat命令查看到的ftp主动模式下TCP的连接信息,首先客户端使用49195端口连接服务器21端口建立控制连接,然后服务器使用20端口连接客户端49197端口建立数据连接。
    这里需要补充下,客户端的命令端口和数据端口实际中并不是有些文章写道的N和N+1的关系,两个端口比较接近而已。

    主动模式有什么利弊呢?

    主动模式对FTP服务器的管理有利,因为FTP服务器只需要开启21端口的“准入”和20端口的“准出”即可。
    但这种模式对客户端的管理不利,因为FTP服务器20端口连接客户端的数据端口时,有可能被客户端的防火墙拦截掉。

    被动模式

    上面所讲的是FTP主动模式,简单的理解就是服务器的数据端口20主动连接客户端的数据端口,来建立数据连接,用来传输数据,这个数据连接的建立有可能被客户端防火墙拦截掉。为了解决这个问题就衍生出另外一种连接模式---被动模式。被动模式也称为passive模式。

    被动模式是如何运作的呢?来看下这张图


    1、客户端开启N和N+1端口,用端口N连接NTP服务器的21端口建立连接,并发送PASV命令,让FTP服务器使用被动模式,控制连接建立成功后,服务器开启一个数据端口P,通过PORT命令将P端口告诉客户端。
    2、客户端的数据端口N+1去连接服务器的数据端口P,建立数据连接。
    我们可以看到,在这条红色的数据连接建立的过程中,服务器是被动的等待客户端来连接的,所以称这种模式为被动模式。

    上面这张图是通过netstat命令查看到的“被动模式”下的TCP连接情况,首先客户端49222端口去连接服务器的21端口,建立控制连接。然后客户端的49224端口连接服务器的6008端口去建立数据连接。
    这里有两点需要补充
    第一,客户端的命令端口和数据端口实际中并不是有些文章写道的N和N+1的关系,两个端口比较接近而已;
    第二,服务器的数据端口P是随机的,这个客户端连接过来用的是6008端口,另外一个连接过来可能用的就是7009,不过P端口的范围是可以设置的。

    被动模式有什么利弊呢?

    被动模式对FTP客户端的管理有利,因为客户端的命令端口和数据端口都是“准出”,windows防火墙对于“准出”一般是不拦截的,所以客户端不需要任何多余的配置就可以连接FTP服务器了。
    但对服务器端的管理不利。因为客户端数据端口连到FTP服务器的数据端口P时,很有可能被服务器端的防火墙阻塞掉。

    FTP传输格式


    FTP传输数据时支持两种传输模式,ASCII模式和二进制模式。
    ASCII模式用于传输文本,字符发送前被转换成ASCII码之后进行传输,接收端收到后再将其转换成字符。二进制常用于发送图片文件和程序文件。

    FTP配置


    传输命令


    问题总结

    1、FTP服务默认使用服务器哪些端口
    21是控制端口 控制命令传输
    20端口是数据传输端口
    2、用户没有权限访问任何工作目录,应该如何解决
    分配高级权限,定义默认的FTP目录,执行 set default ftp-directory命令建立默认目录

  • 相关阅读:
    【BZOJ4621】Tc605 DP
    【BZOJ4624】农场种植 FFT
    【BZOJ4627】[BeiJing2016]回转寿司 SBT
    【BZOJ4631】踩气球 链表+线段树+堆
    Excel error 64-bit version of SSIS
    (转) bicabo Visual Studio 2012自动添加注释(如版权信息等)
    Integration Services 变量
    (转)SSIS_数据流转换(Union All&合并联接&合并)
    (转)SSIS处理导入数据时, 存在的更新, 不存在的插入
    (转)WPF学习资源整理
  • 原文地址:https://www.cnblogs.com/xiaowangtongxue/p/14754400.html
Copyright © 2011-2022 走看看