IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 文件传输协议(FTP) -> 正文阅读

[系统运维]文件传输协议(FTP)

因特网上使用的最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存储权限。它屏蔽了各个计算系统的细节,因而适合于在异构网络中的任意计算机之间传输文件。

FTP提供以下功能:

  1. 提供不同种类的主机系统之间的传输能力(主机之间的软硬件可以不同)

  2. 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力

  3. 以匿名FTP的方式提供共用文件共享的能力

工作原理

FTP采用的是客户/服务器模式(C/S模式),它使用TCP可靠的传输服务。一个FTP进程可以同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求

FTP工作步骤如下:

  1. 打开熟知端口21(控制端口),使客户进程能连接上

  2. 等待客户进程发送连接请求

  3. 启动从属进程来处理客户进程发来的请求(文件的增删查改)。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。

  4. 回到等待状态,继续接受其他客户进程的请求

FTP服务器必须在整个会话期间内保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来。服务器必须追踪用户在远程目录树上当前的位置。

控制连接与数据连接

?

FTP在工作时会使用两个并行的TCP连接,其中一个是控制连接(端口号21),另一个是数据连接(端口号20)。使用两个不同的端口号可以使协议更加简单和容易实现。

控制连接

服务器监听21号端口,等待端口的连接。控制连接用来传输控制信息(如连接请求、传送请求),控制信息都以7位ASCII格式传送。FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程。控制连接不用来传输文件。在文件传输时还可以使用控制连接(如客户在传输中途发送一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态

?

数据连接

服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建"数据传送进程"和"数据连接"数据连接用来连接客户端和服务器端的数据传输进程,数据传送进程实际完成文件的传送,在传送完毕后关闭"数据传送连接"并结束运行(而控制连接仍然保持打开状态)

数据连接有两种方式:主动模式PORT和被动模式PASV

主动模式 PORT

客户端连接到服务器的21端口,登陆成功后要读取数据时,客户端随即开放一个端口,并发送命令告诉服务器,服务器收到PORT命令和端口号之后,通过20端口和客户端开放的端口连接,发送数据

被动模式 PASV

客户端连接到服务器的21端口,登陆成功后要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口,并告知客户端。客户端再连接到服务器开放的端口进行数据传输。

我们可以看到:服务器是使用主动模式还是被动模式,选择权在客户端而不是服务器端。主动模式是客户端连接到固定的熟知端口号20,被动模式是客户端连接到服务器端的随机的端口号(该端口号大于1023)

FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外传送的。使用FTP时,如果要修改服务器上的文件,则需要先将这个文件放到本地,之后再把修改后的副本传送到服务器。这样来回很浪费时间,所以来了个NFS协议,这个协议允许进程打开一个远程文件。并且能在该文件的特定位置开始读写数据。这样NFS可以使用户复制一个大文件中的一个很小的片段。

主机A想下载文件ftp://ftp.abc.edu.cn/file,大致描述下载过程中主机和服务器的交互过程

  1. 建立一个TCP连接,连接到服务器ftp.abc.edu.cnd的21号端口,然后发送登陆账号和密码

  2. 服务器返回登陆成功信息后,主机A打开一个随机的端口,将该端口号发送给服务器

  3. 主机A发送读取文件命令,内容为 get file 服务器使用20号端口建立一个TCP连接到主机A的随机打开端口

  4. 服务器把文件内容通过第二个连接发送给主机A,传输完毕后关闭连接(21号端口建立的控制连接不会断开)

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:39:36  更:2022-10-31 12:43:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:37:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码