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是File Transfer Protocol(文件传输协议)的英文缩写,用于Internet上的控制文件的双向传输。同时也是一个应用程序。

Tcp/ip协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。Ftp协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、连接的方式,甚至是否使用相同的操作系统无关。

FTP传输使用的是TCP数据包协议,TCP在建立;连接前会先进行三次握手。不过FTP服务器比较麻烦一些,因为FTP服务器使用了两个连接,分别是命令通道与数据通道。因为是TCP数据包,所以这两个连接都需要经过三次握手。

FTP两个通道(控制通道、数据通道)

原理:FTP协议使用两个TCP连接,一个是命令链接,用于在FTP客户端和服务器;之间传输命令;另一个是数据链接,用于上传或下载数据。

控制通道是FTP服务器进行沟通的重要通道,连接FTP,发送FTP指令都是通过控制通道来完成的。

数据通道是FTP服务器进行文件传输或者列表的通道。

FTP协议中,控制连接均由客户端发起的,而数据连接有PORT与POSV方式。即主动与被动方式。

FTP工作的方式(FTP的两种工作模式)

FTP支持两种模式,一种是主动方式(也称为Standard模式,其FTP的客户端发送PORT命令到FTP服务器),一种是被动方式(也称为Passive模式,其FTP的客户端发送PASV命令带FTP服务器)。

FTP工作的方式(PORT - 主动模式)

在这里插入图片描述

主动模式 – 工作原理

原理:服务端从20端口主动向客户端发起链接。 控制端口21;数据传输端口20;

过程:客户端从一个任意的非特权端口N(N>1024)向FTP服务器的命令端口(默认是21)发送请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端开始监听端口N+1,并在命令链路上用PORT命令发送N+1端口到FTP服务器,于是服务器会从自己的数据端口(20)向客户端指定的数据端口(N+1)发送连接请求,建立一条数据链路来传送数据

(Port模式在建立控制通道的时候,首先与FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要发送数据的时候在这个通道上发送PORT命令。
PORT命令包含了客户端用什么端口接收数据。
在传输数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。
FTP服务端必须与客户端建立一个新的连接用来传送数据。)

(可以看见这种情况下的连接是客户端向服务器建立控制连接,服务器向客户端建立数据连接。客户端的数据连接和控制连接端口号是大于1024的两个端口号(临时端口),而FTP服务器的数据端口为20,控制端口为21)

主动模式 – 建立数据连接与控制连接的图解

在这里插入图片描述

主动模式 – 抓包并对包分析

在这里插入图片描述注意事项:主动模式与被动模式其控制管理的连接是一样的,只是数据传输方式,或者说是传输命令,的发起者不一样。主动模式的PORT命令由客户端发起,被动模式的PASV命令由服务器发起。(PORT命令是服务器接到客户端开放的数据连接随机端口后,主动去建立数据连接的;PASV命令是服务器发起的数据连接的随机端口,客户端连接访问该服务端端口,服务器端口是被动连接的。总而言之,主动与被动针对服务器而言的)
在这里插入图片描述第1817-1819包为tcp的三次握手,服务端端口是21,即ftp控制连接建立。
第1820包为服务器应答客户端报文,220;服务器就绪,附加参数为服务端ftp版本号;
第1821包为客户端向服务器端发送确认包;
在这里插入图片描述
第1935包为客户端发送发送请求认证用户名,命令USER,参数实际用户名;
第1936包为服务器端的确认包;
第1937包为服务端对客户端USER命令的应答,331;要求密码;
第1938包为客户端的确认包;
第2056包为客户端向服务器传送密码,命令PASS;后跟明文密码;
第2057包为服务器端的确认包;
第3030包为服务器对客户端PASS命令的应答,230;登录成功;
第3031包为客户端的确认包;
第3032包为客户端向服务器请求系统版本的命令; SYST命令;
第3033为服务器的TCP ACK回应包;
第3034包为服务端对客户端SYST命令的应答,215;系统名称;
第3035包为客户端的确认包;
(特别注意:在密码确认后要进行传输类型转换操作,执行passive命令)
第8147包为客户端向服务器请求数据传输类型,命令TYPE,参数I,表示是二进制;
第8148包为服务器对客户端TYPE命令的应答,200;协商数据传输的类型是二进制;
在这里插入图片描述
第8150包为客户端通过PORT命令来告诉服务器端,想用PORT主动方式传输数据;
第8151包为服务端收到命令后,对客户端PORT命令进行应答,200;协商成功,同意使用该模式;
第8152包为客户端向服务器通过STOR命令向服务器发送文件名,是FTP协议中的上传命令,可以针对文件和目录,在此是根目录下的文件l。(RETR命令是FTP的下载命令);
第8053-8155包为建立数据连接的过程,服务器端主动连接客户端;
第8156包为服务器对客户端STOR命令的应答,150;可以发送数据;
第8157包为客户端向服务器发送传输了14比特数据;
第8158与8159包为客户端断开数据连接与服务器端对客户端断开数据连接的确认;
第8160与8161包为服务器断开数据连接与客户端对服务器端断开数据连接的确认;
第8182包为服务器回应客户端数据传输完成,226;完成传输;
在这里插入图片描述第8333包为客户端通过QUIT命令向服务器发送退出请求;
第8334包为服务器对客户端QUIT命令的应答,221;再见。

