求教,FTP的问题
发布网友
发布时间:2024-10-11 02:55
我来回答
共1个回答
热心网友
时间:2024-11-14 01:06
1 断开连接其实不区分客户端和服务器端,任何一方都可以调用close(or closesocket)之类
的函数开始主动终止一个连接。
2 当调用close函数断开一个连接时,主动断开的一方发送FIN报文给对方。当被动关闭的一方收到FIN报文时,它会发送ACK确认报文。因为TCP是双工的,也就是说,你可以想象一对TCP连接上有两条数据通路。当发送FIN报文时,意思是说,发送FIN的一端就不能发送数据,也就是关闭了其中一条数据通路。被动关闭的一端发送了ACK后,应用层通常就会检测到这个连接即将断开,然后被动断开的应用层调用close关闭连接。
3 一旦当你调用close(or closesocket),这一端就会发送FIN报文。也就是说,现在被动
关闭的一端也发送FIN给主动关闭端。有时候,被动关闭端会将ACK和FIN两个报文合在一起发送。主动关闭端收到FIN后也发送ACK,然后整个连接关闭。
4 你的补充应该是合理的,不过这只是程序的实现方式,你找一个ftp源码看看就知道了。