1,握手延迟.
每次建立一个HTTP请求 都需要重新建立一个TCP的连接通道,建立TCP链接通道是需要代价的 .三次握手.
并且服务端和客户端之间维护多个TCP连接需要一定的资源消耗.
2,分组确认(窗口滑动概念.)
TCP数据包在网络上传输是不可靠的,这样的情况下TCP有自己的传输保证机制.滑动窗口确认.
在服务端和客户端都会维护一个滑动窗口,当数据包发送后对方确认的时候会回传一个小的确认包.当收到确认包之后才会继续发送新的数据.并且滑动窗口向前滑动.
用于确认的包很小.所以由正常的数据包捎带完成确认.但是HTTP的特征使得确认包找不到一个能够搭载的数据帧,出现等待情况.数据包得不到确认.导致数据不能够及时完成传输.窗口不会出现滑动.
3,TCP慢启动问题
为防止网络拥塞.TCP链接在建立之后想要传输数据.需要实现
发送一个包,确认了一个包才能发两个包,确认了两个包,才能发四个包以此类推.
是为了防止出现网络拥塞,控制流量来设计的.
4,Nagle算法. TCP_NODELAY
全尺寸包先发.非全尺寸包最后发.
针对HTTP的应用场景这个策略并不适用.
是为了预防.**发送端傻窗口综合征** 来设计的.