TCP 连接/会话和端口

TCP 连接/会话和端口

我有一些关于端口和会话的基本问题。由于这些都是相关且简单的问题,因此我将它们放在一起询问:

  1. 我理解,要创建连接,我们需要在客户端和服务器上都使用套接字 (ip+port)。因此,如果建立了一个连接,那么这些端口将不会用于其他连接,对吗?但是 HTTP(80) 或 SSH(22) 允许多个客户端访问该端口。怎么做?

  2. 我读到一台机器上可用的端口数量是有限制的(约 65536 个)。那么如果我们需要的端口数量超过这个限制(例如,拥有大量客户端的 Facebook 或 Gmail),服务器需要做什么呢?

  3. 我可以读懂在创建 TCP 会话之前如何进行握手,但我不确定它如何维护连接。例如,如果我拔掉以太网电缆,我的服务器如何知道客户端丢失了此连接?在 TCP 连接中,客户端和服务器之间是否有任何池机制以一定的间隔执行?

答案1

  1. 服务器不会仅使用自己的端口和 IP 来跟踪“连接”,还会使用客户端的端口和 IP。因此,虽然两个客户端可能连接到服务器上的同一目标 IP 和端口,但客户端来自不同的源 IP/端口组合,服务器会利用这一点将它们分开。

  2. 正如我在第一个答案中提到的那样,多个连接不需要使用服务器端的多个端口来建立“连接”(参见答案 1),因此,唯一会耗尽空间的情况是,如果你托管了 65536不同的程序1同时在服务器上,所有人都需要同时进行互联网连接。

  3. 建立连接的软件可以设置“超时”,因此如果连接中断(如拔出电源插头的示例中所示),在预设的时间后,如果软件没有从另一端收到新的数据包,则程序假定另一端丢失了连接并关闭其自己的连接端。

为了进一步了解 TCP 的工作原理,我强烈推荐立即安全!关于互联网运作方式的剧集

您可能还想听听听众的反馈,因为它们澄清了人们所写的内容以及他们希望得到更多解释的内容。


1:来自同一程序的多个连接可以使用相同的端口,只要连接的另一端具有不同的 IP/端口组合

相关内容