如HTTP创造一次又一次的连接每个数据通过网络传输,WEB插座是静态的,连接将被一次开始做,并会留到传输完成......但如果网络插座是静态的,那么为什么的等待时间不同的每个数据包.. ???
在延迟测试应用程序我创建显示我不同的时间滞后。那么什么是Web插座的优势是静态连接或如果这是在网络插座一个常见的问题?
我是否需要创建一个缓冲区来控制数据流,因为在数据传输是连续..? 确实,当数据传输是连续的latecy增加?
如HTTP创造一次又一次的连接每个数据通过网络传输,WEB插座是静态的,连接将被一次开始做,并会留到传输完成......但如果网络插座是静态的,那么为什么的等待时间不同的每个数据包.. ???
在延迟测试应用程序我创建显示我不同的时间滞后。那么什么是Web插座的优势是静态连接或如果这是在网络插座一个常见的问题?
我是否需要创建一个缓冲区来控制数据流,因为在数据传输是连续..? 确实,当数据传输是连续的latecy增加?
没有开销,建立与静态打开网络插座一个新的连接(如连接已经打开,并建立),但是当你让世界各地的请求半路上,网络需要一些时间,因此有延迟,当你”再次聊到世界各地的服务器一半。
这就是网络是如何工作的。
你从你自己的局域网上的服务器和更远的服务器获取(网络拓扑结构而言)的多个路由器的每个数据包多少过境,更多的总延迟附近有一家立即响应。 正如你在前面与该主题相关的问题的见证下,当你做一个tracert
从您所在位置到您的服务器的位置,你看到的每个数据包必须通过不同的跳了很多。 这些跳跃的每一个时间全部加起来和繁忙的路由器也可以各增加一个小的延迟,如果他们不立即处理您的包。
当你发送一个数据包,并获得响应之间的延迟仅仅是2倍的数据包传输时间加上无论你的服务器会响应或许加一个小小的开销TCP(因为它是一个可靠的协议,它需要确认)。 除非你选择一个服务器更接近或以某种方式影响数据包到更快的路线的路线不能加快过境时间(这多半是不是你的控制之下,一旦你选择了本地ISP使用)。
缓冲对你到底有没有量减少往返时间到您的服务器。
此外,在网络上更啤酒花有您的客户端和服务器,更多的变化你可能会从一个时刻在途时间下一之间。 该数据包经过路由器的每个人及其行驶都有自己的负荷,拥堵等环节中的每一个......随时间变化。 有可能是最小的过境时间,你永远不会看到(它决不会比X更快),但许多因素都会影响随着时间的推移,使其比某些时刻慢。 甚至有可能是一个ISP采取路由器脱机维护这使其它路由器处理的流量或跳下去这么一个临时之间的路由上更多的负荷的情况下,但速度较慢和更长的路线在其位置取代。 有数以百计的事情,可能会导致过境时间变化每时每刻。 在一般情况下,它不会相差很多从一分钟到下一个,但可以很容易地通过在一天或更长的时间较长而有所不同。
你还没有说,这是相关还是没有,但是当你有等待时间较长,在给定的往返,或者性能是非常重要的,你需要做的是尽量减少您等待的往返次数。 你可以做一对夫妇的方法:
1.不要序列小块的数据。 发送大量数据的最慢的方法是发送数据的一点点,等待响应,派出多一点的数据,等待响应,等等......如果你有100个字节的发送和你发送的数据1字节每次打开一个时间等待响应和您的往返时间为X,你必须100X为您的总时间发送的所有数据。 相反,收集了一块较大的数据,并在发送一次这一切。 如果您发送的100个字节一下子,你可能只需要X,而不是100X的总延迟。
2.如果可以,发送数据并行。 作为发送数据,等待响应,发送更多的数据,等待响应的图案上面所解释的是慢时的往返时间差。 如果您的数据可以被标记,使其自成一体,那么有时你可以无需等待在前响应发送并行数据。 在上面的例子,这是非常慢的送1个字节,等待响应,发送下一个字节,等待响应。 但是,如果你发送一个字节,然后发送下一个字节,然后发送下一个字节,然后一些时间以后你处理所有的反应,你会得到很多很多更好的吞吐量。 很显然,如果你已经有了100个字节的数据,你可能也只是发送一次全部,但如果数据到达的实时性,你可能只想把它发送出去,因为它到达,而不是等待在前响应。 很明显,你是否能做到这一点完全取决于您的客户端和服务器之间的数据协议。
3.在同一时间发送更大的数据块。 如果可以的话,一次发送的数据的更大的块。 根据您的应用程序,它可能会或可能没有什么意义,其实等待数据发送之前积累的,但如果你已经有了100个字节的数据,然后再尝试一次,而发送这一切比更小的碎片将其发送。