【问题标题】:how many tcp connection can be created可以创建多少个 tcp 连接
【发布时间】:2014-07-21 13:24:52
【问题描述】:

TCP 使用端口号来识别主机上的发送和接收应用程序端点,或 Internet 套接字。 TCP 连接的每一端都有一个关联的 16 位无符号端口号(0-65535) 由发送或接收应用程序保留

现在,如果我们想创建 tcp 连接并使其保持活动状态,我不能再继续了 65535

突破 65k 的最佳策略应该是什么?

添加多个接口可以增加创建更多连接的可能性是否有其他策略

【问题讨论】:

    标签: sockets tcp


    【解决方案1】:

    TCP 要求每个连接的元组(服务器 IP、服务器端口、客户端 IP、客户端端口)都不同。您可以更改其中任何一个以获得新的连接。不同的服务器 IP 可以,不同的客户端端口也可以。仅这两个端口范围就可以为您提供 2^16*2^16 ~ 40 亿个连接。

    【讨论】:

    • 如果你想一想,如果服务器只使用自己的端口,它一次只能处理 1 个连接,如果它只使用客户端端口,它只能处理 64K客户一次。但是流行的网络服务器一次处理的流量要多得多,因此它必须使用多个值的组合来识别每个连接,从而大大增加了限制。
    【解决方案2】:

    TCP 连接的每一端都有一个关联的 16 位无符号端口号 (0-65535),由发送或接收应用程序保留

    没有。 (1) 是 1-65535,而不是 0-65535。 (2) 客户端端口通常由操作系统而非应用程序保留。 (3) 没有“发送或接收应用程序”之类的东西。有客户端和服务器应用程序。

    如果我们想创建 tcp 连接并使其保持活动状态,我不能超过 65535

    再次没有。如果您想在客户端中创建连接,则不能为同一目标创建超过 65535 个如果您想在服务器中接受连接,您可以接受任意数量的连接,但须遵守先前的限制在每个客户端的客户端。

    突破 65k 的最佳策略应该是什么?

    65535 是 64k-1,而不是 65k,除了上述之外,实际上没有任何此类限制,实际上这不是任何类型的限制。您不需要 64k 客户端连接到同一个目标。

    【讨论】:

    • 嗨。就我而言,我需要将超过 65535 个客户端从单个终端连接到同一个目标。我该如何存档?
    【解决方案3】:

    仅仅因为端口号被限制为 64K 值并不意味着您被限制为最大 64K 连接。你可以连接到不同服务器上的同一个端口(想想你一次访问多少个网站,它们都监听端口 80 或 443),并且你可以将同一个本地端口重复用于多个连接,只要它们连接到不同的服务器。它是 [LocalIP:LocalPort]+[RemoteIP:RemotePort] 的组合,唯一标识了一个 TCP 连接,因此您可以灵活地调整这些值以允许更多连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2017-09-12
      • 2021-04-21
      • 2015-09-06
      • 2015-10-01
      • 2013-09-15
      • 1970-01-01
      相关资源
      最近更新 更多