FTP工作的方式(PASV - 被动模式)

在这里插入图片描述

被动模式 – 工作原理

原理:服务端在指定范围内某个端口被动等待及客户端链接。 控制端口21;数据传输端口 随机

过程:客户端从一个任意的非特权端口N(N>1024)向FTP服务器的命令端口(默认是21)发送请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PASV命令发送。于是服务器会开启一个任意的非特权端口P(P>1024),并在命令链路上把端口发送给客户端,然后客户端从自己的数据端口(N+1)向服务器的数据端口(P)发送连接请求,建立一条数据链路来传送数据。

(FTP服务器收到Pasv命令后,随机打开一个临时端口(也叫自由端口,端口号大于1023小于65535)并且 通知客户端在此端口上传送数据的请求,客户端连接服务器此端口然后FTP将通过这个端口进行数据的传送,这个时候FTP服务器不在需要建立一个新的和客户端直接爱你的连接。)
(可以看见这种情况下的连接都是客户端向服务器发起的。其服务端的数据端口是临时端口,而不是常规的20)

被动模式 – 建立数据连接与控制连接的图解

在这里插入图片描述

被动模式 – 抓包并对包分析

在这里插入图片描述值得注意的是:本地访问自己搭建的ftp,wireshark根本捕获不到ftp数据包,这是因为,wireshark捕获的网卡的数据包,本地访问本地必然没有经过无线网卡。所以我找了两个跨网段的机器进行了测试,捕获ftp数据包。
在这里插入图片描述第738-740包为tcp的三次握手,服务端端口是21,即ftp控制连接建立。
在这里插入图片描述第741包为服务器应答客户端报文,220;服务器就绪,附加参数为服务端ftp版本号;
第1053包为客户端发送发送请求认证用户名,命令USER,参数实际用户名;
第1055包为服务端对客户端USER命令的应答,331;要求密码;
第1372包为客户端向服务器传送密码,命令PASS;后跟明文密码;
第2405包为服务器对客户端PASS命令的应答,230;登录成功;
在这里插入图片描述第2407包为客户端向服务器请求系统版本的命令;
第2408为服务器的TCP ACK回应包;
第2409包为服务端对客户端SYST命令的应答,215;系统名称;
在这里插入图片描述在2723之前执行put命令,上传文件;
第2723包为客户端向服务器请求数据传输类型,命令TYPE,参数I,表示是二进制;
第2724包为服务器对客户端TYPE命令的应答,200;协商数据传输的类型是二进制;
第2726包为客户端通过PASV命令来告诉服务器端,想用PASV方式传输数据;
第2727包为服务端收到命令后,在服务端建立一个数据端口69*256+131=17795端口监听,并把这个数据端口号返回给客户端;
在这里插入图片描述第2728-2730包,客户端发起的三次握手,去连接服务器端的17795这个数据端口,准备进行数据传输;
在这里插入图片描述第2731包为客户端向服务器通过STOR命令向服务器发送文件名,是FTP协议中的上传命令,可以针对文件和目录,在此是根目录下的文件l。(RETR命令是FTP的下载命令);
第2732包为服务器对客户端STOR命令的应答,150;可以发送数据;
在这里插入图片描述第2733-2735为数据传输的过程,客户端向服务器传输文件的内容。因为在此处文件内容为空(读者可以在文件内输入部分内容,查看效果);
第2736包为服务器回应客户端数据传输完成,226;完成传输; 在这里插入图片描述第2885包为客户端通过QUIT命令向服务器发送退出请求;
第2886包为服务器对客户端QUIT命令的应答,221;再见。

