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

Iva*_*ick 28 c sockets networking tcp

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

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

bind
listen (on port 28081)

while 1
  fd = accept
  fork
  if child process incoming data 
Run Code Online (Sandbox Code Playgroud)

And*_*ner 34

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

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

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