FTP服务原理及使用

news2024/10/4 21:36:45

一、配置FTP服务

配置FTP服务,内容不难,本地虚拟机上自带FTP服务程序,自己下载即可。

二、理解FTP的主动模式和被动模式原理

1 主动模式

客户端先开启一个大于1024的随机端口,用来与服务器的21号端口建立控制连接;当用户需要传输数据时,在控制通道中通过使用PORT命令向服务器发送本地IP地址以及端口号,服务器会主动用20号端口去连接客户端发送过来的指定端口,实现数据传输,然后再这条连接上面进行文件的上传或下载。

FTP主动传输方式具体步骤如下:

  1. 客户端与服务器的21号端口建立TCP连接,即控制连接

  2. 当用户需要获取目录列表或传输文件的时候,客户端通过使用PORT命令向服务器发送本地IP之地以及端口号,期望服务器与该端口建立数据连接。

  3. 服务器(20号端口)与客户端该端口建立第二条TCP连接,即数据连接

  4. 客户端与服务器通过该数据连接进行文件的发送和接收。

在主动模式下,ftp请求是由客户端TCP连接的;传输数据的时候,TCP连接却是由服务端发起的。主动模式只能用于内网,客户端服务端互相访问;如果不在同一网络中,如客户端是本地虚拟机,服务端是云服务器,本地虚拟机可以访问云服务器21端口,但是云服务器访问不了本地虚拟机(由于防火墙或者是网络路由原因导致无法访问)。

2 被动模式

建立控制连接的过程与主动方式基本一致(向服务器21号端口建立控制连接);但是在建立数据连接的过程中,客户端通过控制连接发送PASV命令,随后服务器开启一个大于1024的随机端口,将IP地址和此端口号发送给客户端,然后客户端去连接服务器的该端口,从而建立数据传输链路。

FTP被动传输方式具体步骤如下:

  1. 客户端与服务器的21号端口建立TCP连接,即控制连接

  2. 当用户需要获取目录列表或传输文件的时候,客户端通过控制连接向服务器发送PASV命令通知服务器采用被动传输方式。服务器收到PASC命令后随机开启一个大于1024的端口,然后将该端口号和IP地址通过控制连接发给客户端。

  3. 客户端与服务器该端口建立第二条TCP连接,即数据连接

  4. 客户端与服务器通过该数据连接进行文件的发送和接收。

在被动模式下,不管是执行ftp命令,还是传输数据,都是由客户端向服务端发起TCP连接的。

3 从主动模式到被动模式

在很久以前每台电脑都有一个ip地址,ftp只有主动模式,后来出现了共享上网技术,所以也就有了下面的问题。

共享上网就是多台电脑共享一个公网ip去使用internet,例如某个局域网出口的公网ip是210.33.25.108,当内网用户(192.168.1.100)访问外网的ftp服务器时,如果采用主动模式,192.168.1.100告诉了ftp服务器我需要某个文件和我打开了20端口之后,由于共享上网的原因,192.168.1.100在出网关的时候ip已经被转换成了210.33.25.108,所以ftp服务器端收到的消息是210.33.25.108需要某个文件并打开了20端口,ftp服务器就会尝试连接210.33.25.108的20端口,这样当然不会成功。

在主动模式中,ftp的两个端口是相对固定的,如果命令端口是n的话,那数据端口就是n-1,也就是说默认情况下,命令端口是21,数据端口就是20,如果你把ftp服务的端口改成了521,那么数据端口就是520,这样配置防火墙很方便,只需要开通两个端口就可以了。但是,在共享上网的环境中无法使用主动模式。

在被动模式中,默认情况下命令端口是21,数据端口是随机分配的。但是,被动模式中数据端口的范围可以配置,防火墙也可以配置端口范围。

注意:FTP底层是TCP协议,SFTP底层是SSH协议。

三、手工执行FTP的一些命令(客户端的使用)

1 登录服务器:ftp 192.168.192.136:21

2 切换工作目录

  • 查看服务器工作目录:pwd

  • 切换服务器工作目录:cd 目录名

  • 切换本地工作目录:lcd 目录名

3 查看服务器上的目录和文件

  • 列出目录或文件名的详细信息

    • ls 目录或文件名

    • dir 目录或文件名

  • 仅列出目录和文件名

🔴nlist 目录或文件名 [本地文件名]

1)列出/project/public目录下的匹配*.h的文件名信息。

