imap服务器已关闭连接的连接关闭是什么情况?

服务器会话连接自动关闭怎么办?_Web服务器_绿色第一站
&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&
&&>>&&>>&&>>&&>>&
服务器会话连接自动关闭怎么办?
作者:佚名
文章来源:Onegreen.Net
浏览次数:(载入中...)
更新时间:
  在网络维护工作量相对较大的单位,网络管理员往往很少有时间呆在服务器现场,为了让服务器系统时刻高效地运行,他们不得不利用远程桌面功能来对服务器系统进行远程管理与维护。在对服务器远程管理的时候,每一个连接桌面都是以独立的进程单独在后台运行的,按理来说在对应桌面中打开的每一个会话窗口也应该都以后台运行方式存在的,这种独立的运行方式往往能够帮助我们更灵活地管理好服务器系统。然而在实际远程管理服务器的过程中,我们时常会遭遇通过远程桌面打开的会话窗口会跟随远程桌面连接的关闭而同步关闭的现象,这种现象往往会给我们管理服务器带来不小的麻烦。那么为什么通过远程桌面打开的会话窗口会跟随远程桌面连接的关闭而同步关闭呢?为了更好地回答这个问题,本文现在特意从实战出发,来为各位贡献一则这方面的故障事例以及具体的应对过程,希望能使各位朋友收到一点启发!
  事例回放
  某一局域网络拓扑结构非常简单,普通工作站与Windows 2003 server服务器主机同时连接到一台路由交换机中,并且它们处于同一个子网中;为了便于普通工作站能够高效、快捷地访问服务器,网络管理员在该路由交换机中没有封锁端口,也没有启用其他限制策略,因此网络管理员可以很顺利地在任意一台普通工作站中利用远程桌面功能来管理服务器系统。为了保护服务器系统的安全,网络管理员平时常常通过远程桌面连接到服务器系统,并在服务器系统中下载、***一些补丁程序或其他安全工具,确保这些程序能够正常运行。
  不过,最近通过远程桌面功能对服务器系统进行远程管理时,网络管理员却遇到了一点小麻烦,每次都能通过远程桌面功能与服务器系统顺利地连接,并且能够在对应的系统桌面中运行一些安全保护程序,可是当网络管理员关闭远程桌面连接时,那些通过该连接启动运行的一些应用程序也同步关闭了,而没有独立以后台形式运行。从理论上来说,在对服务器主机进行远程控制时,网络管理员只要不对服务器系统执行系统注销操作或重新启动操作,只是简单地单击远程桌面连接窗口右上角处的关闭按钮时,那些通过远程控制方式启动运行的应用程序还应该继续以后台方式运行,并不会跟随远程桌面连接窗口的关闭而同步关闭。
  问题解析
  那么为什么通过远程桌面打开的会话窗口会跟随远程桌面连接的关闭而同步关闭呢?针对该问题,笔者特意在Internet网络中经过反复的调查与搜索,结果发现这种现象是由于服务器系统的某些参数设置不当造成的,我们只要重新调整某些参数后就能有效避免这种现象的发生。现在,本文就将该故障的详细排除过程贡献出来:
  首先看看在远程登录服务器系统时使用的帐号设置是否正确,如果登录帐号的权限不够或者属性参数设置不当的话,那么就容易出现远程会话同步关闭的现象。假设网络管理员以系统管理员帐号“administrator”来远程登录服务器系统的,在检查“administrator”帐号的设置正确性时,我们可以在服务器系统中用鼠标右键单击桌面上的“我的电脑”图标,从弹出的右键菜单中执行“管理”命令,打开服务器系统的计算机管理界面。在该界面的左侧显示区域,用鼠标依次展开“系统工具”/“本地用户和用户组”/“用户”分支选项,在对应“用户”分支选项的右侧显示区域中,选中目标登录帐号“administrator”,并用鼠标右键单击该帐号,再执行右键菜单中的“属性”命令,打开对应帐号的属性设置界面;单击该设置界面中的“会话”选项卡,在对应的选项设置界面中我们会看到“空闲会话限制”、“活动会话限制”、“结束已断开的会话”、“当达到会话极限或连接中断时如何操作的设置”等几个参数(如图1所示)。
  其中“空闲会话限制”选项是在服务器系统中没有进行任何操作时所要设置的一项参数,“活动会话限制”选项是用来限制服务器系统中活动连接持续使用时间的一种参数,“结束已断开的会话”选项是用来强行关闭某个会话连接的一项参数。为了避免远程会话同步关闭现象的发生,我们必须在这里将上面的各项参数全部修改为“从不”,以确保远程会话不会被服务器系统强行关闭。
  其次检查服务器系统中的终端服务配置参数是否正确,如果终端服务器模式设置不当的话,也可能引起远程会话同步关闭的现象。打开服务器系统的“开始”菜单,从中依次选择“程序”/“管理工具”/“终端服务配置”选项,进入终端服务配置界面,选中该界面左侧显示区域的“服务器设[1]&&
