连接终止一个连接要经过4次握手。这由T C P的半关闭(h a l f -c l o s e)造成的。因为一个T C P连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个F I N来终止这个方向连接。当一端收到一个F I N,它必须通知应用层另一端几经终止了那个方向的数据传送。
如果不通过代理,连接的双方如果不主动释放,是不会断掉的;但是通过代理就不同了,现在的代理都有这种机制,如果发现某链路长期没有使用,会自动将链路断开,这样是为了节省资源。不用一个小时,好像是10分钟左右吧。
如果不通过代理,连接的双方如果不主动释放,是不会断掉的;但是通过代理就不同了,现在的代理都有这种机制,如果发现某链路长期没有使用,会自动将链路断开,这样是为了节省资源。不用一个小时,好像是10分钟左右吧。
解决方案 »
- 关于SetItemData和GetItemData的问题
- 链表做的通讯录,在MFC中使用serialize保存成了乱码,求教!
- 怎么学嵌入式
- 100分!请问用程序如何来截获操作系统的读取文件和保存文件的过程,让我可以对数据进行一些检查?
- 哪里有ipl的库下载
- 我接下来学点什么好呢,各位大侠和过来人帮我指导指导,
- VS2010 VC/MFC 网络编程时遇到的问题:rep movsd ;N - move all of our dwords?
- mfc做google map应用的问题
- 如何用扩展的菜单类库把已建好的框架的主菜单修改成xp菜单样式
- vc模拟点击的问题
- 怎样用VC实现这个算法?
- 有什么方法可以实现在文件的中间插入、删除?而不是常规的在文件结尾操作?
1.某个应用进程首先调用close,我们称为主动关闭(active close)。这一端的Tcp于是发送一个FIN分节,表示数据发送完毕。
2.接受到FIN的另一端执行passive close 。这个FIN由TCP确认。他的接受也作为文件结束符传送给接受方应用进程,因为FIN意味着应用进程在此连接上再也接受不到额外数据。
3.一段时间后,接受到文件结束符的应用进程将调用close,关闭他的套接口。这导致他的TCP也发送一个FIN。
4.接收到这个FIN的原发送方TCP对他进行确认。 因为每个方向都需要有一个FIN和ACK,所以一般需要四个分节。有时候,步骤1的FIN随数据一起发送。执行被动关闭的方在步骤2,3时的FIN和ACK也可以合并为一个分节。 当进程终止时,所有打开的描述字都将关闭,此时仍然打开的TCP连接上也会发出一个FIN。通常是由客户执行主动关闭,但HTTP是服务器执行主动关闭