为什么创建新的 TCP 连接被认为是昂贵的?这是我脑子里闪过的问题,但另一个问题又浮现在我的脑海里。
保持 TCP 连接活动到底是什么意思以及通过连接池缓存连接是什么意思?(我确实理解线程池的概念,但与连接池的“连接”部分感到困惑)。
TCP 流量在到达目的地之前不是应该流经多个基于 Internet 的 IP(计算机和路由器等)吗?如果是这样,那么连接到底意味着什么?它是指为 TCP 流量建立一次的路径,而重新使用连接意味着重复使用相同的路径,直到该路径中的某些 IP 不再可用?
答案1
TCP 连接通过三次握手来初始化,其中连接的两端就它们发送的数据包所使用的序列号达成一致。
当三次握手完成后,连接处于ESTABLISHED状态,这意味着数据可以双向流动。
连接中的各个 TCP 段可以在发送方和接收方之间采用不同的路径。TCP 所关心的只是两端对连接状态的了解是否相同。
保持 TCP 连接处于活动状态意味着即使没有立即需要通过该连接传输任何数据,该连接仍保持为 ESTABLISHED 状态。Web 服务器使用连接池来管理这些与客户端的开放连接。
保持 TCP 连接打开的实际示例。网站访问者加载https://www.example.com。
- 浏览器打开 TCP 连接https://www.example.com端口 443。
- 浏览器与 Web 服务器进行 TLS 握手。
- 浏览器
GET /
向 Web 服务器发送请求,服务器返回响应页面。 - 浏览器与 Web 服务器保持 TCP 连接开放。
然后访问者浏览页面并点击https://www.example.com/example关联。
- 现在浏览器可以
GET /example
直接向 Web 服务器发送请求,重新使用现有的 TCP 连接和 TLS 传输。
如果 Web 服务器/客户端没有保持 TCP 连接打开,浏览器将不得不对第二个 HTTPS 请求重复步骤 1 和 2。