FTP协议--工作模式和传输模式:
FTP的工作模式
主动与被动是相对于服务器来说的。
主动模式,服务器用20号端口主动连接客户端的某端口建立数据连接
被动模式,服务器某端口被客户端的某端口建立数据连接
1. 主动模式(active,一般预设的模式)
Ø FTP客户端开启一个随机的TCP端口呼叫FTP服务器的21号端口,请求建立连接
Ø FTP服务器和客户端间进行三次握手后建立连接成功(命令通道的连接建立)
Ø 当客户端和服务器之间需要传输数据的时候,客户端通过命令通道用Port Command命令告诉服务器,客户端用另一个TCP端口做数据通道。
Ø 服务器用20号端口和刚才客户端所告知的端口建立数据连接。连接方向:服务器--à客户端(本过程中,服务器的TCP分组中会携带一个SYN flag,然后客户端返回一个ACK flag的分组,并完成另一次三次握手。此时数据数据连接完成)
Ø 开始数据传输
2. 被动模式(passive模式)
Ø FTP客户端开启一个随机选择的TCP端口呼叫FTP服务器的21号端口,建立连接。完成命令通道的建立。
Ø 当客户端和服务器间需要传输数据的时候,客户端通过命令通道发送PASV command命令给server,要求进入passive传输模式。
Ø 服务器挑一个TCP端口,并用命令通道告诉客户端。
Ø 客户端用另一个TCP端口呼叫刚才服务器端所告知的TCP端口来建立数据通道。此时客户端TCP分组中带有SYN flag。服务器确认后回送一个ACK分组。并完成三次握手。完成数据通道的建立。
Ø 开始数据传送。
FTP的传输模式
ASCII传输模式和二进制传输模式的区别在于:
l ASCII传输模式会自动调整文件的内容以便把文件解释成对方计算机存储文件文件的格式。
l 二进制传输模式,数据中保存文件的位序。原始数据和复制的数据逐位对应。而对数据内容本身不进行判断。
当用户正在传输的文件包含的不是文本文件。而是数据库,字处理文件或压缩文件又或者字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符时就需要用二进制传输模式。
不管是用ASCII或者二进制传输模式,传输给对方的数据文件都有可能出问题。
eg:比如Linux下的可执行文件不管按照什么方式传输到Windows系统中,都无法执行。