nlist /project/public/*.h

2)列出/freecplus目录下的匹配*.h的文件名信息,结果输出到本地的/tmp/public.list文件中。(一般程序中用)

nlist /project/public/*.h /tmp/public.list

4 下载/上传文件

🔴1、文件传输的模式

ftp传输文件的模式分二进制和ASCII码两种模式,二进制模式可以传输任何文件,包括压缩包、可执行程序、图片、视频、音频等,而ASCII模式只能传输.txt、.htm等ascii码文件(文本文件)。在实际开发中,不管什么文件,都用二进制方式传输。

1)查看当前的传输模式。

type

2)设定传输模式为二进制。

bin

3)设定传输模式为ASCII。

ascii

🔴2、下载文件

1下载单个文件

get 服务端文件名 [本地文件名]

2下载多个文件

mget 服务端文件1 服务端文件2 服务端文件3 …… 服务端文件n

  • 下载文件时,会一一提示,如果想关闭提示信息,先输入prompt命令。

prompt

🔴3、上传文件

1上传单个文件

put本地文件名 [服务端文件名]

2上传多个文件

mput 本地文件1 本地文件2 本地文件3 …… 本地文件n

  • 上传文件时,会一一提示,如果想关闭都显示信息,先输入prompt命令。

prompt

5 其它ftp命令

1)重命名ftp服务端的文件

rename 旧文件名 新文件名

2删除ftp服务端上单个文件

delete 文件名

3)删除ftp服务端的多个文件。

mdelete 文件名1 文件名2 文件名3 …… 文件名n

4在ftp服务端上创建目录。

mkdir pathname

5)删除ftp服务端上的目录。

rmdir pathname

6)切换传输模式。

passive

7)显示帮助信息。

help [命令名]

显示ftp命令的帮助信息,如果不输入命令名,则显示全ftp命令的帮助信息。

8)退出ftp。

bye

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2188733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rabbitmq消费者应答模式

1.应答模式 RabbitMQ 中的消息应答模式主要包括两种:自动应答(Automatic Acknowledgement)和手动应答(Manual Acknowledgement)。 自动应答: 不在乎消费者对消息处理是否成功,都会告诉队列删…

win11远程连接MySQL(linux版),不需安装docker容器

不想安装虚拟机,想在Windows 11上运行Linux。 在win11的搜索框内,搜索"启用或关闭",出现了“启用或关闭Windows功能”,双击打开。 勾选"适用于Linux的Windows子系统",“虚拟机平台”&#xff0c…

网站可疑问题

目标站点 Google hack 页面访问 抓包 POST /admin.php?actionlogin HTTP/2 Host: www.xjy.edu.cn Cookie: xkm_sidA6x4Cgw2zx User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0 Accept: text/html,application/xhtmlxml,appl…

AtCoder ABC373 A-D题解

ABC372 的题解没写是因为 D 是单调栈我不会(⊙︿⊙) 比赛链接:ABC373 总结&#xff1a;wssb。听说 E 很水&#xff1f;有时间我看看。 Problem A: Code #include <bits/stdc.h> using namespace std; int mian(){int ans0;for(int i1;i<12;i){string S;cin>&g…

7c结构体

文章目录 一、结构体的设计二、结构体变量的初始化2.1结构体在内存表示&#xff1b;**2.2**结构体类型声明和 结构体变量的定义和初始化只声明结构体类型声明类型的同时定义变量p1用已有结构体类型定义结构体变量p2*定义变量的同时赋初值。*匿名声明结构体类型 2.3 结构体嵌套及…

【笔记】选择题笔记408

无向图有16条边&#xff0c;其中度为4的顶点个数为3&#xff0c;度为3的顶点个数为4&#xff0c;其他顶点的度均小于3。图G所含的顶点个数至少是&#xff1a;11 总度数16232 度为2的顶点个数为x&#xff0c;度为1的顶点个数为y&#xff0c;度为0的顶点个数为z 由此可列出三元一…

工程机械车辆挖掘机自卸卡车轮式装载机检测数据集VOC+YOLO格式2644张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2644 标注数量(xml文件个数)&#xff1a;2644 标注数量(txt文件个数)&#xff1a;2644 标注…

从零开始Hadoop集群环境搭建

目录 1. Centos7.5硬件配置1.1 创建虚拟机1.2 虚拟机系统设置 2. IP地址和主机名称配置3. 软件配置3.1 安装 epel-release3.2 卸载虚拟机自带的JDK3.3 克隆虚拟机3.4 修改克隆虚拟机的IP3.5 JDK安装3.6 Hadoop安装 4. Hadoop目录结构 1. Centos7.5硬件配置 1.1 创建虚拟机 1.2…

CMU 10423 Generative AI:lec18(大模型的分布式训练)

这个文档主要讲解了分布式训练&#xff08;Distributed Training&#xff09;&#xff0c;特别是如何在多GPU上训练大规模的语言模型。以下是主要内容的概述&#xff1a; 1. 问题背景 训练大规模语言模型的主要挑战是内存消耗。 训练过程中&#xff0c;内存消耗主要来源于两个…

关于Mac管理员root权限的一些问题总结

&#x1f389; 前言 最近在学习Vue CLI的时候&#xff0c;发现在Vscode里面想要修改文件或者保存文件都会显示“permission denied”&#xff0c;即权限不足。于是想了一些解决方法&#xff0c;记录在此。 &#x1f389; 检查当前用户权限 打开终端&#xff0c;输入以下指令…

yolov8/9/10/11模型在工地安全帽检测中的应用【代码+数据集+python环境+GUI系统】

yolov8/9/10/11模型在工地安全帽检测中的应用【代码数据集python环境GUI系统】 yolov8/9/10/11模型在工地安全帽检测中的应用【代码数据集python环境GUI系统】 背景意义 在建筑工地、矿山、工厂等工业生产环境中&#xff0c;安全帽是保护工人头部免受伤害的重要劳保工具。然而…

销售业绩飞跃,通过CRM系统激发销售团队潜力

要让销售人员使用CRM系统&#xff0c;首先需要理解他们抗拒的原因。常见的抗拒理由包括时间不足、系统复杂、缺乏培训以及对成效的怀疑。为了克服这些障碍&#xff0c;企业可以采取一系列措施&#xff0c;如提供全面培训、通过案例展示价值、强调实际收益、逐步引入系统、领导层…

C语言第15课—数据在内存中的存储

文章目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断3. 整数存储练习3.1 练习13.2 练习23.3 练习33.4 练习43.5 练习5 4. 浮点数在内存中的存储4.1 浮点数存的过程4.2 浮点数取的过程 1. 整数在内存中的存储 整数的2进制表示有三种方法&#xff1a;原码、反码、补码有符…

CSS3--美若天仙!?

免责声明&#xff1a;本文仅做分享~ 目录 CSS引入方式 选择器 盒子尺寸和背景色 文字控制属性 单行文字 垂直居中 字体族 font复合属性 文本对齐方式 文本修饰线 color 文字颜色 ----- 复合选择器 伪类选择器 超链接伪类 CSS特性 继承性 层叠性 优先级 Emmet …

37 预处理器与预处理指令、宏定义(定义常量、数据类型、替换文本、嵌套与取消)、带参宏(细节处理、与函数的区别)

目录 1 预处理器 2 预处理指令 2.1 位置 2.2 格式 2.3 换行 2.4 结束符 2.5 位置限制 3 宏定义 3.1 语法格式 3.2 使用宏定义常量 3.3 使用宏定义数据类型 3.4 宏定义的替换文本 3.5 宏定义嵌套 3.6 取消宏定义 4 带参数的宏定义 4.1 语法格式 4.2 案例演示 …

ElasticSearch学习笔记(三)Ubuntu 2204 server elasticsearch集群配置

如果你只是学习elasticsearch的增、删、改、查等相关操作&#xff0c;那么在windows上安装一个ES就可以了。但是你如果想在你的生产环境中使用Elasticsearch提供的强大的功能&#xff0c;那么还是建议你使用Linux操作系统。 本文以在Ubuntu 2204 server中安装elasticsearch 8.…

go的一些知识点

一.package 1.新建项目 新建一个itying文件夹&#xff0c;在里面使用命令 就能生成一个go项目。生成一个go.mod 2.调用别的包的代码 按照下面的目录层级生成代码 //clac.go package calcfunc Add(x, y int) int {return x y } func Sub(x, y int) int {return x - y }…

【Web】复现n00bzCTF2024 web题解(全)

目录 File Sharing Portal 方法一&#xff1a; 方法二&#xff1a; Focus-on-yourSELF Passwordless File Sharing Portal 附件的Dockerfile给了这么一段 # Add the cron job to the crontab RUN mkdir /etc/cron.custom RUN echo "*/5 * * * * root rm -rf /app…

<<迷雾>> 第6章 加法机的诞生(1)--全加器 示例电路

全加器的符号 info::操作说明 鼠标单击开关切换开合状态 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch03-01-full-adder.txt 原图 全加器的逻辑电路实现 info::操作说明 鼠标单击…

ACT调试pycharm报错

在运行ACT 代码时&#xff0c;根据官方readme使用命令行需要在wandb选择的时候输入3 但是&#xff0c;使用pycharm运行的时候会报错 wandb.errors.UsageError: api_key not configured (no-tty). call wandb.login(key[your_api_key]) 网上搜索都是说要注册什么key&#xf…