计算机网络协议分析 第15课 FTP
第11章 文件传输协议FTP与TFTP
11.1 FTP的两个链接
Q1:两个链接的名称和端口号是什么?
答:客户端的命令首先交给用户命令解释器,并通过控制连接传输给服务器命令接口,这时服务器使用21号端口,客户端使用任意端口(20号或者临时端口)。服务器处理完毕后,把应答返回给客户端。文件传输则通过数据连接完成,此时如果是主动模式(PORT)的话,客户端告诉服务器自己打开的端口,服务器从20号端口向客户端的这个端口传输数据;如果是被动模式(PASV)的话,服务器随机打开一个端口,并告诉客户端,然后客户端类似port地向这个端口发送请求并建立连接
Q2:两个连接分别用来传输什么信息?
答:控制连接用于传输命令;数据连接负责传输数据
Q3:FTP Client有哪些?
答:1cmd命令行;2浏览器;3专用FTP客户端软件
FTP控制连接
传输FTP命令(包括:发送用户名、口令、查询目录命令、传输文件命令等)
FTP数据连接(PORT模式)
FTP服务器从控制连接上收到一个传输文件命令后,使用20端口与FTP客户建立一个数据连接
PORT命令:由FTP客户发送,把用于数据连接的临时端口号告诉服务器
例如:FTP客户通过1173端口向服务器的21号端口发出的PORT命令如下:
port 192,168,1,100,4,150
客户端的IP地址为:192.168.1.100
客户端号:4*256+150=1174
FTP数据连接(PASV模式)
FTP服务器从控制连接上收到一个传输文件命令后,使用临时端口与FTP客户建立一个数据连接
PASV命令:由FTP客户发送,要求FTP服务器返回一个端口号
PASV响应:由FTP服务器发送,把用于数据连接的临时端口号告诉客户
FTP客户发出PASV命令后收到的响应如下:
Entering Passive Mode 210,34,80,31,10,20
服务器IP:210.34.80.31
服务器端口号:10*256+20=2580
比较PORT和PASV
- PORT模式
- 客户发送PORT命令
- 服务器主动发起数据连接请求
- PASV模式
- 客户发送PASV命令
- 客户主动发起数据连接请求
问:哪个是PORT?哪个是PASV?
11.2 FTP命令
FTP命令
FTP命令的格式:命令+参数
命令 | 说明 |
---|---|
USER | 用户名 |
PASS | 密码 |
PORT | 主动模式 |
PASV | 被动模式 |
LIST | 列出当前目录下的文件列表 |
CWD | 改变当前目录 |
STOR | 存储文件 |
RETR | 读出文件 |
QUIT | 退出 |
Q1:FTP命令是谁发送的?
答:由客户端于控制连接发送的
Q2:FTP命令在哪条连接上发送的?
答:控制连接
Q3:什么是匿名FTP?
答:即anonymous匿名登录FTP服务器
WINDOWS中的FTP命令
- USER username:用户名
- PASS password:密码
- LS:请求服务器返回当前目录下的文件列表
- QUIT:退出登录
FTP响应
FTP响应的格式:代码+说明文本
代码 | 说明 |
---|---|
220 | 服务就绪(控制连接建立) |
331 | 用户名OK,需要口令 |
230 | 用户登录OK |
200 | 命令OK |
150 | 文件状态OK,数据连接即将打开 |
226 | 关闭数据连接 |
221 | 服务关闭(控制连接关闭) |
FTP命令和响应全过程
- 控制连接建立后,FTP服务器在控制连接上发送220(服务就绪)响应
- FTP客户发送USER命令,服务器响应331(用户名OK,需要口令)
- FTP客户发送PASS命令,服务器响应230(用户登录OK)
- FTP客户发送PORT命令,服务器在端口20与客户建立一条数据连接,响应150(数据连接即将打开)
- FTP客户发送LIST命令,服务器在端口20把数据发送给客户,数据传输完毕后,服务器关闭这条数据连接,并响应226(关闭数据连接)
- FTP客户发送PORT命令,服务器在端口20与客户建立一条数据连接,响应150(数据连接即将打开)
- FTP客户发送RETR命令下载一个文件,打开另一个数据连接来传输这个文件,数据传输完毕后,服务器关闭这条数据连接,并响应226(关闭数据连接)
- FTP客户发送QUIT命令请求关闭控制连接,服务器响应221(服务关闭)
11.3 FTP数据传输方式
ASCII传输方式
如果文件包含的简单ASCII码文本,FTP会自动调整文件内容以适应对方计算机存储文件的格式
Response:150 Opening ASCII mode data connection for /bin/ls.
二进制传输模式
如果文件是程序、数据库或压缩文件等,FTP将按原始文件内容传输
Response:150 Opening BINARY mode data connection for doufu.JPG(1667)
思考:
- 下载两个文件,会打开两个数据连接吗?
会,每下载一个文件就会打开一个数据连接 - 客户发送列出目录命令,服务器发送目录列表时会使用数据连接传输吗?
会,因为会有一条ASCII的响应 - 由谁决定使用PORT模式还是PASV模式
决定权在FTP客户端。客户发送PORT命令,服务器就会建立主动连接
浏览器–工具–Internet选项–高级–“使用被动FTP” - PORT模式和PASV模式如何协商端口号?
PORT模式由客户端主动提出自己的端口;PASV模式由服务器主动提出自己的端口给客户端,客户端再给服务器自己的端口
NAT对FTP的影响
思考:当FTP客户位于内网时PORT模式的有效性
主要见书本第8章Internet地址扩展技术的8.8.4NAT与应用程序间的交互
11.4 简单文件传输协议TFTP
TFTP:基于UDP、69号端口
TFTP定义5种报文:
说明 端口
opcode | 报文类型 | 说明 | 端口 |
---|---|---|---|
1 | Read Request | 读请求包 | 69 |
2 | Write Request | 写请求包 | 69 |
3 | Data | 数据包 | 1025~5000 |
4 | ACK | 确认包 | 1025~5000 |
5 | Error | 错误包 | 1025~5000 |
TFTP工作流程
- 服务端在UDP69端口监听
- 客户端通过UDP发送Write request包给服务端
- 服务端收到Write request请求包后,需要发送ACK包给客户端
- 客户端发送Data数据给服务端
- 服务端接收数据并发送ack包给客户端
下节课为最后一节课,这也是我第一个完结的系列,视情况出一期总复习,有追到现在的同学点赞支持一下哦,Thanks♪(・ω・)ノ