TCP的构成

Posted by liveipool on March 16, 2017

以下为《web性能权威指南》上的一些总结:

TCP的构成

  • IP(Internet Protocol,因特网协议):负责联网主机之间的路由选择和寻址。
  • TCP(Transmission Control Protocol):负责在不可靠的传输信道之上提供可靠的抽象层。
  • TCP/IP也常被称为“因特网协议套件”。
  • RFC(Request For Comments):一系列以编号排定的文件,用于收集有关互联网的相关信息。

三次握手

  • 所有TCP连接一开始都要经过三次握手:在客户机和服务器之间建立正常的TCP网络连接时,客户机先发出一个SYN,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。
  • ACK(Acknowledge):确认字符,在数据通信中,接收站发给发送站的一种传输控制字符。表示发来的数据已确认接收无误。
  • SYN:synchronous

2.1.png
2.2.png

三次握手带来的延迟使得每创建一个新TCP连接都要付出很大代价。而这也决定了想要提高TCP应用性能的关键,在于想办法重用连接。
TFO(TCP Fast Open):google的一个rfc,是对tcp的一个增强,简而言之就是在3次握手的时候也用来交换数据。
2.3.png

拥塞预防及控制

流量控制

流量控制是一种预防发送端过多向接收端发送数据的机制,TCP连接的每一方都要通告自己的接收窗口(rwnd)
第一次建立连接时,两端都会使用自身系统的默认设置来发送rwnd。浏览网页通常主要是从服务器向客户端下载数据,因此客户端窗口可能成为瓶颈。然而,如果是在上传图片或视频,服务器的接收窗口又可能成为制约因素。
2.4.png

慢启动

慢启动比较重要,书上的例子也讲的可以,我把重要的内容都放上来:
2.5.png
2.6.png
2.7.png
2.8.png
2.9.png
2.10.png
2.11.png
2.12.png
2.13.png
2.14.png
2.15.png
2.16.png
2.17.png

带宽延迟积

2.18.png

TCP是一个自适应的、对所有网络节点一视同仁的、最大限制利用底层网络的协议。因此,优化TCP的最佳途径就是调整它感知当前网络状况的方式,根据它之上或之下的抽象层的类型和需求来改变它的行为。
TCP的复杂性不言而喻,以上为《web性能权威指南》提到的一部分内容。