关 键 字:
相关文章:
上一篇文章: 下一篇文章:
子栏目导航
&&&&&&&&&&&&&用户端关闭socket时如何告知服务器关闭对应的socket? - ITeye问答
用户端随时都有可能关闭程序,我想着服务器在干自己的事的同时得时刻***有没有某个socket需要被关掉...但是如何实现乜?用户和服务器直接要做的正经事就是传输信息啊什么的...如果是用户在关闭前发来某个信息的话...在那么多信息中怎么找到呢?
另:有什么方法可以在程序里当某个条件成立时,自动关闭一个已经打开的JFrame么?
问题补充:deepfuture 写道一般是用来判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。用于检测TCP的异常断开。一般是用来判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。用于检测TCP的异常断开。基本原因是服务器端不能有效的判断客户端是否在线也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况.所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。
...
客户端每隔一段时间发一个包,使用TCP的,用send发,使用UDP的,用sendto发,服务器收到后,就知道当前客户端还处于“活着”的状态,否则,如果隔一定时间未收到这样的包,则服务器认为客户端已经断开,进行相应的客户端断开逻辑处理。
谢谢~我大概明白这个意思...不过服务器端怎么区分心跳包和普通信息包啊?
问题补充:deepfuture 写道
1.心跳包实际就是一个自定义的协议包,主要用于判断对方机器是否还在连接。你可以自己定义协议的格式。
2.既然是协议,当然需要c/s双方都支持
3.如果你仅仅是为了判断服务器是否在线,用tcp协议自带的心跳包就可以了,用setsockopt设置socket的SO_KEEPALIVE属性,可以设置发包时间间隔
...
由上面的包格式我们不难得到局域网中其它用户的QQ号,将网卡设为混合模式,***所有的数据,对UDP包进行分析,若端口在之间,我们认定为QQ数据包.
不...不是很明白...setsockopt是java里带的么?你说的太原理了...我不明白的是,用户要发送通信数据还要发心跳包...服务器端怎么判断呢?难道要没接受一次都看看他是不是心跳包?
问题补充:deepfuture 写道就是客户端定时给服务器送一个TCP包或UDP包,包的内容你自己去定义,然后服务器会读取这些包,在指定时间内读取不到某个客户端发的心跳包,就认为这个客户端已经死掉,服务器可以在读不到这个客户端的心跳包情况下,给这个客户端发一个询问,要求客户端主动发送心跳包,然后客户端如果仍没有收到,服务器端可以在最多发N个询问仍没有收到客户端的心跳包的情况下,将连接关闭
这个原理我已经明白了,就是如何实现的问题...但是这个心跳包和普通数据包都是混在一起的嘛,难道要我收到的每一个包都检测一下是不是心跳包么?效率有点低...
采纳的***
难道要我收到的每一个包都检测一下是不是心跳包么?效率有点低...
不低呀,嘿嘿,TCP/IP详解看过吗,上面有说过类似的把数据包和控制包分开的方法。。。。。。。。,你不想检测将心跳包设为UDP方式,这样所有从UDP那个端口过来的都视为心跳包了。。。
就是服务器端在指定时间间隔内必须收到客户端的心跳包,如果是TCP方式发送心跳包,你可以考虑为心跳包单独建一个连接,如果不想单独建立连接,就必须为心跳包单独定义一个特别的格式,使它和数据包区别开来。如果是UDP方式,则不用单独建立连接。
客户端在指定时间间隔内必须发送心跳包,另外,客户端在收到服务器端的询问后,必须发送心跳包
就是客户端定时给服务器送一个TCP包或UDP包,包的内容你自己去定义,然后服务器会读取这些包,在指定时间内读取不到某个客户端发的心跳包,就认为这个客户端已经死掉,服务器可以在读不到这个客户端的心跳包情况下,给这个客户端发一个询问,要求客户端主动发送心跳包,然后客户端如果仍没有收到,服务器端可以在最多发N个询问仍没有收到客户端的心跳包的情况下,将连接关闭
1.心跳包实际就是一个自定义的协议包,主要用于判断对方机器是否还在连接。你可以自己定义协议的格式。
2.既然是协议,当然需要c/s双方都支持
3.如果你仅仅是为了判断服务器是否在线,用tcp协议自带的心跳包就可以了,用setsockopt设置socket的SO_KEEPALIVE属性,可以设置发包时间间隔
心跳包可以是特定格式的,与所有格式不同,你完全可以自己定义一个心跳包的格式
看看QQ是如何定义的
QQ客户端向服务器发送的UDP包
11 5B 00 C6 38 A9 23 D8 07 B9 04 9A BA 69 A6&& ..[..8.# ......i.
AF 1E 60 BD B0 AE 56 DC FE F9 03&&&&&&&&&&&&&& ...`...V ....
11 5B 00 C6 38 A9 D0 82 3C AD 82 7F FA 54 A9&& ..[..8.. .&.. .T.
12 86 0B D4 89 50 51 12 69 C9 48 34 94 24 BB&& X.....PQ .i.H4.$.
15 A6 B1 79 2C FC 03
在中国协议分析网上看到了相关的解释
02 开始是payload
11 5B 是qq版本号
00 C6就是心跳信息命令代码,(这个数据是会变化的)
38 A9 是令牌号(也会变化,好像是每次加1,有待考证)
23 D8 07 B9是QQ号
由上面的包格式我们不难得到局域网中其它用户的QQ号,将网卡设为混合模式,***所有的数据,对UDP包进行分析,若端口在之间,我们认定为QQ数据包.
一般是用来判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。用于检测TCP的异常断开。一般是用来判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。用于检测TCP的异常断开。基本原因是服务器端不能有效的判断客户端是否在线也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况.所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。比如有些通信软件长时间不使用,要想知道它的状态是在线还是离线就需要心跳包,定时发包收包。发包方:可以是客户也可以是服务端,看哪边实现方便合理。一般是客户端。服务器也可以定时轮询发心跳下去。一般来说,出于效率的考虑,是由客户端主动向服务器端发包,而不是
就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。&&
& 就是定时发送给对方一个数据包,告诉对方自己还在维护对话,同时获得返回的数据,判断对方是否在会话中。
客户端每隔一段时间发一个包,使用TCP的,用send发,使用UDP的,用sendto发,服务器收到后,就知道当前客户端还处于“活着”的状态,否则,如果隔一定时间未收到这样的包,则服务器认为客户端已经断开,进行相应的客户端断开逻辑处理。
设置超时,过了超时时间客户端没反应就认为它关了
已解决问题
未解决问题

参考资料

 

随机推荐