Http权威指南(TCP连接)

1.HTTP请求的过程

世界上几乎所有的HTTP通信都是由TCP/IP承载的,当发生HTTP请求时,实际上经过了以下几个步骤:

①浏览器从请求的URL中解析主机名

②浏览器查询这个主机名的IP地址

③浏览器获得端口号

④浏览器发起到IP:端口的连接(TCP连接)

⑤浏览器向服务器发送一条请求报文

⑥浏览器从服务器读取响应报文

⑦浏览器关闭连接(TCP连接)

图解:

2.TCP性能聚焦点

2.1TCP连接的握手时延

建立TCP连接甚至是发送任意数据之前,TCP软件之间都会交换一系列的IP分组,对连接参数进行沟通

所以,如果每次都只传输少量的数据,导致最终建立连接的次数增加,那么这些交换过程就会严重降低HTTP性能

2.2TCP段中的标记和首部

每个TCP段中都会至少装载40个字节的标记和首部,那么举个例子:

1000个字节的数据传输量,用10个TCP段装载,那么至少在原数据量的基础上增加40X10=400个字节的数据量;

如果用100个TCP段装载,那么至少在原数据量的基础上增加40X100=4000个字节的数据量;

如此一来,平白无故多了3600个字节的传输量,自然性能就严重下降了。

2.3TCP慢启动

TCP慢启动限制了每一个TCP端点在任意时刻可以传输的分组数,每成功接收一个分组,就会拥有发送另外两个分组的

权限,接收了两个分组,就会有发送另外四个分组的权限,以此类推。如果一个HTTP事务有大量数据要发送,必须要依

据以上的规则,此种方式被称为“打开拥塞窗口”。

由于这种特性,新连接的传输速度会比已经交换过一定数据量的“已调谐”的连接慢一点,因为后来的TCP连接单次能发送的分

组数比前者少,所以HTTP中有一些可以重用现存TCP连接(旧连接)的工具,这就是“持久连接”。

3.TCP性能提升解决方案

3.1Nagle算法

这个算法是为了解决2.2中TCP段多导致多出的标记和首部数据问题;

该算法鼓励发送全尺寸的TCP段(LAN上最大分组大约是1500字节,在因特网上是几百字节),只有当所有其他分组都被确认

之后,该算法才允许发送非全尺寸的分组;如果其他分组仍在传输,那就将数据缓存起来,只有当挂起分组被确认或者缓存中

积累了足够发送一个全尺寸分组的数据时,才会将缓存数据发送出去。

3.2

猜你喜欢

转载自www.cnblogs.com/eco-just/p/9375278.html
今日推荐