FTP下载过程中,当文件没有传送完时,什么情况下FTP服务器会提前发送带FIN=1的数据包?

casual12 2006-05-05 10:30:22
我用手机拨号上网,下载一个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?

感谢您的指点。
...全文
773 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
budweiser 2010-06-06
  • 打赏
  • 举报
回复
从你的抓包信息中可以看出, 因为一直无法同步服务器, 导致在 resize window 的时候出现 zerowindow ,从而导致服务器关闭连接
塰贝 2010-06-06
  • 打赏
  • 举报
回复
我抓的包中tcp包的SYN包(1739)远远小于SYN ACK包(3134),这是为什么呢??/请高手帮忙回答下为什么呀??
songbird 2006-05-10
  • 打赏
  • 举报
回复
如果retransmission过多,TCP发送窗口变成0,发送自然就会停止。
casual12 2006-05-05
  • 打赏
  • 举报
回复
在下载过程中,还有重复确认信息(dupack),也就是几个ack消息都是确认同一个数据包(TCP报文段).

4,357

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