这可能是一个愚蠢的问题,但我和几个小伙伴一直在讨论 TCP 的潜在局限性。我们有一个应用程序将侦听客户端(想想网关)并通过单个连接的 kafka 发布者将所有连接的客户端数据路由到一个主题。
我的一个朋友说 TCP 将成为这个网关的一个问题,因为它会为它发送的每条消息建立一个新连接(不是 kafka,而是底层传输协议本身的问题),每次都需要一个新端口。以我们发送这些客户端消息的速度(千兆字节),kafka 将用完要读取的端口??
我已经做了几年的开发,之前从未听说过这个,并且想对 TCP 的工作方式有一个较低层次的理解(我认为我已经理解了)。我的理解是,当您建立 TCP 连接时,该连接将保持打开状态,直到它被应用程序超时或被服务器或客户端强行关闭。通过此连接发送的数据是一个流,无论 3 V(音量、速度、种类)如何,都不会打开/关闭新连接。
就端口而言,一个端口用于广播,内部文件描述符端口是应用程序管理的用于读取/写入单个客户端的端口。我从来没有理解 TCP 为它写入的每个数据包建立新的连接。
如果这个问题不直接或太模糊,我提前道歉。我真的很困惑,希望有人可以为我的同事所说的话提供更多背景信息?