首页 文章

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

提问于
浏览
27

这个问题在这里已有答案:

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

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

bind
listen (on port 28081)

while 1
  fd = accept
  fork
  if child process incoming data

3 回答

  • 4

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

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

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

  • 1

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

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

  • 34

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

相关问题