快好知 kuaihz订阅看过栏目

 

系统中某个特殊事件发生之前允许经过的特定时间周期。例如,以拨号方式进入ISP时,通讯软件设计成等待一个特定的秒数,若在规定的时间内得不到响应,建立起正确的握手信号,则此次拨号被挂断。另外,当要求进入一个 Web页面时,如果在规定的时间内不能得到满足,浏览器将会显示 “连接超时”的信息。如果计算机没有这样的功能,它会在一直等待一个事件的发生,等到用户也不耐烦的时候,它还在等,那就不合适了。

定义

超时即当网络设备想在某个特定时间内从另一网络设备上接 收信息,但是失败的情况。其结果常为:重新传输信息或解除两设备间的会话。若服务器超时但尚未掉线,则表明你的网络连接处于超微弱链接状态。此时,你可查看Modem的温度是否过高。若不是很高,则可能你的网线有问题。再者,这时恰逢上网高峰期

超时消息是指消息发送者发出消息给接收者并按指定时间等待。如果接收者无法在指定时间内接收消息。则发送者放弃这个消息。如右图所示是超时消息的例子。

伪超时

在很多情况下,即使没有出现数据丢失也可能引发重传。这种不必要的重传称为伪重传(spurious retransmission),其主要造成原因是伪超时(spurious timeout),即过早判定超时,其他因素如包失序、包重复,或ACK丢失也可能导致该现象。在实际RTT显著增长,超过当前RTO时,可能出现伪超时。在下层协议性能变化较大的环境中(如无线环境),这种情况出现得比较多。

为处理伪超时问题提出了许多方法。这些方法通常包含检测(detection)算法与响应(response)算法。检测算法用于判断某个超时或基于计时器的重传是否真实,一旦认定出现伪超时则执行响应算法,用于撤销或减轻该超时带来的影响。

重组超时

一个数据报的任何一个分片首先到达时,IP层就得启动一个计时器。如果不这样做的话,不能到达的分片(如右图所示)可能会最终导致接收方用尽缓存,留下一种攻击机会。清单中的例子由一个特殊程序产生,该程序构造一个ICMPv4回显请求报文,并且以一定延迟只发 送这个消息的前面两个分片,然后不再发送任何其他分片。右图显示了回复(为了简洁,某些行已被整理)。

这里我们看到第一个分片(的时间和序列空间)被发送,总长度是400。第二个分片20s后被发送,但最后一个分片一直没被发送。接收到第一个分片30s后,目标机器回复一个ICMPv4超时(代码1)消息,告诉发送方数据报已丢失,包括第一个分片的拷贝。一般的超时时间是30s或60s。正如我们所见,收到任何一个分片时计时器就开始计时,且收到新的分片也不会被重置。因此,计时器给出了同一数据报分片之间可被分隔的最大间隔时间的限度。

超时处理

数据报套接字通信是不可靠的,发送的数据有可能丢失。如果数据报丢失,则消息不会到达服务,服务也不会返回回答。在这种情况下,程序将在recvfrom0调用无限地等待下去。另外,对于流套接字的连接和I/O也存在无限阻塞的情况。为了避免这种无限的等待,我们需要对涉及套接字的I/O操作设置超时处理,当时间片耗尽时要么重新发送消息,要么关闭套接字并退出执行。有三种设置超时的方法:

(1)调用alrm()使得系统在指定的时间片到期时生成SIGALRM信号。

(2)用select()建立一时间片等待套接字就绪。

(3)使用SO—RCVTIMEO和SO—SNDTIMEO套接字选项,这两个选项自动对套接字的读写设置超时处理。

这三种方法既可用于输入也可用于输出。

投稿
非常不爽,删了吧! 相关词条:其他 服务器超时 网络连接 上网高峰期