TCP连接打开后是否会移动到另一个端口?

如果TCP套接字服务器在端口28081上侦听传入连接,然后接受连接并开始接收数据。 数据进入的端口是28081还是端口被更改。

例如,下面的伪代码中传入数据的端口是什么? 它仍然是28081还是操作系统分配了一个新端口?:

bind listen (on port 28081) while 1 fd = accept fork if child process incoming data 

TCP连接由两个(IP address, TCP port)元组唯一标识(每个端点一个)。 因此,根据定义,不能移动连接的端口或IP地址,只能打开另一个端口或IP地址。

如果服务器绑定到端口28081,则所有接受的连接都将在服务器端具有此端口(尽管它们很可能在客户端具有不同的端口号)。

例如,如果来自同一客户端计算机的两个进程将连接到同一服务器,则两个连接的服务器端的IP addressTCP port将相同。 然而,在客户端,它们将具有两个不同的端口号,允许双方的操作系统唯一地识别应该将所接收的TCP分组分配给哪个进程和文件描述符。

是的,它保留在该端口上,但某些协议(FTP)可能会在另一个端口上打开第二个连接。 不要将端口视为物理路径或插头,就像USB端口只能插入一个东西。 而是将其视为所请求服务的标识符。

但是,通常会将新的套接字连接传递给另一个处理该特定连接的读/写的线程。

可以有多个客户端连接到一个端口,因为连接由服务器和客户端IP地址和端口标识。 因此,接受来自一个客户端的连接不会阻止其他客户端连接。 您甚至可以从同一客户端连接另一个时间(使用另一个客户端端口)。