【发布时间】:2014-07-21 13:24:52
【问题描述】:
TCP 使用端口号来识别主机上的发送和接收应用程序端点,或 Internet 套接字。 TCP 连接的每一端都有一个关联的 16 位无符号端口号(0-65535) 由发送或接收应用程序保留
现在,如果我们想创建 tcp 连接并使其保持活动状态,我不能再继续了 65535
突破 65k 的最佳策略应该是什么?
添加多个接口可以增加创建更多连接的可能性是否有其他策略
【问题讨论】:
TCP 使用端口号来识别主机上的发送和接收应用程序端点,或 Internet 套接字。 TCP 连接的每一端都有一个关联的 16 位无符号端口号(0-65535) 由发送或接收应用程序保留
现在,如果我们想创建 tcp 连接并使其保持活动状态,我不能再继续了 65535
突破 65k 的最佳策略应该是什么?
添加多个接口可以增加创建更多连接的可能性是否有其他策略
【问题讨论】:
TCP 要求每个连接的元组(服务器 IP、服务器端口、客户端 IP、客户端端口)都不同。您可以更改其中任何一个以获得新的连接。不同的服务器 IP 可以,不同的客户端端口也可以。仅这两个端口范围就可以为您提供 2^16*2^16 ~ 40 亿个连接。
【讨论】:
TCP 连接的每一端都有一个关联的 16 位无符号端口号 (0-65535),由发送或接收应用程序保留
没有。 (1) 是 1-65535,而不是 0-65535。 (2) 客户端端口通常由操作系统而非应用程序保留。 (3) 没有“发送或接收应用程序”之类的东西。有客户端和服务器应用程序。
如果我们想创建 tcp 连接并使其保持活动状态,我不能超过 65535
再次没有。如果您想在客户端中创建连接,则不能为同一目标创建超过 65535 个。如果您想在服务器中接受连接,您可以接受任意数量的连接,但须遵守先前的限制在每个客户端的客户端。
突破 65k 的最佳策略应该是什么?
65535 是 64k-1,而不是 65k,除了上述之外,实际上没有任何此类限制,实际上这不是任何类型的限制。您不需要 64k 客户端连接到同一个目标。
【讨论】:
仅仅因为端口号被限制为 64K 值并不意味着您被限制为最大 64K 连接。你可以连接到不同服务器上的同一个端口(想想你一次访问多少个网站,它们都监听端口 80 或 443),并且你可以将同一个本地端口重复用于多个连接,只要它们连接到不同的服务器。它是 [LocalIP:LocalPort]+[RemoteIP:RemotePort] 的组合,唯一标识了一个 TCP 连接,因此您可以灵活地调整这些值以允许更多连接。
【讨论】: