我可以在同一端口上与同一服务器建立超过 1 个 TCP 连接吗? 例如:
连接 1:机器 A 到机器 B 的端口 445
连接 2:机器 A 到机器 B 的端口 445
不终止先前建立的连接 1. 如果是,我需要做任何设置才能实现这种情况吗?
是的,可以。无需任何特殊设置。
这正是您开始使用 Internet Explorer 和 Mozilla Firefox 并使用两者导航到同一网站时发生的情况。
在连接到服务器的幕后,机器 A 使用任何端口号打开一个套接字,并尝试连接到机器 B 的端口 445。正在侦听端口 445 的机器 B 可以接受此传入连接,并使用另一个套接字使用任何端口号将其连接到的其他端口号。最后,在机器 A 的任意端口和机器 B 的任意端口之间建立了实际的 TCP 连接。在机器 B 上,端口 445 只用于监听(并且可以接受其他连接)。
是的,可以,TCP/IP 会话由以下 5 元组标识:
(src-ip, src-port, dst-ip, dst-port, protocol).
在您的情况下,5 个值中的 4 个必须相同:
src-ip (A), dst-ip (B), dst-port (445), protocol (tcp)
。因此,src-port
仍然给你一定程度的自由,通过改变它,你可以设置多个会话。这是默认情况下应该发生的情况,您的操作系统将为同一服务器的每个连接选择一个新的、唯一的源端口。
TCP/IP 通过临时端口 支持这一点。您连接到服务器端的固定端口,但客户端的端口通常由 TCP/IP 堆栈分配,然后通过 4 条信息定义该连接并与其他连接区分开来:客户端 IP 地址、客户端端口、服务器IP地址和服务器端口。