聊聊 FTP、SFTP、FTPS

文章目录

FTP概述

  • 文件传送协议FTP(File Transfer Protocol)是TCP/IP协议簇中的一个成员,也是现在因特网上最广泛的文件传送协议。FTP协议包括两个部分,一个是FTP客户端,另一个是FTP服务器。当然,FTP服务器是用来存储文件资源的,FTP客户端通过访问FTP服务器来获得资源的。

两种工作方式

  • 一般情况下,当使用FTP服务的时候,我们都知道默认是21号端口,其实还有一个20号端口。FTP使用两个TCP连接,21号端口负责控制连接,20号端口负责数据连接,这样才不会混乱,是FTP可以更好的为我们服务。FTP协议的工作方式可以分为主动方式和被动方式两种,主动是指FTP客户端发送PORT命令连接FTP服务器,被动是FTP客户端发送PASV命令连接FTP服务器。
  • 主动方式:在通过21号端口连接好控制通道后,客户端发送给服务器PORT命令,就是给服务器说咱们俩通信你可以在那个端口进行,于是服务器打开20号端口,连接上客户端的指定的端口进行连接,传送数据。需要创建一个新的连接。
  • 被动方式:在通过21号端口连接好控制通道后,客户端发送给服务器PASV命令,就是给服务器说咱们俩通信的端口号你选择,然后服务器随机选择一个端口(大于1024),FTP客户端连接至此端口,进行通信。不需要创建一个新的连接。

FTP、SFTP、FTPS

  • FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议"。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
  • FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型FTP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作"FTP-SSL"和"FTP-over-SSL"。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。
  • SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。

SFTP和FTPS的区别

  • SFTP 和FTPS都是为ftp连接加密,一个是借助ssl协议加密,一个时借助ssh加密。
  • ssl是为http/smtp等加密设计的,ssh是为telnet/ftp等加密、建立传输通道而设计的。
  • 简单的讲:sftp协议是ssh中的一条独立的协议,利用ftp服务器就可以传输数据。而ftps是ftp-over-ssl的意思,即ftp借助ssl协议加密传输,不但要用ftp服务器还要用ssl协议加密。

命令详解

SFTP

bash 复制代码
# 连接
sftp user_name@remote_server_address[:path]

-B: buffer_size,制定传输 buffer 的大小,更大的 buffer 会消耗更多的内存,默认为 32768 bytes;
-P: port,制定连接的端口号;
-R: num_requests,制定一次连接的请求数,可以略微提升传输速度,但是会增加内存的使用量。

# 从远程服务器拉取文件
get /path/remote_file

#上传本地文件到服务器
put local_file

# 查看远程服务器目录内容
ls

# 查看本地目录内容
lls

# 执行本地 Shell 命令
![command]

FTP

bash 复制代码
# 登录
ftp host 

-p :指定端口

# 下载
get 命令:下载指定文件
mget 命令:下载多个文件

# 上传
put 命令:上传指定文件
mput 命令:上传多个文件

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

相关推荐
zz_nj2 小时前
工作的环境
linux·运维·服务器
极客先躯2 小时前
如何自动提取Git指定时间段的修改文件?Win/Linux双平台解决方案
linux·git·elasticsearch
suijishengchengde3 小时前
****LINUX时间同步配置*****
linux·运维
qiuqyue3 小时前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI3 小时前
Linux 操作系统简介
linux
南烟斋..4 小时前
GDB调试核心指南
linux·服务器
爱跑马的程序员4 小时前
Linux 如何查看文件夹的大小(du、df、ls、find)
linux·运维·ubuntu
oMcLin6 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 Magento 电商平台,提升高并发请求的响应速度与稳定性?
linux·运维·ubuntu
Qinti_mm7 小时前
Linux io_uring:高性能异步I/O革命
linux·i/o·io_uring
优雅的38度7 小时前
linux环境下,使用docker安装apache kafka (docker-compose)
linux·架构