Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2111233
  • 博文数量: 317
  • 博客积分: 5670
  • 博客等级: 大校
  • 技术积分: 3677
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-10 17:51
文章分类

全部博文(317)

文章存档

2016年(2)

2015年(44)

2014年(68)

2013年(42)

2012年(23)

2011年(51)

2010年(67)

2009年(17)

2008年(3)

分类:

2010-07-04 22:24:31

FTP(File Transfer Protocol)是一个基于 TCP 协议的文件传输协议。通常来说,端口号为 20 称为数据端口,端口号为 21 称为命令端口。FTP 支持“主动”和“被动”两种模式。在“主动”模式下,FTP 客户端会向 FTP 服务端发送 PORT 命令;在“被动”模式下,FTP 客户端会向 FTP 服务端发送 PASV 命令。这些命令是在建立 FTP 会话时通过 FTP 命令通道进行发送的。

FTP PORT:
1,客户端发送 TCP SYN 包给服务端 21 控制端口,客户端使用暂时端口作为它的源端口;
2,服务端发送 SYN ACK 包给客户端,源端口为 21,目的端口为客户端上使用的暂时端口;
3,客户端发送 ACK 包给服务端;客户端使用这个连接来发送 FTP 命令,服务端使用这个连接来发送 FTP 应答;
4,当用户发起列表/发送/接受文件的请求,客户端提交 PORT 命令,这个命令包含了一个客户端希望服务端在打开数据连接时候使用的暂时端口;同时也包含了一个客户端或者客户端希望服务端打开目标主机的 IP 地址;
5,服务端发送 SYN 包给客户端的暂时端口,源端口为 20,暂时端口为客户端在 PORT 命令中发送给服务端的暂时端口号;
6,客户端以源端口为暂时端口,目的端口为 20,发送 SYN ACK 包;
7,服务端发送 ACK 包;
8,当数据传输时,客户端数据以 TCP 段形式发送,这些 TCP 段都需要服务端进行 ACK 确认;
9,当传输完成时,客户端以 FIN 命令来结束数据连接,并需要服务端以 ACK 确认,服务端也发送一个 FIN 命令,并同样需要客户端以 ACK 确认。

FTP PASV:
与 FTP PORT 不同,在 FTP PASV 模式下,客户端不会提交 PORT 命令并允许服务端来回连数据端口,而是提交 PASV 命令 。然后,服务端发送 PORT 命令给客户端,这个命令包含了服务端的 IP 地址与在打开数据连接时候使用的暂时端口。然后,客户端发起从本地端口到服务端暂时端口的连接,用以数据传输。

FTP PORT 对 FTP 服务端的管理有利,但对客户端的管理不利。因为服务端要与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。FTP PASV 对 FTP 客户端的管理有利,但对服务端的管理不利。因为客户端要与服务端的高位随机端口建立连接,而这个端口很有可能被服务端的防火墙阻塞掉

阅读(3733) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~