如何在物理层级别保持打开连接

时间:2018-02-20 13:01:37

标签: sockets http networking

我很难理解持久连接的概念。

如果我们以使用keep-alive头的Http协议为例,在tcp / ip执行握手以及必要的验证之后,连接将保持活动状态x ms,允许用户使用相同的连接/端口。持久连接的影响对我来说很清楚,至少在这种理解水平上,开销会降低。

  • 然而,我似乎无法理解的是这种联系是怎样的 在物理层面保持活力。它是逻辑还是物理层面以及如何?
  • 如果是逻辑级别,则要发送的消息已经存在 包含来自执行握手的信息的标题 和验证,所以它将跳过查找涉及的步骤 目标物理地址和其他路由器相关的操作 包括http握手等包?
  • 当连接处于活动状态时,是否会有任何控制(ping)消息 在源和目的地之间发送,看看它们是否仍在那里?

此致

1 个答案:

答案 0 :(得分:1)

物理层并不知道任何"开放连接"。它仅适用于位或数据包,只是将位从链路的一端传输到另一端。

逻辑连接只能在堆栈中高得多,其中TCP(或类似协议)使用较低层来模拟分组交换网络中真正不存在的连接。

在单个逻辑连接中,可以使用完全不同的路径=物理路径,而传输层甚至不会注意到。

传输层协议(或应用程序层协议)是否使用某种保持活动完全取决于协议。大多数情况下,如果连接在一段时间内没有传输(超时),则会关闭连接,因此您不会得到一堆僵尸套接字。