精华内容
下载资源
问答
  • 在利用虚拟机VMware部署Linux操作系统时我遇到了VMware Workstation Server服务启动一段时间后自动异常关闭的现象,版本为vmware9和15,linux版本为centos6.4,操作系统版本号为1903 如图: 反复手工启动都会异常...

    VMware Workstation Server服务的失效将无法访问远程服务,对于利用CRT等工具远程访问的需求来说非常致命。在利用虚拟机VMware部署Linux操作系统时我遇到了VMware Workstation Server服务启动一段时间后自动异常关闭的现象,版本为vmware9和15,linux版本为centos6.4,操作系统版本号为1903 如图:

    反复手工启动都会异常关闭,查看系统日志:


    错误信息并不明确,尝试了很多网上提到的一些方法,比如:
    1.重装vmware,重装linux
    2.C:\ProgramData\VMware\hostd找到dataStores.xml 删除
    3.C:\ProgramData\VMware\hostd全部删除
    发现没什么用,最后自己尝试了一些解决方法搞定了,这里总结下,
    1>首先将软件卸载干净,先启动安装程序(内含卸载选项),将软件移除,然后删除注册表关于vmware的选项
    在这里插入图片描述
    2>最后删除将残留的C:\ProgramData\VMware删除,ProgramData为隐藏文件夹。到此软件基本卸载干净。
    在这里插入图片描述
    3>用360杀毒,杀掉一些可能会影响服务的程序,然后修复系统漏洞!!再重启计算机。
    在这里插入图片描述
    4>最后再重装Vmware,注意安装过程中选择客制化安装,其中有个vmware需要占用的端口,要确保该端口没有其它进程占用。
    重装完成后到此VMware Workstation Server服务稳定下来没有再出现异常闪退现象,第一次在csdn写文章,有些地方难免疏忽遗漏,大家可以多多指正,希望这篇文章能帮到大家。

    展开全文
  • 问题描述: 服务器系统为Windows Server 2003 Enterprise Edition sp2,对文件夹开启共享,可过不了几分钟,别人就访问不了我的共享,我的共享也自动消失了,点右键也没...打开服务列表,看到server、computer brows

    问题描述:

    服务器系统为Windows Server 2003 Enterprise Edition sp2,对文件夹开启共享,可过不了几分钟,别人就访问不了我的共享,我的共享也自动消失了,点右键也没了共享的选项。打开服务列表,看到server、computer browser和workstation三个服务都没有开启,而它们的类型都是自动启动的。然后手工将这三个服务启动成功,但是仍然不能访问。重启服务器后,可是过不了多久共享服务又会关闭了。

    解决方法:

    需要安装Windows Server 2003服务器共享服务自动关闭的补丁。

    下载地址:http://download.microsoft.com/download/8/4/4/84403755-aa0a-41ba-bded-7cbbc8dc218c/WindowsServer2003-KB958644-x86-CHS.exe
    文件名: WindowsServer2003-KB958644-x86-CHS.exe
    版本: 958644
    安全公告: MS08-067
    知识库 (KB) 文章: KB958644
    发布日期: 2008/10/22
    语言: 简体中文
    下载大小: 688 KB
    补丁概述:现已确认有一个安全问题,未通过身份验证的远程攻击者可能会利用此问题危及基于 Microsoft Windows 的系统的安全并获取对该系统的控制权。您可以通过安装本 Microsoft 更新程序来保护计算机不受侵害。安装本更新程序后,可能必须重新启动计算机。这是一个远程代码执行漏洞。成功利用此漏洞的攻击者会完全远程控制受影响的系统。在基于 Microsoft Windows 2000、Windows XP、和 Windows Server 2003 的系统上,攻击者会在未经身份验证的情况下通过 RPC 利用此漏洞,并可运行任意代码。如果利用漏洞的尝试失败,这还会导致 Svchost.exe 的崩溃。如果 Svchost.exe 发生崩溃,将影响到服务器服务。该服务器服务提供通过网络共享的文件、打印和命名管道。
    展开全文
  • 首先介绍一下TCP连接建立与关闭过程中的状态。TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用、特定数据包以及超时等,具体状态如下所示:CLOSED:初始状态,表示没有任何连接。LISTEN:Server端的...

    首先介绍一下TCP连接建立与关闭过程中的状态。TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用、特定数据包以及超时等,具体状态如下所示:

    • CLOSED:初始状态,表示没有任何连接。
    • LISTEN:Server端的某个Socket正在监听来自远方的TCP端口的连接请求。
    • SYN_SENT:发送连接请求后等待确认信息。当客户端Socket进行Connect连接时,会首先发送SYN包,随即进入SYN_SENT状态,然后等待Server端发送三次握手中的第2个包。
    • SYN_RECEIVED:收到一个连接请求后回送确认信息和对等的连接请求,然后等待确认信息。通常是建立TCP连接的三次握手过程中的一个中间状态,表示Server端的Socket接收到来自Client的SYN包,并作出回应。
    • ESTABLISHED:表示连接已经建立,可以进行数据传输。
    • FIN_WAIT_1:主动关闭连接的一方等待对方返回ACK包。若Socket在ESTABLISHED状态下主动关闭连接并向对方发送FIN包(表示己方不再有数据需要发送),则进入FIN_WAIT_1状态,等待对方返回ACK包,此后还能读取数据,但不能发送数据。在正常情况下,无论对方处于何种状态,都应该马上返回ACK包,所以FIN_WAIT_1状态一般很难见到。
    • FIN_WAIT_2:主动关闭连接的一方收到对方返回的ACK包后,等待对方发送FIN包。处于FIN_WAIT_1状态下的Socket收到了对方返回的ACK包后,便进入FIN_WAIT_2状态。由于FIN_WAIT_2状态下的Socket需要等待对方发送的FIN包,所有常常可以看到。若在FIN_WAIT_1状态下收到对方发送的同时带有FIN和ACK的包时,则直接进入TIME_WAIT状态,无须经过FIN_WAIT_2状态。
    • TIME_WAIT:主动关闭连接的一方收到对方发送的FIN包后返回ACK包(表示对方也不再有数据需要发送,此后不能再读取或发送数据),然后等待足够长的时间(2MSL)以确保对方接收到ACK包(考虑到丢失ACK包的可能和迷路重复数据包的影响),最后回到CLOSED状态,释放网络资源。
    • CLOSE_WAIT:表示被动关闭连接的一方在等待关闭连接。当收到对方发送的FIN包后(表示对方不再有数据需要发送),相应的返回ACK包,然后进入CLOSE_WAIT状态。在该状态下,若己方还有数据未发送,则可以继续向对方进行发送,但不能再读取数据,直到数据发送完毕。
    • LAST_ACK:被动关闭连接的一方在CLOSE_WAIT状态下完成数据的发送后便可向对方发送FIN包(表示己方不再有数据需要发送),然后等待对方返回ACK包。收到ACK包后便回到CLOSED状态,释放网络资源。
    • CLOSING:比较罕见的例外状态。正常情况下,发送FIN包后应该先收到(或同时收到)对方的ACK包,再收到对方的FIN包,而CLOSING状态表示发送FIN包后并没有收到对方的ACK包,却已收到了对方的FIN包。有两种情况可能导致这种状态:其一,如果双方几乎在同时关闭连接,那么就可能出现双方同时发送FIN包的情况;其二,如果ACK包丢失而对方的FIN包很快发出,也会出现FIN先于ACK到达。

      TCP连接的状态转换如下图所示

    TCP连接的状态转换图

    TCP连接的状态转换图

    2. TCP连接的关闭方式

      建立TCP连接需要三次握手,而关闭连接则需要四次握手,并且分为主动关闭和被动关闭。这是由于TCP连接是全双工的,我关了你的连接,并不等于你关了我的连接,因此双方都必须单独进行关闭。当一方完成它的数据发送任务后可以发送FIN包来终止这个方向的连接,表明自己不再有数据需要发送;收到FIN包的那一方虽然不能再读取数据,但仍能发送数据。以Client主动关闭连接为例:

    1. Client向Server发送FIN包,表示Client主动关闭连接,然后进入FIN_WAIT_1状态,等待Server返回ACK包。此后Client不能再向Server发送数据,但能读取数据。
    2. Server收到FIN包后向Client发送ACK包,然后进入CLOSE_WAIT状态,此后Server不能再读取数据,但可以继续向Client发送数据。Client收到Server返回的ACK包后进入FIN_WAIT_2状态,等待Server发送FIN包。
    3. Server完成数据的发送后,将FIN包发送给Client,然后进入LAST_ACK状态,等待Client返回ACK包,此后Server既不能读取数据,也不能发送数据。
    4. Client收到FIN包后向Server发送ACK包,然后进入TIME_WAIT状态,接着等待足够长的时间(2MSL)以确保Server接收到ACK包,最后回到CLOSED状态,释放网络资源。Server收到Client返回的ACK包后便回到CLOSED状态,释放网络资源。

      TCP连接的建立到关闭,需要经历以下状态迁移(假定Client发起连接,并主动关闭连接):

    • Client

      CLOSED -> SYN_SENT -> ESTABLISHED -> FIN_WAIT_1 -> FIN_WAIT_2 -> TIME_WAIT -> CLOSED

    • Server

      CLODES -> LISTEN -> SYN_RECEIVED -> ESTABLISHED -> CLOSE_WAIT -> LAST_ACK -> CLOSED

    3. 对Server与Client的影响

      在详细了解TCP连接的状态和关闭方式后,我们会发现TIME_WAIT状态是一个坑爹的存在!主动关闭连接的一方在发送最后一个ACK包后,无论对方是否收到都会进入TIME_WAIT状态,等待2MSL的时间,然后才能释放网络资源。MSL就是Maximum Segment Lifetime(数据包的最大生命周期),是一个数据包能在互联网上生存的最长时间,若超过这个时间则该数据包将会消失在网络中。操作系统通常会将2MSL设为4分钟,最低不少于30秒,因而TIME_WAIT状态一般维持在30秒至4分钟。这个是TCP/IP协议必不可少的,是TCP/IP设计者设计的,也就是无法解决的。TIME_WAIT状态的存在主要有两个原因:

    1. 可靠地实现TCP全双工连接的终止。在关TCP闭连接时,最后的ACK包是由主动关闭方发出的,如果这个ACK包丢失,则被动关闭方将重发FIN包,因此主动方必须维护状态信息,以允许它重发这个ACK包。如果不维持这个状态信息,那么主动方将回到CLOSED状态,并对被动方重发的FIN包响应RST包,而被动关闭方将此包解释成一个错误(在Java中会抛出connection reset的SocketException)。因而,要实现TCP全双工连接的正常终止,必须能够处理四次握手协议中任意一个包丢失的情况,主动关闭方必须维持状态信息进入TIME_WAIT状态。
    2. 确保迷路重复数据包在网络中消失,防止上一次连接中的包迷路后重新出现,影响新连接。TCP数据包可能由于路由器异常而迷路,在迷路期间,数据包发送方可能因超时而重发这个包,迷路的数据包在路由器恢复后也会被送到目的地,这个迷路的数据包就称为Lost Duplicate。在关闭一个TCP连接后,如果马上使用相同的IP地址和端口建立新的TCP连接,那么有可能出现前一个连接的迷路重复数据包在前一个连接关闭后再次出现,影响新建立的连接。为了避免这一情况,TCP协议不允许使用处于TIME_WAIT状态的连接的IP和端口启动一个新连接,只有经过2MSL的时间,确保上一次连接中所有的迷路重复数据包都已消失在网络中,才能安全地建立新连接。

      对于Client而言,每个连接都需要占用一个端口,而系统允许的可用端口数不足65000个(这也是在TCP参数优化后才能达到)。因此,如果Client发起过多的连接并主动关闭(假设没有重用端口或者连接多个Server),就会有大量的连接在关闭后处于TIME_WAIT状态,等待2MSL的时间后才能释放网络资源(包括端口),于是Client会由于缺少可用端口而无法新建连接。

      对Server而言(特别是处理高并发短连接的Server),Server端与Client建立的连接是使用同一个端口的,即监听的端口,每个连接通过一个五元组区分,包括源IP地址、源端口、传输层协议号(协议类型)、目的IP地址、目的端口,因而在理论上,Server不受系统端口数的限制。但是,Server对每个端口上的连接数是有限制的,它要使用哈希表记录端口上的每个连接,并受到文件描述符的最大打开数的限制。所以,如果Server主动关闭连接,同样会有大量的连接在关闭后处于TIME_WAIT状态,等待2MSL的时间后才能释放网络资源(包括哈希表上的连接记录和文件描述符),于是Server会由于达到哈希表和文件描述符的限制而无法接受新连接,造成性能的急剧下滑,性能曲线会持续产生严重的波动。对于这种情况,有三种应对方式:

    1. 试图让Client主动关闭连接,由于每个Client的并发量都比较低,因而不会产生性能瓶颈。
    2. 优化Server的系统TCP参数,使其网络资源的最大值、消耗速度和恢复速度达到平衡。
    3. 改写TCP协议,重新实现底层代码,不过该方式难度很大,而且系统的稳定性和安全性可能受到影响。

    TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的。

    建立一个 TCP 连接

      TCP使用三次握手 ( three-way handshake ) 协议来建立连接,图 3-10 描述了三次握手的报文序列。这三次握手为:

    • 请求端(通常称为客户)发送一个 SYN 报文段( SYN 为 1 )指明客户打算连接的服务器的端口,以及初始顺序号( ISN )。

    • 服务器发回包含服务器的初始顺序号的 SYN 报文段( SYN 为 1 )作为应答。同时,将确认号设置为客户的 ISN 加 1 以对客户的 SYN 报文段进行确认( ACK 也为 1 )。

    • 客户必须将确认号设置为服务器的 ISN 加 1 以对服务器的 SYN 报文段进行确认( ACK 为 1 ),该报文通知目的主机双方已完成连接建立。

      发送第一个 SYN 的一端将执行主动打开( active open ),接收这个 SYN 并发回下一个 SYN 的另一端执行被动打开( passive open )。另外, TCP 的握手协议被精心设计为可以处理同时打开( simultaneous open ),对于同时打开它仅建立一条连接而不是两条连接。因此,连接可以由任一方或双方发起,一旦连接建立,数据就可以双向对等地流动,而没有所谓的主从关系。

      三次握手协议是连接两端正确同步的充要条件。因为 TCP 建立在不可靠的分组传输服务之上,报文可能丢失、延迟、重复和乱序,因此协议必须使用超时和重传机制。如果重传的连接请求和原先的连接请求在连接正在建立时到达,或者当一个连接已经建立、使用和结束之后,某个延迟的连接请求才到达,就会出现问题。采用三次握手协议(加上这样的规则:在连接建立之后 TCP 就不再理睬又一次的连接请求)就可以解决这些问题。

      三次握手协议可以完成两个重要功能:它确保连接双方做好传输准备,并使双方统一了初始顺序号。初始顺序号是在握手期间传输顺序号并获得确认:当一端为建立连接而发送它的 SYN 时,它为连接选择一个初始顺序号;每个报文段都包括了顺序号字段和确认号字段,这使得两台机器仅仅使用三个握手报文就能协商好各自的数据流的顺序号。一般来说, ISN 随时间而变化,因此每个连接都将具有不同的 ISN 。

    关闭一个 TCP 连接

      TCP 连接建立起来后,就可以在两个方向传送数据流。当 TCP 的应用进程再没有数据需要发送时,就发关闭命令。 TCP 通过发送控制位 FIN=1 的数据片来关闭本方数据流,但还可以继续接收数据,直到对方关闭那个方向的数据流,连接就关闭。

      TCP 协议使用修改的三次握手协议来关闭连接, 如图 3-11 所示,即终止一个连接要经过 4 次握手。这是因为 TCP 的半关闭( half-close )造成的。由于一个 TCP 连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。关闭的原则就是当一方完成它的数据发送任务后就能发送一个 FIN 来终止这个方向连接。当一端收到一个 FIN ,它必须通知应用层另一端已经终止了那个方向的数据传送。发送 FIN 通常是应用层进行关闭的结果。

      从一方的 TCP 来说,连接的关闭有三种情况:

      • 本方启动关闭

      收到本方应用进程的关闭命令后, TCP 在发送完尚未处理的报文段后,发 FIN = 1 的报文段给对方,且 TCP 不再受理本方应用进程的数据发送。在 FIN 以前发送的数据字节,包括 FIN ,都需要对方确认,否则要重传。注意 FIN 也占一个顺序号。一旦收到对方对 FIN 的确认以及对方的 FIN 报文段,本方 TCP 就对该 FIN 进行确认,在等待一段时间,然后关闭连接。等待是为了防止本方的确认报文丢失,避免对方的重传报文干扰新的连接。

      • 对方启动关闭

      当 TCP 收到对方发来的 FIN 报文时,发 ACK 确认此 FIN 报文,并通知应用进程连接正在关闭。应用进程将以关闭命令响 应。 TCP 在发送完尚未处理的报文段后,发一个 FIN 报文给对方 TCP ,然后等待对方对 FIN 的确认,收到确认后关闭连接。若对方的确认未及时到达,在等待一段时间后也关闭连接。

      • 双方同时启动关闭

      连接双方的应用进程同时发关闭命令,则双方 TCP 在发送完尚未处理的报文段后,发送 FIN 报文。各方 TCP 在 FIN 前所发报文都得到确认后,发 ACK 确认它收到的 FIN 。各方在收到对方对 FIN 的确认后,同样等待一段时间再关闭连接。这称之为同时关闭( simultaneous close )。

    TCP 状态机

      TCP 协议的操作可以使用一个具有 11 种状态的有限状态机( Finite State Machine )来表示,图 3-12 描述了 TCP 的有限状态机,图中的圆角矩形表示状态,箭头表示状态之间的转换,各状态的描述如表 3-2 所示。图中用粗线表示客户端主动和被动的服务器端建立连接的正常过程:客户端的状态变迁用粗实线,服务器端的状态变迁用粗虚线。细线用于不常见的序列,如复位、同时打开、同时关闭等。图中的每条状态变换线上均标有“事件/动作”:事件是指用户执行了系统调用( CONNECT 、 LISTEN 、 SEND 或 CLOSE )、收到一个报文段( SYN 、 FIN 、 ACK 或 RST )、或者是出现了超过两倍最大的分组生命期的情况;动作是指发送一个报文段( SYN 、 FIN 或 ACK )或什么也没有(用“-”表示)。

    图 3-12 TCP 有限状态机。粗实线表示客户的正常路径; 粗虚线表示服务器的正常路径;细线表示不常见的事件。

      每个连接均开始于 CLOSED 状态。当一方执行了被动的连接原语( LISTEN )或主动的连接原语( CONNECT )时,它便会脱离 CLOSED 状态。如果此时另一方执行了相对应的连接原语,连接便建立了,并且状态变为 ESTABLISHED 。任何一方均可以首先请求释放连接,当连接被释放后,状态又回到了 CLOSED 。

    表 3-2 TCP 状态表

    1. 正常状态转换

      我们用图 3-13 来显示在正常的 TCP 连接的建立与终止过程中,客户与服务器所经历的不同状态。读者可以对照图 3-12 来阅读,使用图 3-12 的状态图来跟踪图 3-13 的状态变化过程,以便明白每个状态的变化:

    • 服务器端首先执行 LISTEN 原语进入被动打开状态( LISTEN ),等待客户端连接;

    • 当客户端的一个应用程序发出 CONNECT 命令后,本地的 TCP 实体为其创建一个连接记录并标记为 SYN SENT 状态,然后给服务器发送一个 SYN 报文段;

    • 服务器收到一个 SYN 报文段,其 TCP 实体给客户端发送确认 ACK 报文段同时发送一个 SYN 信号,进入 SYN RCVD 状态;

    • 客户端收到 SYN + ACK 报文段,其 TCP 实体给服务器端发送出三次握手的最后一个 ACK 报文段,并转换为 ESTABLISHED 状态;

    • 服务器端收到确认的 ACK 报文段,完成了三次握手,于是也进入 ESTABLISHED 状态。

       在此状态下,双方可以自由传输数据。当一个应用程序完成数据传输任务后,它需要关闭 TCP 连接。假设仍由客户端发起主动关闭连接。

    • 客户端执行 CLOSE 原语,本地的 TCP 实体发送一个 FIN 报文段并等待响应的确认(进入状态 FIN WAIT 1 );

    • 服务器收到一个 FIN 报文段,它确认客户端的请求发回一个 ACK 报文段,进入 CLOSE WAIT 状态;

    • 客户端收到确认 ACK 报文段,就转移到 FIN WAIT 2 状态,此时连接在一个方向上就断开了;

    • 服务器端应用得到通告后,也执行 CLOSE 原语关闭另一个方向的连接,其本地 TCP 实体向客户端发送一个 FIN 报文段,并进入 LAST ACK 状态,等待最后一个 ACK 确认报文段;

    • 客户端收到 FIN 报文段并确认,进入 TIMED WAIT 状态,此时双方连接均已经断开,但 TCP 要等待一个 2 倍报文段最大生存时间 MSL ( Maximum Segment Lifetime ),确保该连接的所有分组全部消失,以防止出现确认丢失的情况。当定时器超时后, TCP 删除该连接记录,返回到初始状态( CLOSED )。

    • 服务器收到最后一个确认 ACK 报文段,其 TCP 实体便释放该连接,并删除连接记录,返回到初始状态( CLOSED )。

    2. 同时打开:

      尽管发生的可能性极小,两个应用程序同时彼此执行主动打开的情况还是可能的。每一方必须发送一个 SYN ,且这些 SYN 必须传递给对方。这需要每一方使用一个对方周知的端口作为本地端口。例如,主机 A 中的一个应用程序使用本地端口 7777 ,并与主机 B 的端口 8888 执行主动打开。主机 B 中的应用程序则使用本地端口 8888 ,并与主机 A 的端口 7777 执行主动打开。 TCP 是特意设计为了可以处理同时打开,对于同时打开它仅建立一条连接而不是两条连接(其他的协议族,最突出的是 OSI 传输层,在这种情况下将建立两条连接而不是一条连接)。

      当出现同时打开的情况时,状态变迁与图 3-13 所示的不同。两端几乎在同时发送 SYN ,并进入 SYN_SENT 状态。当每一端收到 SYN 时,状态变为 SYN_RCVD ,同时它们都再发 SYN 并对收到的 SYN 进行确认。当双方都收到 SYN 及相应的 ACK 时,状态都变迁为 ESTABLISHED 。图 3-14 显示了这些状态变迁过程。

    图 3-14 同时打开期间报文段的交换

     

      一个同时打开的连接需要交换 4 个报文段,比正常的三次握手多一个。此外,要注意的是我们没有将任何一端称为客户或服务器,因为每一端既是客户又是服务器。

    3. 同时关闭:

      正常情况下都是由一方(通常但不总是客户方)发送第一个 FIN 执行主动关闭,但双方都执行主动关闭也是可能的, TCP 协议也允许这样的同时关闭。

      在图 3-12 中,当两端应用层同时发出关闭命令时,两端均从 ESTABLISHED 变为 FIN_WAIT_1 。这将导致双方各发送一个 FIN ,两个 FIN 经过网络传送后分别到达另一端。收到 FIN 后,状态由 FIN_WAIT_1 变迁到 CLOSING ,并发送最后的 ACK 。当收到最后的 ACK 时,状态变化为 TIME_WAIT 。图 3-15 总结了这些状态的变化,从图中可以看出同时关闭与正常关闭使用的报文段交换数目相同。

    图 3-15 同时关闭期间的报文段交换

    4. 其它情况:

    • 服务方打开:从 LISTEN 到 SYN_SENT 的变迁是正确的,它由服务器端主动发出 SYN 报文段,但 Berkeley 版的 TCP 软件并不支持它。

    • 重置连接(复位):只有当 SYN_RCVD 状态是从 LISTEN 状态(正常情况)进入,而不是从 SYN_SENT 状态(同时打开)进入时,从 SYN_RCVD 回到 LISTEN 的状态变迁才是有效的。这意味着如果我们执行被动打开(进入 LISTEN ),收到一个 SYN ,发送一个带 ACK 的 SYN (进入 SYN_RCVD ),然后收到一个 RST ,而不是一个 ACK ,便又回到 LISTEN 状态并等待另一个连接请求的到来。

    • 快速关闭:在主动关闭后的 FIN_WAIT_1 状态,如果收到的报文段不仅是 ACK ,而且还包括对方的 FIN 信号,则直接进入 TIME_WAIT 状态,给对方发送 ACK 报文段,然后等待超时。

      另外, TIME_WAIT 状态的等待超时需要再详细解释一下,因为它直接影响到网络应用程序的表现。

      每个具体 TCP 实现必须选择一个报文段最大生存时间 MSL ( Maximum Segment Lifetime ),它是任何报文段被丢弃前在网络内的最长时间。我们知道这个时间是有限的,因为 TCP 报文段以 IP 数据报在网络内传输,而 IP 数据报有限制其生存时间的 TTL 字段。 RFC 793 [Postel 1981c ] 指出 MSL 为 2 分钟。然而,实现中的常用值是 30 秒、 1 分钟、或 2 分钟。

      对一个具体实现所给定的 MSL 值,处理的原则是:当 TCP 执行一个主动关闭,并发回最后一个 ACK ,该连接必须在 TIME_WAIT 状态停留的时间为 2 倍的 MSL ,因此 TIME_WAIT 状态也称为 2MSL 等待状态。在这段时间内,如果最后的 ACK 丢失,对方会超时并重发最后的 FIN ,这样本地 TCP 可以再次发送 ACK 报文段(这也是它唯一可以发送的报文,并重置 2MSL 定时器)。

      这种 2MSL 等待的另一个结果是这个 TCP 连接在 2MSL 等待期间,定义这个连接的套接字( socket ,客户的 IP 地址和端口号,服务器的 IP 地址和端口号)不能再被使用。这个连接只能在 2MSL 结束后才能再被使用。在连接处于 2MSL 等待时,任何迟到的报文段将被丢弃。

      我们假设图 3-12 中是客户执行主动关闭并进入 TIME_WAIT ,这是正常的情况,因为服务器通常执行被动关闭,不会进入 TIME_WAIT 状态。这暗示如果我们终止一个客户程序,并立即重新启动这个客户程序,则这个新客户程序将不能重用相同的本地端口。这不会带来什么问题,因为客户使用本地端口,而并不关心这个端口号是什么。然而,对于服务器,情况就有所不同,因为服务器使用周知端口。如果我们终止一个已经建立连接的服务器程序,并试图立即重新启动这个服务器程序,服务器程序将不能把它的这个周知端口赋值给它的端点,因为那个端口是处于 2MSL 连接的一部分。在重新启动服务器程序前,它需要在 1~4 分钟。这就是很多网络服务器程序被杀死后不能够马上重新启动的原因(错误提示为“ Address already in use ”)。

    http://hi.baidu.com/psorqkxcsfbbghd/item/70f3bd91943b9248f14215cd

    ------------------------------------------------------------------------------------------------------------------------------------

    TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。 简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例: 1.服务器读通道关闭 2.客户机写通道关闭 3.客户机读通道关闭 4.服务器写通道关闭 关闭行为是在发起方数据发送完毕之后,给对方发出一个FIN(finish)数据段。直到接收到对方发送的FIN,且对方收到了接收确认ACK之后,双方的数据通信完全结束,过程中每次接收都需要返回确认数据段ACK。 详细过程: 第一阶段 客户机发送完数据之后,向服务器发送一个FIN数据段,序列号为i; 1.服务器收到FIN(i)后,返回确认段ACK,序列号为i+1关闭服务器读通道; 2.客户机收到ACK(i+1)后,关闭客户机写通道; (此时,客户机仍能通过读通道读取服务器的数据,服务器仍能通过写通道写数据) 第二阶段 服务器发送完数据之后,向客户机发送一个FIN数据段,序列号为j; 3.客户机收到FIN(j)后,返回确认段ACK,序列号为j+1关闭客户机读通道; 4.服务器收到ACK(j+1)后,关闭服务器写通道。 这是标准的TCP关闭两个阶段,服务器和客户机都可以发起关闭,完全对称。 FIN标识是通过发送最后一块数据时设置的,标准的例子中,服务器还在发送数据,所以要等到发送完的时候,设置FIN(此时可称为TCP连接处于半关闭状态,因为数据仍可从被动关闭一方向主动关闭方传送)。如果在服务器收到FIN(i)时,已经没有数据需要发送,可以在返回ACK(i+1)的时候就设置FIN(j)标识,这样就相当于可以合并第二步和第三步。

     
    • 服务器端首先执行 LISTEN 原语进入被动打开状态( LISTEN ),等待客户端连接;

    • 当客户端的一个应用程序发出 CONNECT 命令后,本地的 TCP 实体为其创建一个连接记录并标记为 SYN SENT 状态,然后给服务器发送一个 SYN 报文段;

    • 服务器收到一个 SYN 报文段,其 TCP 实体给客户端发送确认 ACK 报文段同时发送一个 SYN 信号,进入 SYN RCVD 状态;

    • 客户端收到 SYN + ACK 报文段,其 TCP 实体给服务器端发送出三次握手的最后一个 ACK 报文段,并转换为 ESTABLISHED 状态;

    • 服务器端收到确认的 ACK 报文段,完成了三次握手,于是也进入 ESTABLISHED 状态。

       在此状态下,双方可以自由传输数据。当一个应用程序完成数据传输任务后,它需要关闭 TCP 连接。假设仍由客户端发起主动关闭连接。

    • 客户端执行 CLOSE 原语,本地的 TCP 实体发送一个 FIN 报文段并等待响应的确认(进入状态 FIN WAIT 1 );

    • 服务器收到一个 FIN 报文段,它确认客户端的请求发回一个 ACK 报文段,进入 CLOSE WAIT 状态;

    • 客户端收到确认 ACK 报文段,就转移到 FIN WAIT 2 状态,此时连接在一个方向上就断开了;

    • 服务器端应用得到通告后,也执行 CLOSE 原语关闭另一个方向的连接,其本地 TCP 实体向客户端发送一个 FIN 报文段,并进入 LAST ACK 状态,等待最后一个 ACK 确认报文段;

    • 客户端收到 FIN 报文段并确认,进入 TIMED WAIT 状态,此时双方连接均已经断开,但 TCP 要等待一个 2 倍报文段最大生存时间 MSL ( Maximum Segment Lifetime ),确保该连接的所有分组全部消失,以防止出现确认丢失的情况。当定时器超时后, TCP 删除该连接记录,返回到初始状态( CLOSED )。

    • 服务器收到最后一个确认 ACK 报文段,其 TCP 实体便释放该连接,并删除连接记录,返回到初始状态( CLOSED )。

    TCP连接关闭过程zz

    http://blog.sina.com.cn/s/blog_3c6889fe0100u7l2.html

     

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

    TCP连接断开过程中TIME_WAIT的一些知识点

    2010-01-09

     

    TCP连接断开过程的四步骤:

     

     

     

     

     

    (1)MSL -- Maximum Segment Lifetime, TCP分节报文最长生命周期,也就是IP数据包能在网络上存活的最长时间。任何一个系统中的TCP实现都必须设定一个MSL值。RFC 1122中的建议值是120秒。BSDLinux一般使用的是30秒 --- CentOS 5.3中是30秒。

     

    TIME_WAIT状态要维持2MSL秒,也就是说一般TIME_WAIT状态的延时在1~4分钟。

     

    (2)TIME_WAIT状态存在的两个理由

    (a) 可靠地实现TCP全双工链接的终止。

    主要是考虑第四步的ACK丢失的情况。若ACK丢失,则被动关闭端再次发送FIN,即第三步。ACK在网络上经过MSL秒后未到达主动关闭端,在网络上消逝了。被动关闭端在2MSL时间内未收到ACK回应,则重传FIN

     

    (b) 允许旧的重复分节在网络中消逝。

    这个很好理解,旧的TCP连接介于A[ip1 :  port1]B[ip2 : port2]之间。某TCP报文S在被A发送后正在网络中前往B。若在次过程该TCP连接关闭了,且在S到达B之前,AB之间又被重新利用,重新建立起一条TCP链接。然后报文S打到B,以为是原先TCP连接的B端。这样问题就出现了。

     

    现在设置了TIME_WAIT状态的维持时间为2MSL,则可保证在某一方向上的TCP报文(旧的)MSL秒后消逝;且另一个方向上的应答报文也在MSL秒后消逝。这样就可以保证属于旧连接的报文在新连接建立之前已经在网络上消逝了,即旧报文不会影响新连接。

     

     

    (3)内核微调

    修改/etc/sysctl,然后运行 # sysctl -p使之立即生效。

     

    #重用time_wait的值

    net.ipv4.tcp_tw_reuse = 1

    net.ipv4.tcp_tw_recycle = 1

     

    net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120# 2分钟

    net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60

    net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

     

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    http://networking.ctocio.com.cn/231/12474731.shtml 

    TCP三次连接和四次断开

      随后在网上搜了下,说这个版本不适合千兆网卡,sniffer4.7SP5才支持.又下载了4.7SP5.还是装不上.老提示注册没成功.换了SN也不管用.郁闷啊...

      最后就装了ethereal和 OmniPeek .ethereal可以分析本机的协议.OmniPeek 抓取局域网的包.

      看看我用ethereal抓到图...

    http://cisco.chinaitlab.com/UploadFiles_6776/201211/20121122162326157.jpg

      在TCP断开的过程中会有四个状态变化过程,如下图所示:

    http://cisco.chinaitlab.com/UploadFiles_6776/201211/20121122162327373.jpg

      在连接撤销过程中,有如下过程:

      1.HOST1上的应用程序关闭己方的连接导致TCP发送一个FIN消息给HOST2.

      2.HOST2发送一个确认消息给HOST1,并且HOST2把FIN作为EOF递交给HOST2上的应用程序.

      3.一段时间过后,HOST2上的应用程序关闭它那边的连接,引发一个FIN消息给HOST1.

      4.HOST1给HOST2发送一个确认消息,然后HOST2关闭连接并释放资源,然而,HOST1却没有关闭连接,而是进入了TIME_WAIT状态,并为两个最大段生存时间(2MSL)保留在此状态.

      为什么需要TIME_WAIT?

      1.因为在第四步的时候,HOST1发送的ACK可能丢失并导致HOST2重新发送FIN消息,TIME_WAIT维护连接状态.

      如果执行主动关闭的一方HOST1 不进入到TIME_WAIT状态就关闭连接那会发生什么呢?当重传的FIN消息到达时,因为TCP已经不再有连接的信息了,所以就用RST(重新启动)消息应答,导致HOST2进入错误的状态而不是有序终止状态,如果发送最后ACK消息的一方处于TIME_WAIT状态并仍然记录着连接的信息,它就可以正确的响应对等方HOST2的FIN消息了.

      2.TIME_WAIT为连接中“离群的段”提供从网络中消失的时间.

      考虑一下,如果延迟或者重传段在连接关闭后到达时会发生什么呢?通常情况下,因为TCP仅仅丢弃该数据并响应RST消息,所以这不会造成任何问题.当RST消息到达发出延时段的主机时,因为该主机也没有记录连接的任何信息,所以它也丢弃该段.然而,如果两个相同主机之间又建立了一个具有相同端口号的新连接,那么离群的段就可能被看成是新连接的,如果离群的段中数据的任何序列号恰恰在新连接的当前接收窗口中,数据就会被重新接收,其结果就是破坏新连接.


    展开全文
  • 关闭sqlserver的远程连接功能

    千次阅读 2013-10-06 10:51:15
    看到一堆TIME_WAIT的连接,都是往1433端口的连接,显然这是恶意的连接,所以为了服务器数据库的安全,必要关闭数据库的远程连接功能,而且数据库和网站刚好部署在同一台机器上,所以不影响使用。 关闭远程...

    今天在服务器上查看网络的连接情况(netstat /ano),看到一堆TIME_WAIT的连接,都是往1433端口的连接,显然这是恶意的连接,所以为了服务器数据库的安全,有必要关闭数据库的远程连接功能,而且数据库和网站刚好部署在同一台机器上,所以不影响使用。


    关闭远程连接的方法如下:

    1>.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器”
    2>.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”
    3>.然后单击展开“database engine"(数据库引擎), 选中“远程连接”,在右边选中“仅本地连接”。
    单击“应用”,您会看到下消息: “直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回
    4>.展开“数据库引擎”, 选中“服务”,在右边单击“停止”,等到 MSSQLSERVER 服务停止,然后单击“启动”,重新启动MSSQLSERVER 服务。


    关闭远程连接之后,可能需要更改Web.config的数据库连接参数,其中connectionString中的server,需要更改为.(一个点),而127.0.0.1或者localhost或者IP地址都不行。

    展开全文
  • sql server 服务作用简介

    千次阅读 2016-02-04 09:43:01
    2、SQL Server代理(MSSQLSERVER)是代理服务,比如你一些自动运行的,定时作业,或者是一些维护计划,比如定时备份数据库等操作,那么就要打开,否则,就不会备份数据库了。 SQL Server Reporting Services ...
  • 详解windows server 2008服务器的服务

    千次阅读 2014-02-03 19:38:46
    Microsoft Windows Server 2008代表了下一代Windows Server。使用Windows Server 继承“Longhorn Server”的Server2008 2008,IT专业人员对其服务器和网络基础结构的控制能力更强,从而可...下面讲解相关服务。 A
  • SQL Server链接服务器 Linked Server

    千次阅读 2009-09-14 13:45:00
    使用方法Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->exec sp_addlinkedserver @server,@srvproduct,@provider,@datasrc,@location,@provstr,@cat
  • Server2012操作系统关闭SMB

    千次阅读 2020-07-23 23:44:14
    DWORD: 0 = Disabled REG_DWORD: 1 = Enabled Default: 1 = Enabled (No registry key is created) 备注: 启用或禁用windows server2012中的smb v2时,也会启用或禁用smb v3.之所以发生此行为,是因为这些协议共享...
  • 因为一旦重启,业务必定受到影响,需要停业务,并且还要做安全防范预案。 在windows服务器维护管理中,时候为了排查其他故障问题,偶尔需要打开windows的telnet功能,这里就需要 注意,在windows功能发生变更时...
  • SQLServer服务器和客户端的配置

    千次阅读 2012-09-20 17:42:51
    SQL Server是一种具有客户机/服务器体系结构的关系型数据库管理系统,它由一些具有数据存储检索功能的客户端组件和服务器组件组成。这种体系结构的好处是把所有的工作负荷分散到在服务器和客户端上运行的各项任务中...
  • window 10 下为SQL Server 关闭防火墙

    千次阅读 2016-07-19 16:00:23
    "jdbc:sqlserver://192.168.0.113:1433;databaseName=ShDB" ; String userName= "test" ; String userPsd= "123456789" ; Connection dbCon ; Statement st ; ResultSet rs ; try { Class .forName ...
  • sysadmin 可以在 SQL Server 中执行任何活动。 serveradmin 可以设置服务器范围的配置选项,关闭服务器。 setupadmin 可以管理链接服务器和启动过程。 securityadmin 可以管理登录和 CREATE DATABASE 权限,还...
  • Server2003上部署Excel服务器

    千次阅读 2010-05-03 16:13:00
    Server2003上部署Excel服务器 1、 安装Server 2003的SP2补丁; 2、 安装IIS(Server 2003和XP操作系统,默认是不安装IIS的); 3、 安装.net framework1.1和.net framwork2.0(Server 2003默认安装.net framework1.1); ...
  • 在powershell中运行$PSVersionTable,PSVersion是2.0及以上,可以用powershell来关闭SMBv1。 对于Windows Server 2008 R2 禁用(需重启): Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControl...
  • 一定要公网IP。 下面我们依次介绍如何来解决这三个最常见的连接错误。 第一个错误"SQL Server 不存在或访问被拒绝...一般说来,以下几种可能性: 1、SQL Server名称或IP地址拼写误; 2、服务器端网络配置误;
  • SQL Server配置管理器中服务介绍

    千次阅读 2017-07-24 16:22:16
    SQL Server代理(MSSQLSERVER)是代理服务,比如你一些自动运行的,定时作业,或者是一些维护计划,比如定时备份数据库等操作,那么就要打开,否则,就不会备份数据库了。 SQL Server Reporting Services ...
  • 生产打包按照增量替换server.xml 操作过程很顺利,重启后其他tomcat均正常启动。唯独其中某个 报错如下: Disk store path can’t be created: …/hello/cache 根据经验看出是路径异常,要么路径不存在,要么没有...
  • 提示sql_server_服务不存在或拒绝访问

    千次阅读 2011-11-22 17:04:56
    提示sql server 服务不存在或拒绝访问 一般说来,以下几种可能性: SQL Server名称或IP地址拼写误 服务器端网络配置误 客户端网络配置误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致...
  • CentOS 7.4下Tiger VNC Server服务配置

    千次阅读 2018-06-08 15:26:55
    yum -y install tigervnc tigervnc-server tigervnc-server-module 二、复制配置模板文件为vncserver@:1.service cp/lib/systemd/system/vncserver@.service/lib/systemd/system/vncserver@:1.service 三、修.....
  • Window Server2003配置smtp服务器

    万次阅读 2011-09-24 09:33:26
    (2)连接超时:在指定时间内,如果某一连接始终处于非活动状态,则Microsoft SMTP Service将关闭此连接。对于传入和传出连接,默认时间为10分钟。也可以修改为其他时间。如果你的网络是一个低速网络,可以设置一个...
  • Windows Server 2012 R2搭建DNS服务器

    千次阅读 2019-12-10 18:00:18
    操作如下: 1、将IP地址的DNS设置成本机的IP地址,如图: 2、进入服务器管理,如下: 选择【添加角色和功能】: 下一步: ...安装完成之后,关闭: ...关闭电脑更新操作,不然会影响服务器的稳定性。 ...
  • 在Windows Server 2008中集成了一个非常高效的备份工具——Windows Server Backup,利用该工具管理员可非常自由地对服务器上的数据实施备份,而且可以创建备份计划实现自动备份。在本文中,笔者将就使用Windows ...
  • 服务器server.cfg文件详解,配合L6D使用,未知或错误参数说明希望XD补全和修正  该设置文件针对用srcds.exe开服务器并使用LXD插件的情况,用MAP方式开图会无效 文件内容如下: //服务器名称(使用中文服务器名,...
  • 什么是SQL SERVER实例

    万次阅读 2009-05-25 20:18:00
    SQL SERVER实例-------------------------------------------------------------------------------------- 所谓“SQL实例”,实际上就是SQL服务器引擎,每个SQL Server数据库引擎实例各一套不为其他实例共享的...
  • FileZilla Server下载安装完成后,安装过程不写说明了,网上一抓一大把,直接从配置开始记录。 1、创建服务器 ² Password:栏位中输入本服务器Filezilla服务的密码, ² 端口号:输入管理端口号(管理端口为...
  • 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计算机上工作的其他用户)的情况。 还可以在与登录用户或默认计算机帐户不同的特定用户帐户的安全性上下文中...
  • 第一步:在服务器上通过“开始->程序->管理工具->终端服务配置”启动配置窗口。(如图2)图2 点击看大图 第二步:在终端服务配置窗口中找到“连接”下的RDP,在其上点鼠标右键选择“属性” 第三步:在RDP-TCP...
  • 场景 SQL Server 右键属性,设置服务器属性最大服务器内存为 100MB,设置太小造成SQL 服务无法启动。 ...解决方案查了些资料,都是从cmd启动个最精简版的sqlserver服务,然后在上面执行设置代...
  • 一般而言,以下两种连接 SQL Server 的方式,一是利用 SQL Server 自带的客户端工具,如企业管理器、查询分析器、事务探查器等;二是利用用户自己开发的客户端程序,如ASP 脚本、VB程序等,客户端程序中又是利用 ...
  • 简介 系统服务的处理不同于其他设置,因为所有服务的漏洞、对策及潜在影响在本质上都一样。第一次安装 Microsoft Windows Server 2003 时,系统将在启动时创建并配置默认服务。有些服务在组织环境中并不需要,但仍...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 200,534
精华内容 80,213
关键字:

关闭server服务有什么影响