• 【FTP】一、什么是FTP?


    关于FTP的三篇文章整理:

    😉【FTP】一、什么是FTP?
    😉【FTP】二、Linux下FTP的搭建、排错与配置
    😉【FTP】三、FTP命令行指令–实现FTP文件共享


    在这里插入图片描述

    1、FTP

    FTP即File Transfer Protocol,是TCP/IP协议组中的协议之一,是Internet文件传送的基础。

    直白的讲,就是实现与远程计算机之间文件的拷贝和共享,或者说下载与上传。

    2、FTP的服务端与客户端

    FTP是一个C/S系统,FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。FTP的客户端比如Windows自带的ftp命令行、Flash_FTP程序……
    😉
    FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。 对应与两个TCP连接,需要两个端口,一个控制端口,一般为21,还有个数据端口,和FTP的工作模式有关,主动模式下为20,被动模式下由服务端和客户端协定。
    在这里插入图片描述

    3、FTP的工作模式

    Standard方式(PORT方式、主动方式)

    过程如下:

    • 客户端向FTP服务器的21端口发送连接请求,服务器接收连接,建立了命令链路
    • 需要传数据的时候,客户端在命令链路上用PORT命令告诉服务器:“我打开了xxx端口,速连我”
    • 于是,服务器从20端口向客户端的xxx端口发送连接,建立了数据链路

    手绘个不成熟的图,不想看文字的看图:
    在这里插入图片描述

    Passive方式(PASV方式、被动方式)

    过程如下:

    • 客户端向FTP服务器的21端口发送连接请求,服务器接收连接,建立了命令链路
    • 需要传数据的时候,服务器在命令链路上用PASV命令告诉客户端:“我打开了xxx端口,速连我”
    • 于是,客户端向服务器的xxx端口发送连接,建立了数据链路
      在这里插入图片描述

    建立两个链路的过程中,FTP客户端都是主动发起请求,称FTP(服务器)的被动模式。

    主动 FTP :
        命令连接:客户端 >1024 端口 → 服务器 21 端口
        数据连接:客户端 >1024 端口 ← 服务器 20 端口
    
    被动 FTP :
        命令连接:客户端 >1024 端口 → 服务器 21 端口
        数据连接:客户端 >1024 端口 → 服务器 >1024 端口
    
    --------
    主动(PORT)模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端的某一个大于1024的 端口;
    被动(PASV)模式中,数据传输的通道的建立是由FTP客户端发起的,他使用一个大于1024的端口连接服务器的1024以上的某一个端口。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    FTP被动模式出现的原因--共享公网IP

    多台电脑共享一个公网IP对FTP主动模式有什么影响?
    😉
    某个局域网共享210.33.25.1这个公网IP上网,当一个内网用户 192.168.0.100去访问外网的FTP服务器时,如果采用主动模式的话,192.168.0.1告诉了FTP服务器我需要某个文件和我打开了x端 口之后,由于共享上网的原因,192.168.0.1在出网关的时候自己的IP地址已经被翻译成了210.33.25.1这个公网IP,所以服务器端收到 的消息也就是210.33.25.1需要某个文件并打开了x端口,FTP服务器就会往210.33.25.1的x端口传数据,这样当然会连接不成功了,因 为打开x端口的并不是210.33.25.1这个地址。被动模式由此而生。

    4、FTP的传输模式

    FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。

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

    我们用客户端连接ftp成功的时候,会有提示是哪种传输模式:

    在这里插入图片描述

    关于这两种传输模式的介绍,想了解移步百度百科

    参考文档:文档1

  • 相关阅读:
    2024年【N1叉车司机】免费试题及N1叉车司机模拟试题
    项目管理基础2021复习笔记
    SpringBoot集成Redisson操作Redis
    Java项目:电器商城系统(java+SSM+JSP+jQuery+javascript+Mysql)
    [附源码]Python计算机毕业设计毕业生就业信息管理系统
    设计模式概念学习
    Python深度学习032:conda操作虚拟环境env的全部命令
    网络安全(黑客)——自学2024
    Complete Probability Spaces
    uni-app+vue3会遇到哪些问题
  • 原文地址:https://blog.csdn.net/llg___/article/details/127422585