FTP下载过程中,当文件没有传送完时,什么情况下FTP服务器会提前发送带FIN=1的数据包?
我用手机拨号上网,下载一个FTP服务器上的文件,第一次是成功的。第二次下载这个文件的时候,文件没有下载完就终止了。
我用ethereal抓包,分析了一把,发现存在好多tcp retransmission,并且在文件未下载完成时,服务器提前发送了带FIN=1的数据包。
整个下载过程如下:
01 server--〉client:ftp-data syn
02 client--〉server:ftp-data syn ack (ack for 02)
03 server--〉client:ftp-data ack (ack for 03)
04 server--〉client:ftp-data
05 server--〉client:ftp-data
06 client--〉server:ftp-data ack (ack for 04)
07 server--〉client:ftp-data
08 server--〉client:ftp-data
09 server--〉client:tcp retransmission (retransmission for 05)
10 server--〉client:tcp retransmission (retransmission for 05)
11 client--〉server:ftp-data ack (ack for 05)
12 server--〉client:tcp retransmission (retransmission for 07)
13 server--〉client:ftp-data
14 server--〉client:ftp-data
15 client--〉server:ftp-data ack (ack for 07)
16 server--〉client:tcp retransmission (retransmission for 08)
17 server--〉client:ftp-data fin ack (ack for 08)
18 client--〉server:ftp-data ack
19 server--〉client:tcp zerowindow
20 clinet--〉server:Response(close)
21 server--〉client:tcp zerowindow rst
22 client--〉server:ftp ack (ack for 21)
我下载的那个文件远远不止这几个TCP包,怎么就提前结束了呢?
我现在还不大理解FTP协议,有几个疑问如下:
1)是不是因为那几个包老retransmission,导致了FTP服务器认为此次FTP太拥塞,就提前终止了?
2)在FTP服务器这边,会不会有个计数器什么的,如果同一个数据包retransmission多少次后,服务器自动终止此次ftp?
3)还是由于其他原因导致了FTP服务器提前终止此次FTP?
感谢您的指点。