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、关闭控制连接

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

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

相关文章

OSG编程指南<十四>:OSG纹理渲染之普通纹理、多重纹理、Mipmap多级渐远纹理及TextureRectangle矩阵纹理

1、纹理映射介绍 物体的外观不仅包括形状,不同物体表面有着不同的颜色和图案。一个简单而有效地实现这种特性的方法就是使用纹理映射。在三维图形中,纹理映射(Texture Mapping)的方法运用广泛,使用该技术可以大大提高物…

校园教务管理系统

学年论文(课程设计) 题目: 信息管理系统 校园教务管理系统 摘要:数据库技术是现代信息科学与技术的重要组成部分,是计算机数据处理与信息管理系统的核心,随着计算机技术的发展,数据库技…

Python-列表详解(列表的创建、用法、遍历、注意事项、特点等)

本文有以下内容: 列表的创建 列表的下标索引注意事项 列表的访问 列表的增加元素 列表的删除元素 列表的任意删除元素 列表的查找元素 列表的查找元素位置 列表的插入任意位置 列表的遍历 列表的拼接方式 列表的切片操作以及注意事项 列表类似于其他语言的数组 列…

记录 | linux静态库和动态库的理解

hello.cpp&#xff1a; #include <cstdio>void hello() {printf("Hello, world!\n"); }main.cpp&#xff1a; #include <cstdio>void hello();int main() {hello();return 0; }静态库编译配置&#xff1a; cmake_minimum_required(VERSION 3.12) proj…

mysql面试题——索引创建与设计原则

一&#xff1a;哪些情况适合创建索引&#xff1f; 字段的数值有唯一性的限制 频繁作为 WHERE 查询条件的字段 经常 GROUP BY 和 ORDER BY 的列 DISTINCT 字段需要创建索引&#xff1a;有时候我们需要对某个字段进行去重 SELECT DISTINCT(student_id) FROM student_info;运行…

王学岗切面编程(AOP)最新配置

不懂啥是切面编程的看我这篇文章 本文主要讲解最新的切面编程配置 首先看下app的build.gradle界面&#xff0c;有两处配置 plugins {id("com.android.application")id("org.jetbrains.kotlin.android") // 配置1id("com.ibotta.gradle.aop")…

C++大小写字母转换

这内容确实很初级了&#xff0c;就是ascii码的加减转换类型输出&#xff0c;但是以往都是学学理论&#xff0c;好多东西还真掌握不扎实&#xff0c;现在通过实验了验证一下&#xff0c;代码如下 可以看到字母的大小写直接差了32&#xff0c;如果要进行转换的话对应加减就可以了…

C++ 获取当前目录下的指定后缀文件

获取指定目录下的所有指定格式文件&#xff0c;返回的列表将按照创建时间排序 注意&#xff1a;文件最早的在最前面 #include "shlwapi.h" #pragma comment(lib,"shlwapi.lib") #pragma comment(lib, "Version.lib ") #include <iostream&…

Redis Reactor事件驱动模型源码

前置学习&#xff1a;Redis server启动源码-CSDN博客 1、Redis服务器启动的时候就会就一直在轮询。 // 运行事件处理器&#xff0c;一直到服务器关闭为止 aeSetBeforeSleepProc(server.el,beforeSleep); aeMain(server.el);// 服务器关闭&#xff0c;停止事件循环 aeDeleteEven…

Hello World

世界上最著名的程序 from fastapi import FastAPIapp FastAPI()app.get("/") async def root():return {"message": "Hello World"}app.get("/hello/{name}") async def say_hello(name: str):return {"message": f"…

智慧配电运维系统解决方案

智慧配电运维系统依托电易云-智慧电力物联网&#xff0c;是一种基于云计算、物联网、大数据等先进技术的配电室运维管理系统&#xff0c;具有实时监测、智能分析、远程控制等特点&#xff0c;可以提高配电室的安全可靠性、运行效率和管理水平。 智慧配电运维系统解决方案通过以…

常见场景题-Redis的bitmap如何实现签到功能?

Redis 的 bitmap 实现签到系统&#xff1f; 答&#xff1a; 主要讲一下 Redis 原生的 bitmap 的使用方法&#xff0c;以及如何使用 bitmap 来实现签到功能 先来看一下如何使用 redis bitmap 的原生命令实现签到功能&#xff1a; 签到 我们先来设计 key&#xff1a;userid:y…

一文通关物理机Ubuntu22.04融合部署OpenStack

前言 因为博主笔记本是amd的&#xff0c;就最近搞了个小主机&#xff0c;就想装个云平台玩玩&#xff0c;搞了三四天才正儿八经弄完&#xff0c;摸了一大堆错误出来&#xff0c;在文章前面我会将这些需要注意的点列举出来。 环境 物理环境&#xff1a; i5 12450H 32G内存 无线…

css 3D背景反转实现

body{/* 透视 */perspective: 800px; } div{transform-style:preserve-3d;width:259px;height:396px;margin: 100px auto;position: relative; } div img{position: absolute;width:259px;height:396px;left:0;top:0;transition: all linear 2s;z-index: 0; } div img:nth-chil…

Centos7安装GItLab(在线版)

基础环境准备 1.配置清华大学镜像仓库 新建仓库配置文件使用 vim /etc/yum.repos.d/gitlab-ce.repo 命令&#xff0c;输入以下内容,保存 [gitlab-ce] nameGitlab CE Repository baseurlhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck0 enabl…

ThreadLocal+TaskDecorator实现父子线程 参数传递

一、背景 我定义注解&#xff0c;在切面中实现动态数据源切换&#xff0c;但是目标方法中&#xff0c;使用新开线程&#xff0c;异步的方式执行&#xff0c;导致在切面中主线程切换数据源参数&#xff0c;无法在异步的目标方法中使用。 二、实现方式 1、创建UserUtils类。 …

免费文章生成器的种类,3款免费的文章生成器推荐

内容创作无疑是网络营销和品牌建设中不可或缺的一环。许多人在日常工作中可能会面临时间不足、灵感枯竭等问题&#xff0c;本文将深入聊聊免费文章生成器的种类&#xff0c;详细介绍使用方法。 1. 免费文章生成器的种类 基于模板的生成器 这类生成器通常提供一系列文章模板&…

清新脱俗的Notes主页

大家好&#xff0c;才是真的好。 作为Notes客户端重度用户&#xff0c;我个人非常喜欢Notes客户机&#xff0c;平时都在使用。对于另一些Notes用户&#xff0c;喜欢Notes的人非常喜欢&#xff0c;而且还知道它非常强大&#xff0c;可以进行很多定制化。 今天我们来讲的就是No…

PHP:解决一个字符串中的斜杠 / 进行 JSON 编码时,斜杠被转义为 \/

一、修改前 问题代码 直接通过JSON编码&#xff0c;就会出现问题 代码 $url SO/.$fileName; echo json_encode($url); 效果 二、解决后 代码 使用 json_encode 函数的第二个参数 JSON_UNESCAPED_SLASHES 来禁止对斜杠进行转义 $url SO/.$fileName; echo json_encode…

C#调用cmd.exe(dos命令)两种方法(Process,Cli)

1、通过Process调用cmd命令 1&#xff09;C&#xff03;运行shell命令 string strCmdText; strCmdText "/C copy /b Image1.jpg Archive.rar Image2.jpg"; System.Diagnostics.Process.Start("CMD.exe",strCmdText); 2&#xff09;运行cmd命令隐藏控制…