1、为FTP的传输连接打开一个TCP套接字
2、依据获取到的连接回应
如果获取到FTP的积极响应,发送FTP USER 命令:把user的值设成“anonymous”
错误条件:如果接收到FTP的消极响应或是出现超时,把DiagnosticsState设置成Error_InitConnectionFailed 并终止测试。
3、依据接受到的“enter password”请求
发送PASSWORD命令:输入密码作为anoymous 登录的密码
错误条件:如果“enter password”请求失败或是超时,把DiagnosticsState设置成Error_PasswordRequestFailed 并终止测试。
4、依据password回应
如果回应是“successfully logged in”,发送TYPE命令:设置传输模式
错误条件:如果回应不是“successfully logged in”,把DiagnosticsState设置成Error_LoginFailed 并终止测试。
5、依据接收的传输模式回应
如果传输模式设置成功,发送PASV命令来请求把服务器设置成消极模式。
错误条件:如果传输模式回应失败或是超时,把DiagnosticsState设置成Error_NoTransferMode 并终止测试。
6、依据接收到的消极模式回应
如果消极模式回应是成功的,请求建立FTP数据连接
把TCPOpenRequestTime设置为当前时间
错误条件:如果消极模式回应失败或超时,把DiagnosticsState设置成Error_NoPASV 并终止测试。
7、依据接收到的TCP数据连接回应:(FTP数据连接)
如果成功建立,把TCPOpenResponseTime设置成当前时间。
错误条件:如果连接不能打开或超时,把DiagnosticsState设置成Error_Response 并终止测试。
发送SIZE命令:表明将要下载文件的大小
8、依据接收到的SIZE命令回应
用字节记录文件长度,发送RTRV命令请求文件内容
把ROMTime设置成当前时间
错误条件:如果接收到服务器对SIZE命令的无效回应,或是出现超时,把DiagnosticsState设置成Error_IncorrectSize 并终止测试。
9、依据接收到FTP数据连接的第一个单元的数据(例如:文件的第一部分内容)
把BOMTime设置成当前时间
记录以太网在该端口接收到的字节数,该数与后来的TotalBytesReceived的计算有关
错误条件:如果FTP传输超时,把DiagnosticsState设置成Error_Timeout 并终止测试。
10、依据接收到的FTP数据连接的最后的一个数据包
把EOMTime设置成当前时间
记录以太网在该端口接收到的字节数,计算TotalBytesReceived。
11、一旦EOMTime被设置:
把DiagnosticsState设置成Completed
服务器关闭连接,或者出现超时时发送RESET flag。