如何保持与单个端口的多个连接


1

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

我仍然有几个问题:

  • 一旦与另一个程序建立连接,数据包是否需要除连接标识号以外的任何其他标头数据?

  • 通过连接后,例如端口80;数据是否仍然通过该端口,或者建立的connection-id指定了一个新的开放端口用于进一步的通信?

  • 与...对应 我的问题在这里 ;不同连接之间是否存在实际的物理隔离?还是纯粹的理论/虚拟?

Answers:


4

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

谈到端口80建议通过TCP和IP的HTTP协议。使用TCP / IP,中间节点(路由器)不需要跟踪“连接ID”。动态维护的IP地址范围的路由表用于转发分组。连续分组不必遵循相同的路径。

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

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

一旦与另一个程序建立连接,数据包是否需要除连接标识号以外的任何其他标头数据?

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

通过连接后,例如端口80;数据是否仍然通过该端口,

是。

或者建立了connection-id指定了一个新的开放端口用于进一步的通信?

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

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

通常不是。服务器可以有多个NIC服务于不同的客户端组。

还是纯粹的理论/虚拟?

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


确定连接路径建立的协议是什么?维基百科的“数据包交换”文章指出,“在面向连接的数据包交换中,连接是在每个相关节点中定义和预分配的。数据包包括连接标识符而不是地址信息,并按顺序传送。”那么什么协议或类型的程序会建立这种连接?
Griffin

1
@Griffin: 自动取款机 建立“虚拟电路”。 ISDN 建立数字电路, 帧中继 使用永久或交换虚拟电路。这些都与互联网服务的最终用户无关。 IP可以通过这些其他协议进行传输,但很大程度上无视它们。
RedGrittyBrick

0

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

这段真的 扑朔迷离 。首先,您指的是打开网络层。然后,您将引用在传输层上建立的连接。然后你以某种方式将它们组合在一起,尽管它们实际上是不同的层。考虑到电路交换可能只是一个想法,过去可能会或可能不会使用。但是,一旦你提到端口,你指的是根本不使用电路交换的TCP / IP ......

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

您指的是与程序的连接,使用TCP / IP端口。在这种情况下,没有连接id附加到数据包。在电路切换的情况下,这是必要的。

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

一切都通过相同的电缆,所以它可以被认为是虚拟的而不是物理的。

已建立的联系只是说“我将在此地址上通过此帖子进行沟通”的一种方式。是的,连接只是一个IP地址和端口对......


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.