前言:最近看了大量经典著作《HTTP权威指南》。对于这类手册和指导书,我们通常想到的是枯燥的应用解读和性能指标解读......这使得磁头的数量很大。但是,这本书让我觉得读起来“神清气爽”。一方面,创作者用通俗易懂的语言和许多传说让我们很容易知道为什么。另一方面,应该是我对网络编程技术的兴趣和这本书的内容有非常大的突破点。我今天要讲的,也是与我自身利益相关的HTTP协议的TCP相关部分,是对书中第四章——“连接管理方法”部分内容的总结。
当创建一个新的TCP连接时,TCP的两端将交换一系列IP数据包。如果连接只是用来传输少量的数据信息,那么创建连接的整个过程将会极大地危及HTTP的性能。
一般在HTTP事务管理中不容易交换太多的数据信息,SYN/SYNACK2两次握手会造成准确的时间延迟。但是第三波——TCP连接ACK包一般足够大,可以安装所有HTTP要求的消息格式(当代的TCPtcp协议允许手机客户端在这个确认包中传输数据),很多HTTP网络服务器响应消息格式都可以放入一个IP包中。
可以看出,小型HTTP事务管理很可能会在TCP连接创建上花费多达50%的时间。所以在实践中,人们往往有重视HTTP连接的要求。
TCP的延迟时间确认系统大家都知道互联网本身无法保证数据包的可靠传输,所以TCP完成了自己的确认系统来保证数据传输的成功。在这种确认系统中,使用确认消息格式。由于确认消息格式不大,所以将TCP即将返回的确认信息内容与输出数据信息包结合起来,更能充分利用网络。为了提高确认消息格式找到同方向传输的数据包的概率,很多TCPtcp协议都完成了一个“延时确认”的优化算法——在一个特殊的对话时间内(一般为100-200ms)将输出确认放入缓冲区,以找到可以方便发送的输出数据包,否则在这个时间段后将独立推送确认数据。
但是HTTP有一个双刃剑的要求——回复个人行为降低了方便信息内容的可能性。当期望反向发送回分组时,必须没有这么多。一般来说,延迟时间确认优化算法会引入非常大的延迟,因此我们应该根据相对计算机 *** 作系统的差异来调整或禁止使用延迟时间确认优化算法。
注意:在对TCPTCPTCP的所有主要参数进行更改之前,您必须对您所做的事情保持清醒的认识。在TCP中引入这种优化算法的目的是为了防止设计糟糕的应用软件破坏互联网。因此,在改变这种配置之后,应该确保应用软件不容易引起这种优化算法应该防止的问题。为了更好更强地维护互联网,TCP慢启动限制了一个TCP节点在任何时候可以传输的数据包数量。传输数据时,TCP最初会限制传输速率(传输数据包的数量)。如果数据信息传输成功,它会随着时间的变化而增加传输速率(传输包的数量)。如果某个HTTP事务管理有很多数据信息要推送,不可能一次推送所有的数据包。确保通过慢速启动来缓慢启动延迟对话框。
由于这种拥塞控制特性,新连接的传输速率将比已经交换了一定量数据信息的连接的传输速率慢。在那种情况下,我们必须从重视HTTP连接(长期连接)的角度考虑提高传输性能。
如果TCP连接持续推送大量包含少量数据信息的数据包,互联网的性能会严重下降。Nagle优化算法就是在推送一个包之前,尽量把大量的TCP数据信息推在一起(比如以太网接口上的段的大小是1500字节,否则会缓存文件,否则Nagle优化算法会在所有其他包都确认后才允许推送非全规格包),从而提高上网的效率。
Nagle优化算法会导致几种HTTP性能问题。比如一个很小的HTTP消息格式很可能覆盖不了一个包,所以需要缓存文件等待,或者等待确认包的到来(确认包的延迟大概在100-200ms)。
所以HTTP应用软件往往在自己的tcp协议中设置主要参数tcp_nodelay,禁止使用Nagle优化算法来提高性能。
TIME_WAIT累积和端口号耗尽TIME_WAIT的表达式请参考我的博客《网络编程解说:TCP的TIME_WAIT状态对服务器开发的影响?以前将TIME_WAIT时间设置为2分钟是因为早期无线路由器的响应速度还比较慢,但是现在高速无线路由器的应用大大削弱了这个问题。因此,对于web服务器来说,可以根据计算机 *** 作系统的设置来减少TIME_WAIT情况的延迟时间,否则,如果网络服务器出现大量TIME_WAIT情况,将会极大地危及网络服务器的性能。端口号耗尽是少数手机客户端服务器对web服务器进行标准检测时容易出现的问题,与TCP连接四联有关。 参考书籍:
HTTP的权威指南
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)