如何维护单个端口的多个连接

如何维护单个端口的多个连接

在阅读了有关分组和电路交换的内容后,我了解到服务器通过将已建立的客户端连接传递给子进程来维护与端口的多个连接;并且连接路由中涉及的所有节点都维护一个连接 ID 表,以便数据包可以正确地转发到下一个节点。

但我对此仍有几个疑问:

  • 一旦与另一个程序建立连接,数据包是否需要除连接 ID 号之外的更多标头数据?

  • 建立连接后,比如说通过端口 80,数据是否仍通过该端口传输,或者建立的连接 ID 是否指定了一个新的开放端口以用于进一步的通信?

  • 与…通信我的问题; 不同连接之间是否存在实际的物理隔离?还是纯粹是理论/虚拟的?

答案1

您似乎将电路交换思想与 TCP/IP 混淆了。

端口 80 的讨论表明 HTTP 协议优于 TCP 和 IP。使用 TCP/IP,中间节点(路由器)无需跟踪“连接 ID”。动态维护的 IP 地址范围路由表用于转发数据包。连续数据包不必遵循相同的路径。

服务器使用客户端 IP 地址和 TCP 端口号以及服务器的端口号(和服务器 IP 地址,服务器可以有多个 IP 地址)来跟踪 TCP 连接。连接由这四条信息的组合来标识。客户端端口号通常由客户端伪随机选择。

注意UDP是无连接的,没有UDP连接的概念。许多Internet应用层协议都使用UDP作为传输层协议。

一旦与另一个程序建立连接,数据包是否需要除连接 ID 号之外的更多标头数据?

TCP/IP 数据包中的 TCP 标头和 IP 标头不包含“连接 ID”。

通过端口 80 建立连接后,数据是否仍通过该端口传输?

是的。

或者建立的连接 ID 是否指定了新的开放端口以用于进一步的通信?

正如我上面所说,TCP/IP 中不存在连接 ID。有时,更高级别的协议会在其他端口上建立通信(例如 FTP 的控制和数据端口)。

与我在此处的问题相对应;不同的连接之间是否存在实际的物理分离?

通常不会。一台服务器可以有多个 NIC,为不同的客户端组提供服务。

或者它纯粹是理论/虚拟的?

端口号等只是数据包头中的数字。

答案2

在阅读了有关分组和电路交换的内容后,我了解到服务器通过将已建立的客户端连接传递给子进程来维护与端口的多个连接;并且连接路由中涉及的所有节点都维护一个连接 ID 表,以便数据包可以正确地转发到下一个节点。

这段话确实令人困惑。首先,您指的是网络层上的交换。然后,您指的是传输层上的连接。然后,您以某种方式将它们组合在一起,尽管它们实际上是不同的层。请考虑一下,电路交换可能只是一个想法,过去可能使用过,也可能没有使用过。但是,一旦您提到端口,您指的是根本不使用电路交换的 TCP/IP...

一旦与另一个程序建立连接,数据包是否需要除连接 ID 号之外的任何其他标头数据?通过端口 80 建立连接后,数据是否仍通过该端口传输,或者建立的连接 ID 是否指定了新的开放端口以用于进一步通信?

您指的是与程序的连接,将使用 TCP/IP 端口。在这种情况下,数据包中没有附加连接 ID。如果是电路交换,则需要这样做。

不同连接之间是否存在实际的物理隔离?还是纯粹是理论上/虚拟的?

所有东西都通过同一根电缆传输,因此可以认为是虚拟的而不是物理的。

建立连接只是一种表示“我将通过此地址在此帖子上进行通信”的方式。是的,连接只是 IP 地址和端口对...


不要仅仅使用维基百科来了解这一点,尝试深入研究一本关于计算机网络的书籍......

相关内容