FTP连接虚拟主机连接不上的原因有哪些

1.由于用户名或密码不正确,文件传输协议连接失败。为了服务器,的安全,许多虚拟主机禁止匿名连接。如果用户名或密码错误,ftp连接将失败。

2.虚拟主机的域名解析问题导致ftp连接失败。

检查您使用的IP地址是否与我们公司用户后台订单中提供的IP地址一致;

3.是你关闭了FTP使用的端口导致的吗

FTP默认需要20和21端口,但是大量用户使用局域网。因此,服务器将使用大量1024到6000的动态端口。您不能禁止任何文件传输协议使用的端口,否则文件传输协议将无法正常工作。

4.有防火墙吗

防火墙设置将导致FTP服务器连接失败,因此您可以关闭或重置防火墙,然后再次连接以查看连接是否成功。如果安装了防火墙,请检查端口21是否打开,并允许与外部服务器链接进行互通(通常,如果防火墙的安全级别设置为高,则拒绝与外部服务器互通,因此请将防火墙的安全级别修改为中等以下);

5.虚拟主机不稳定,停机导致ftp连接失败。

当您租用的虚拟主机关闭时,您无法连接到FTP。您可以使用PING命令来测试FTP服务器是否处于正常状态。

6.短时间频繁连接FTP导致连接失败。

如果您的FTP链接的最后一行提示:530notloggedin,则当前只允许2个会话。然后FTP链接断了,说明你链接太多了。您的原始登录记录在服务器缓存中。一般请等30分钟再试。

7.7时提示SOCKET错误。FTP登录。

如果您上传文件时系统提示套接字错误,请检查您是否在软件的编辑菜单的连接中选择使用防火墙设置和PASV模式设置。如果您之前选择了这些选项,您可以取消这两个选项并重新连接它们。如果您的计算机上安装了诺顿等防病毒软件,请暂时关闭它。

FTP工具一般分为FLASHFXP、LEAPFTP、CuteFTP,统称FTP三剑客,多为中文版和破解版。使用FTP连接虚拟主机上传网站程序,简单方便

FTP返回码/响应码:

(响应代码 / 解释说明)

  • 110 新文件指示器上的重启标记

  • 120 服务器准备就绪的时间(分钟数)

  • 125 打开数据连接,开始传输

  • 150 打开连接

  • 200 成功

  • 202 命令没有执行

  • 211 系统状态回复

  • 212 目录状态回复

  • 213 文件状态回复

  • 214 帮助信息回复

  • 215 系统类型回复

  • 220 服务就绪

  • 221 退出网络

  • 225 打开数据连接

  • 226 结束数据连接

  • 227 进入被动模式(IP 地址、ID 端口)

  • 230 登录完成

  • 250 文件行为完成

  • 257 路径名建立

  • 331 要求密码

  • 332 要求帐号

  • 350 文件行为暂停

  • 421 服务关闭

  • 425 无法打开数据连接

  • 426 结束连接

  • 450 文件不可用

  • 451 遇到本地错误

  • 452 磁盘空间不足

  • 500 无效命令

  • 501 错误参数

  • 502 命令没有执行

  • 503 错误指令序列

  • 504 无效命令参数

  • 530 未登录网络

  • 532 存储文件需要帐号

  • 550 文件不可用

  • 551 不知道的页类型

  • 552 超过存储分配

  • 553 文件名不允许

其他:【由于文件内容过长,因此分开写】
FTP环境搭建及使用实例–linux系统(使用shell脚本或者使用配置文件)

参考链接:
1.https://pan.baidu.com/s/1UqgzyHNR_r7I8N88wcTBWw?pwd=pr3o
提取码:pr3o
2.https://blog.csdn.net/weixin_46470342/article/details/107316434

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:30:38  更:2022-09-24 21:34:43 
 
开发: 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/15 9:47:09-

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