我想知道服务器应用程序是否总是在同一个端口上应答?我在某处读过,为了继续监听“监听”端口,服务器将使用不同的端口。有人可以向我提供更多细节吗? 谢谢!
答案 0 :(得分:3)
作为TCP握手过程的一部分,在另一个端口上建立通信信道。源和目标“端口”号对应于TCP数据包标头中的16位字段。建立通道后,通信将在该端口上进行,并在标头上的字段中显示相应的源和目标端口值。
初始连接到服务器上的侦听端口;在此之后,该进程在分配的新端口上建立TCP连接,并在这些端口上进行进一步的通信。
答案 1 :(得分:2)
如果您与特定端口上的服务器建立TCP连接,则该TCP连接将继续使用服务器端的相同端口。
在一侧的(address1, port1)
对与另一侧的(address2, port2)
对之间建立TCP连接 - 所有这四个值在TCP连接的生命周期内都是固定的。
这不会阻止服务器在接受连接后侦听端口 - 因为它可以区分已建立连接的任何数据包和基于(address, port)
对使用的新连接。客户端。
例如,来自Oracle服务器的此netstat
输出显示它正在侦听端口1521,以及几个已建立的连接也使用该端口:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:1521 127.0.0.1:32776 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:32798 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:32823 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:32822 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:32821 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:32820 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:32819 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:32818 ESTABLISHED
tcp 0 0 127.0.0.1:1521 127.0.0.1:30536 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:36969 ESTABLISHED
tcp 0 0 127.0.0.1:32776 127.0.0.1:1521 ESTABLISHED
tcp 0 0 127.0.0.1:30536 127.0.0.1:1521 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:37786 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:37035 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:37034 ESTABLISHED
tcp 0 0 192.168.9.126:1521 192.168.9.124:33018 ESTABLISHED