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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

七大经典高效学习方法

金字塔学习模型 金字塔学习是美国学习专家爱德加戴尔1946年提出的。 他将学习分为主动学习和被动学习两种类型,用数字形象地呈现了采用不同学习方式,学习者在两周后还能记住的内容有多少。 被动学习:通过听讲、阅读、视听、演示这些活动&a…

Word使用相关——(待完善)

1.word 怎样删除分节符 2.word 怎样删除目录中的分节符 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我…

基于ssm vue的社区互助平台源码和论文

摘 要 随着社区互助规模的不断扩大,社区互助数量的急剧增加,有关社区互助的各种信息量也在不断成倍增长。面对庞大的信息量,就需要有社区互助管理来提高社区互助管理工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速…

企业级SQL开发:如何审核发布到生产环境的SQL性能

自从上世纪 70 年代数据库开始普及以来,DBA 们就不停地遭遇各种各样的数据库管理难题,其中最为显著的,可能就是日常的开发任务中,研发人员们对于核心库进行变更带来的一系列风险。由于针对数据库的数据变更是一项非常常见的任务&a…

nodejs微信小程序+python+PHP本科生优秀作业交流网站的设计与实现-计算机毕业设计推荐

通过软件的需求分析已经获得了系统的基本功能需求,根据需求,将本科生优秀作业交流网站功能模块主要分为管理员模块。管理员添加系统首页、个人中心、用户管理、作业分类管理、作业分享管理、论坛交流、投诉举报、系统管理等操作。 随着信息化社会的形成…

微软发布Orca2,“调教式”教会小规模大语言模型如何推理!

我们都知道在大多数情况下,语言模型的体量和其推理能力之间存在着正相关的关系:模型越大,其处理复杂任务的能力往往越强。 然而,这并不意味着小型模型就永远无法展现出色的推理性能。最近,奶茶发现了微软的Orca2公开了…

iOS不越狱自动挂机

自动挂机在电脑上或者安卓手机上都相对容易,而在不越狱的iOS设备上还是有点难度的。 此方法不是我原创,详情见: 【苹果党福音,ios也能用的挂机脚本】 https://www.bilibili.com/video/BV1sv4y1P7TL/?share_sourcecopy_web&v…

多模块项目打包lib成aar

首先 我们要理解原理lib和app的gradle配置区别 plugins { id com.android.application } plugins { id "com.android.library" } assembleDebug(assembleRelease)两者分别生成是apk 和aar 对于app来说有包名、有版本号而library没有。 接…

【页面】表格展示

展示 Dom <template><div class"srch-result-container"><!--左侧--><div class"left"><div v-for"(item,index) in muneList" :key"index" :class"(muneIndexitem.mm)?active:"click"pa…

在线学习平台-需求分析(Java)

需求分析 研发集管理员、教务、教师、学生四种权限一体的中后台教务服务管理系统。其中管理员能够开设账号与角色分配&#xff0c;控制系统权限&#xff1b;教务能够进行班级管理、学员管理&#xff1b;教师能够进行课程与教学资源发布、作业发布与批改&#xff1b;学生能够观…

m1源码编译xgboost的动态链接库dylib

1、下载源码 git clone --recursive https://github.com/dmlc/xgboost cd xgboost拉取源码时候&#xff0c;一定要加"--recursive"这个命令。把它的字模块也要拉取下来&#xff0c;才能编译成功 2、安装c依赖 必要的依赖项(不然后续编译时报错)&#xff0c;包括CM…

无到无限,回顾亚马逊云关系型数据库 15 年的发展历程

又是一年一度 AWS re:Invent&#xff0c;这次关系型数据库最重磅的发布是 Amazon Aurora Limitless Database (无限数据库)。在 AWS 高级副总裁 Peter DeSantis 的 Keynote 里&#xff0c;也用了将近一半的篇幅回顾了 AWS 关系型数据库的发展历程。 2009 - RDS 把 MySQL, Post…

每日3道PWN(第二天)

ciscn_2019_n_1 参考&#xff1a; [BUUCTF-pwn]——ciscn_2019_n_1-CSDN博客 [BUUCTF]PWN5——ciscn_2019_n_1_ciscn_2019_n_4-CSDN博客 BUUCTF—ciscn_2019_n_1 1-CSDN博客 checksec一下 64位栈溢出 按f5查看main函数&#xff0c;双击可疑函数 发现含有命令执行的且发现fl…

uniapp横向滚动示例

目录 插件市场案例最后 插件市场 地址 案例 地址 最后 感觉文章好的话记得点个心心和关注和收藏&#xff0c;有错的地方麻烦指正一下&#xff0c;如果需要转载,请标明出处&#xff0c;多谢&#xff01;&#xff01;&#xff01;

统信UOS_麒麟KYLINOS上安装特定版本python

原文链接&#xff1a;统信UOS/麒麟KYLINOS上安装python特定版本 hello&#xff0c;大家好啊&#xff01;Python作为一种广泛使用的编程语言&#xff0c;其版本多样性给开发者带来了既便利又挑战的情况。不同的项目可能需要不同版本的Python&#xff0c;而在统信UOS/麒麟KYLINOS…

数据结构 | 查漏补缺之DFS、BFS、二次探测再散列法、完全二叉树、深度计算

目录 DFS&BFS 哈希表-二次探测再散列法 完全二叉树&深度计算 排序 快速排序-挖坑法 插入、选择、冒泡、区别 DFS&BFS 哈希表-二次探测再散列法 完全二叉树&深度计算 排序 快速排序-挖坑法 插入、选择、冒泡、区别 插入从第一个元素开始&#xff0c…

文件上传漏洞(带实例)

漏洞介绍&#xff1a; 现代互联网的Web应用程序中&#xff0c;上传文件是一种常见的功能&#xff0c;因为它有助于提高业务效率&#xff0c;如企业的OA系统&#xff0c;允许用户上传图片&#xff0c;视频&#xff0c;头像和许多其他类型的文件。然而向用户提供的功能越多&#…

VMware虚拟机系统CentOS镜像的下载

文章目录 阿里云下载官网下载参考文档 一些小版本可能过时或者其他原因已经不能存在了&#xff0c;只有大版本号最新的&#xff0c;或者其他最新版本 阿里云下载 1-百度搜索&#xff1a;阿里云 2-找到开发者社区 3-找到下载&#xff0c;选择镜像 4-选择系统 5-点击镜像地…

Selenium+Unittest+HTMLTestRunner框架更改为Selenium+Pytest+Allure(一)

背景&#xff1a;之前的框架&#xff0c;Selenium是3.x版本&#xff0c;现在更新到4.15版本后&#xff0c;一些写法如find_element_by_xxx 不再支持&#xff0c;改为find_element(By.xxx)的方式&#xff0c;同时由于Unittest不如Pytest在执行方面灵活&#xff08;比如只执行冒烟…

流媒体音视频/安防视频云平台/可视化监控平台EasyCVR无法启动且打印panic报错,是什么原因?

国标GB视频监控管理平台/视频集中存储/云存储EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园…