FTP(File Transfer Protocol)是TCP/IP协议组中的协议之一,该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。假设有两台不同的主机,运行在不同的操作系统下、使用不同的文件结构和字符集。如果需要将一个完整的文件从一台主机复制到另一个主机上去,则可以采用FTP的传输方式。Telnet协议也可以完成不同操作系统之间的文件传输。但与Telnet不同的是:FTP采用2个TCP连接来传输文件,而不需要强制两端都采用同一个标准。

FTP采用2个TCP连接来传输文件:

1、控制连接

以客户端/服务器方式建立。服务器以被动方式打开用于FTP的公共端口21,等待客户端来连接;客户端则以主动方式打开公共端口21,发起连接的建立请求。

控制连接始终等待客户端和服务器之间的通信,并且将相关命令从客户端传送给服务器,同时将服务器的应答传送给客户端。

2、数据连接

服务器的数据连接端使用端口20。服务器执行主动打开数据连接,通常也执行主动关闭数据连接,但是,当客户端向服务器发送流形式的文件时,则需要客户端关闭数据连接。

FTP中传输方式是流方式,并且文件结尾以关闭数据连接为标志,所以对每一个文件传输或目录列表来说,都要建立一个全新的数据连接。因此,当一个文件在客户端与服务器之间传输时,一个数据连接就建立起来了。

建立FTP数据连接的过程如下:

如下图所示,假设FTP客户端用于控制连接的临时端口号为2345,用户数据连接的临时端口号是2346。

1、服务器以被动方式打开端口21,等待连接。

2、客户端发起控制连接的主动打开,建立连接。

3、客户端用于控制连接的临时端口,与服务器21号端口之间的控制连接建立完毕。

4、客户端发起建立数据连接的命令。

5、客户端为该数据连接选择一个临时端口号,并且使用PORT命令通过控制连接把端口号发送给服务器。

6、服务器通过控制连接的接收端口号,向客户端发布一个主动的数据连接的打开。

7、客户端用于数据连接的临时端口,与服务器的20号端口之间的数据连接建立完毕。

注意:客户端也有可能不发出PORT命令,而由服务器向正被客户端使用的同一个端口号发出主动打开消息,用当前建立控制连接的临时端口来进行数据连接,这样控制连接被迫关闭。通过此方式来结束控制连接。

原文链接:http://www.net1980.com/2010/12/09/ftp/

转载于:https://blog.51cto.com/cchome/528280

FTP数据连接建立过程详解相关推荐

  1. 通俗易懂的TCP,SSL以及HTTPS的连接建立过程详解

    可以参考B站的一个视频,把TLS/SSL的连接建立过程降解的非常透彻.配合这篇博客食用更佳.一遍不懂请多看几遍,很有用! 1 说明 1.1 对称加密的和非对称加密 在数字加密算法中,通过可划分为对称加 ...

  2. Python笔记:网络爬虫之模拟人人网登录及获取数据的过程详解

    概述 使用urllib模拟人人网的登录的过程 使用urllib模拟人人网登录后获取个人数据的过程 使用urllib模拟登录及获取个人数据的过程 使用requests模拟登录及获取个人数据的过程 重点了 ...

  3. python接入excel_使用python将excel数据导入数据库过程详解

    因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接丢代码,使用python3,注释比较清楚. ...

  4. python动态图表变化_Python数据可视化 pyecharts实现各种统计图表过程详解

    Python数据可视化 pyecharts实现各种统计图表过程详解 发布时间:2020-09-10 04:53:26 来源:脚本之家 阅读:78 1.pyecharts介绍 Echarts是一款由百度 ...

  5. Python爬虫教程-Python爬取股票数据过程详解

    这篇文章主要介绍了基于Python爬取股票数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本环境配置 python 3.6 pycha ...

  6. ECharts 数据各种图自适应 可视化 项目过程详解(附完整代码)

    前言: 本篇文章的学习目的: 1.可视化面板布局适配屏幕 2.利用ECharts 实现柱状图展示 实现的技术栈: 基于 flexible.js +rem 智能大屏适配 VScode cssrem插件 ...

  7. 简述tcp协议三报文握手过程_TCP协议的3次握手与4次挥手过程详解

    前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服 ...

  8. 负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解

    负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解 系列文章: 负载均衡详解第一篇:负载均衡的需求 负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础 负载均衡详解第三篇:服务器负载均衡的基 ...

  9. 八大典型APT攻击过程详解

    八大典型APT攻击过程详解 2013-08-27 17:55 启明星辰 yepeng 51CTO.com 字号:T | T APT攻击是近几年来出现的一种高级攻击,具有难检测.持续时间长和攻击目标明确 ...

最新文章

  1. ubuntu 查看cpu运行频率_Ubuntu下调整CPU运行频率并对其进行监视
  2. sublime text2 用ctags插件实现方法定位(转)
  3. 分享字符串右移的算法
  4. 监控系统的多协议直播(RTSP RTMP HTTP Live Streaming)
  5. RUNOOB python练习题44
  6. 汽车行业持续亏损?奥迪:不存在的
  7. Linux设备驱动程序学习(2)-调试技术
  8. Java中list==null与list.size( )==0的区别
  9. 字节跳动一面:如何从 100 亿 URL 中找出相同的 URL?
  10. redhat 6.4 虚拟化平台搭建千万PV架构
  11. web网站制作的实例(大学生期末作业)集合
  12. 【OpenGL】实例渲染示例——草地渲染
  13. CronTrigger cron表达式
  14. wx.canIUse
  15. 433模块-----HCS301芯片烧录器
  16. OUTER JOIN的应用场景
  17. 攻防世界web新手题答案_南开本部20春学期(2003)《计算机应用基础》在线作业-1答案...
  18. python制作折线图_Python 绘制可视化折线图
  19. 【计算机网络】6 路由器与静态路由配置
  20. linux 查看磁盘使用情况或清空回收站命令

热门文章

  1. Navicat客户端历史版本下载地址
  2. Ubuntu16.4下安装ROS系统配置ROBOTIQ 3-Finger Adaptive Robot Gripper运行环境
  3. m3u8视频爬虫下载及合并(二)
  4. 字符集和字符编码(附c语言判断utf8编码)
  5. 终端连接mysql是出现error 2003_MySQL远程连接出现:ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'的问题...
  6. 两个整数的四则运算python_Python实现四则运算
  7. python爬虫入门笔记--ajax-post(查询全国的肯德基门店)
  8. 电脑杀蚊器:超级蚊霸+电子蚊香
  9. C语言编程酒店房价,C语言酒店入住管理系统课设(附源码).doc
  10. 我用ChatGPT写2023高考语文作文(三):新课标I卷