FTP协议(PORT和PASV模式)

2023-12-06 19:04
文章标签 模式 协议 ftp port pasv

本文主要是介绍FTP协议(PORT和PASV模式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

FTP协议基本概念

PORT主动模式工作流程

PORT工作过程

PORT工作报文

PASV被动模式工作流程

PASV工作过程

PASV工作报文


FTP协议基本概念

FTP文件传输协议,用于在互联网上进行文件传输,基于C/S架构

FTP的连接模式

FTP采用双TCP连接方式

  • 控制连接使用TCP的21端口(传输FTP控制命令以及执行信息,在整个FTP会话期间会一直保持打开)
  • 数据连接使用TCP的20端口(传输数据-进行数据的上传、下载等,数据传输结束后就会将数据连接终止;等下次传输数据时会再次建立数据连接)

FTP的文件传输模式

ASCII模式:基本传输模式,适用于传输ASCII文本文件(例如HTML等)

二进制流模式:基本传输模式,将文件中的每一个字节都当做没有符号的二进制整数来看待,适用于大多数文件传输(例如图像、声音、可执行文件等)

扩展传输模式:需要客户端和服务器必须支持扩展模式(适用于传输8位和其它非标准二进制数据)

FTP的两种数据传输模式(主动和被动是针对服务器如何建立数据连接来说的)

PORT主动模式(服务器主动发起数据通道的建立)

PASV被动模式(服务端被动接收客户端发来的数据通道建立请求)


PORT主动模式工作流程

PORT工作过程

1、建立控制连接的TCP三次握手(一般是由客户端发起—源端口为大于1024端口,目的端口为21)

2、有些在进行数据传输前服务器会对客户端进行身份验证

3、当要进行数据传输时,建立数据通道(步骤如下)

 客户端向服务器发送Port命令,里面携带了客户端用于建立数据通信的临时端口号,并让服务器知道此次是主动连接方式

 服务器收到客户端的Port命令后,主动发起连接,向客户端使用的临时端口建立TCP连接

 数据传输结束后,发送数据的一方主动关闭连接

4、如果此时客户端要继续数据传输,则再次执行第3步,重新建立数据通道

5、当客户端关闭控制连接时

临时端口计算方式:IP地址倒数第二段数字*256+倒数第一段数字

PORT工作报文

5、数据传输结束后,发送数据的一方发起关闭数据连接(关闭数据连接有时会使用四次挥手,有时会借助FTP报文实现数据连接关闭;等下次传输时再重新建立连接);下次客户端传输数据时需要重新发送PORT,然后服务器重新与其建立数据连接

6、关闭控制连接(借用FTP报文实现控制通道关闭)


PASV被动模式工作流程

PASV工作过程

1、建立控制连接的TCP三次握手(一般是由客户端发起—源端口为大于1024端口,目的端口为21)

2、有些在进行数据传输前服务器会对客户端进行身份验证

3、当要进行数据传输时,建立数据通道(步骤如下)

 客户端向服务器发送PASV命令,里面携带了客户端为服务器生成的服务器用于建立数据通信的临时端口号,并让服务器知道此次是被动连接方式;服务器收到客户端的PASV命令后,等待客户端发起数据连接

 客户端向向服务其的临时端口建立TCP连接(源端口为 PASV命令使用的源端口+1,目的端口为PASV命令为服务器分配的端口)

 数据传输结束后,发送数据的一方主动关闭连接

4、如果此时客户端要继续数据传输,则再次执行第3步,重新建立数据通道

5、当客户端关闭控制连接时

临时端口计算方式:IP地址倒数第二段数字*256+倒数第一段数字

PASV工作报文

5、数据传输结束后,发送数据的一方发起关闭数据连接,等下次进行数据传输时在重新建立数据连接;等下次建立数据连接时,客户端的源端口会再+1,服务端端口也会再+1

6、关闭控制连接

这篇关于FTP协议(PORT和PASV模式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

SQL Server身份验证模式步骤和示例代码

《SQLServer身份验证模式步骤和示例代码》SQLServer是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQLServer身份验证,本文将详细介绍身份... 目录身份验证方式的概念更改身份验证方式的步骤方法一:使用SQL Server Management S

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2