当前课程知识点:计算机网络 > 第六章 应用层 > 6.3 FTP > FTP
这一节我们一起来学习
FTP文件传输协议的原理、工作方式等内容
主要介绍五个知识点
FTP协议概述、FTP工作方式、FTP传输方式
和FTP用户授权以及FTP发展现状
首先我们来简单认识一下FTP协议
它属于TCP/IP协议簇中的一个
是文件传输协议(File Transfer Protocol)的缩写
同大多数互联网服务一样
FTP也是一个客户机/服务器系统
字面理解就是主要用于文件传输
用户通过一个客户机程序
连接至远程计算机上运行的服务器程序
依照 FTP 协议提供服务
进行文件传输的计算机就是 FTP 服务器
而连接FTP服务器
遵循FTP协议与服务器传送文件的电脑
就是FTP客户端
它是Internet文件传送的基础
目标是提高文件的共享性
可以从一台计算机将文件传送到另一台计算机
与这两台计算机的位置、连接方式
甚至是是否使用相同的操作系统无关
FTP协议基于TCP协议的可靠传输服务
使存储介质对用户透明和可靠高效地传送数据
下面来看FTP的工作流程
如图 用户通过控制进程发出一条命令
要求服务器向用户传输一个文件的拷贝
服务器会响应这条命令
这个过程是TCP控制连接
将指定文件通过数据传送进程送至用户机器上
客户机程序代表用户接收这个文件
将其存放在用户目录中,即TCP数据连接
刚才的PPT中提到了FTP的端口
通常的默认情况下
FTP协议使用的端口号是20和21
其中20用于传输数据
21用于传输控制信息
但是否使用20端口作为传输数据的端口
与FTP使用的传输模式有关
FTP工作方式分为主动方式和被动方式
若是主动模式
那么数据传输端口就是20
若是被动模式
则根据服务器和客户端协商决定用哪个端口
先来看POST 主动方式
FTP客户端首先和FTP服务器的
TCP 21端口建立连接
通过连接通道发送命令
客户端要接收数据时在通道上发送PORT命令
命令中包含客户端用什么端口接收数据
传送数据时服务器通过TCP 20端口
连接至客户端指定端口发送数据
如图为POST响应流程
在这个模式下
FTP Server必须和客户端
建立一个新的连接用来传输数据
第一 客户端的命令端口(随机端口B>1024)
与FTP服务器命令端口21建立连接
此处以1026端口为例
然后客户端开始监听端口N+1
并发送命令“PORT 1027”
二 FTP服务器给客户端的命令端口
返回一个“ACK”信号
三 服务器发起一个从它自己的数据端口20
到客户端先前指定的数据端口1027的连接
四 客户端给服务器端返回一个“ACK”
下面来看PASV 被动方式
在建立控制通道的时候和POST模式类似
当客户端通过这个通道发送PASV 命令的时候
FTP server打开一个位于1024和5000之间的随机端口
并且通知客户端在这个端口上传送数据的请求
然后FTP server 将通过这个端口进行数据的传送
这个时候FTP server不再需要建立
一个新的和客户端之间的连接
如图为PASV响应流程
第一 客户端的命令端口(随机端口B>1024)
与FTP服务器命令端口21建立连接
此处以1026端口为例
然后客户端开始监听端口N+1
并发送命令“PASV”
二 FTP服务器开启任意一个
非特权端口(P>1024)
告诉客户端用哪个服务器端口监听数据连接
三 客户端初始化一个
从自己的数据端口(N+1)
到客户端指定的数据端口的连接
四 服务器端给客户器端数据端口
返回一个“ACK”响应
对比这两种工作方式
不同之处是由于
PORT方式需要在接上TCP 21端口后
服务器通过自己的TCP 20来发出数据
并且需要建立一个新的连接来传送档案
而PORT的命令包含一些客户端没用的资料
所以有了PASV的出现
而PASV模式拥有PORT模式的优点
并去掉一些PORT的缺点
PASV运行方式就是
当服务器接收到客户连接请求时
就会自动从端口1024到5000中
随机选择一个和客户端建立连接传递数据
由于被动且自动建立连接
容易受到攻击
所以安全性差
下面介绍FTP的传输方式
关于FTP传输模式有两种
一种是ASCⅡ传输模式
另一种是二进制传输模式
先介绍ASCⅡ传输方式
用户正在拷贝的文件包含简单ASCⅡ码文本
而在远程机器上运行的是不同操作系统
当文件传输时FTP会自动将文件内容
调整解释为另一台计算机
储存文本文件的格式
有时用户传输的文件不是文本文件
可能是程序、数据库、压缩文件等
这类文件在拷贝时需要
用到binary命令告诉ftp要逐字拷贝
然后来看二进制传输模式
二进制传输中会保存文件的位序
以便原始和拷贝逐位对应的
即使目的机器上包含位序列的文件
也是无意义的
如Macintosh以二进制方式传送
可执行文件到Windows系统上
在对方的系统上此文件不能执行
若是在ASCⅡ方式下传输二进制文件
即使不需要也会转译
这会使得传输变慢
也会损坏数据
使文件变得无用
接下来来看关于FTP用户授权的相关内容
用户使用FTP协议之前需要进行登录
取得授权账号(用户ID以及口令)后
方能登录服务器端进行操作
其中FTP传输协议支持匿名用户模式
即无需登机获取服务器端的授权
用户使用用户名“Anonymous”登录FTP服务
即可访问远程主机上公开的文件
服务器端还可以设置映射路径
用户登录后可访问服务器端上映射的地址
另外 用户要连上 FTP 服务器
就要用到(FTP)的客户端软件
通常 Windows自带“FTP”命令
这是一个命令行的 FTP 客户程序
输入FTP访问地址
即可访问FTP服务器上的资源
FTP访问地址中包括用户名、密码
FTP服务器IP地址或域名
FTP命令端口/路径/文件
上述参数中除FTP服务器IP地址或域名
为必要项外
其它都是非必需的
下面我们来看一下FTP的发展现状
FTP作为一个文件传输协议
其优势表现在适用于大文件
例如与HTTP协议作比较
FTP协议上传文件
大于1M的文件速度比HTTP快
文件越大
上传的速度就比HTTP上传
快的倍数越大
而从开发维护的角度看
用java编写程序
FTP比HTTP更方便
虽然近年来有各种FTP的替代服务出现
但是它们依然有着较为一致的安全性缺陷
明文口令在当前的交换环境的
数据监听技术下显得安全性过低
信息机密性低
用户密码可以通过穷举法破解
对通讯双方也没有可靠的认证措施
由于FTP协议的特点
互联网上任意用户均可登录FTP服务
若有非法用户获取了用户名和密码
他可以向FTP服务器发送大量垃圾文件
导致FTP服务器瘫痪
严重影响了正常工作
针对这些待改进的问题
近年来也出现了一些
不需要对FTP协议自身
做完全更改的协议扩展模块
能够良好的完成兼容性和功能扩展
FTP SSL/TLS协议就是其中一种方式
这是一种用于HTTP协议加密的安全传输协议
SSL工作于TCP协议的
传输层(TCP层)和应用程序之间
作为一个中间层
应用程序只需要采用SSL提供的
一套SSL套接字API
来替换标准的Socket套接字
就可以把程序转换为SSL化的
安全网络程序
在传输过程中
将 SSL协议实现数据机密性和完整性的保证
-1.1 计算机网络的发展历程及其在信息时代中的作用
-1.2 互联网的组成
--互联网的组成
-1.3 电路交换和分组交换
-1.4 计算机网络的性能
--计算机网络的性能
-1.5 计算机网络体系结构和层次划分
-第一章
-2.1 数据通信系统模型
--数据通信系统模型
-2.2 导向型传输媒体
--导向型传输媒体
-2.3 光导纤维
--光导纤维
-2.4 非导向型传输媒体
--非导向型传输媒体
-2.5 信道的极限容量
--信道的极限容量
-2.6 信道复用技术
--信道复用技术
-2.7 ADSL
--ADSL
-第二章
-3.1 数据链路层的三个基本问题
-3.2 CSMA/CD协议
-3.3 虚拟局域网
--虚拟局域网
-3.4 扩展的以太网
--扩展的以太网
-3.5 高速以太网
--高速以太网
-第三章
-4.1 分类的IP地址-划分子网
-4.2 无分类编址-构造超网
-4.3 ICMP协议
--ICMP协议
-4.4 路由器结构
--路由器结构
-4.5 RIP协议
--RIP协议
-4.6 IP多播
--IP多播
-第四章
-5.1 用户数据报协议UDP
-5.2 TCP报文段首部格式
-5.3 可靠传输工作原理
--可靠传输工作原理
-5.4 字节为单位的滑动窗口实现
-第五章
-6.1 网络应用层
--网络应用层
-6.2 DNS
--DNS
-6.3 FTP
--FTP
-6.4 HTTP
--HTTP
-6.5 P2P
--P2P
-6.6 计算机网络面临的安全性威胁
-6.7 防火墙
--防火墙
--第六章
-7.1 交换机基本配置
--交换机基本配置
-7.2 路由器基本配置
--路由器基本配置
-7.3 交换机端口隔离
--交换机端口隔离
-7.4 跨交换机实现相同VLAN通信
-7.5 动态路由
--动态路由
-7.6 静态路由
--静态路由